Anti-patterns e Anomalias em TestesGustavo Alves, 06/out/2007
Motivação
• Existe grande possibilidade de injeção de falhas humanas no processo de desenvolvimento de software
• O processo de testes faz parte da garantia de qualidade de software (SQA)
• Os custos associados às falhas de software justificam um processo de testes cuidadoso e bem planejado
O que são Design Patterns?• O que são design patterns?
– Soluções padrão de um problema recorrente• Exemplo
– Client-Dispatcher-Server
RecepcionistaFornecedorCliente
Cliente
Problema: O cliente precisa saber os telefones específicos de seus fornecedores.
Design Pattern: O cliente sabe apenas o número da empresa. A recepcionista direciona a chamada para a pessoa certa.
Fornecedor
O que são Anti-patterns?• O que são anti-patterns?
– Práticas que inicialmente parecem ser benéficas, mas que trazem mais problemas que benefícios.
• Exemplo– A Bala de Prata
• Erro: assumir que sua metodologia (ou ferramenta, linguagem, paradigma etc.) favorita consegue resolver qualquer problema.
• Solução: sempre analisar racionalmente se sua solução técnica preferida realmente é adequada ao problema.
E anomalias?Soluções incorretas, ad-hoc,sem base formalEventualmente, casos bizarros
ExemploEm um formulário de casos de testes, dados de entrada e dados de saída são colocados no mesmo campo. A diferenciação é feita pelo tamanho da fonte. Dados de saída tem tamanho 7 e dados de entrada, tamanho 8.
O que são Anomalias?
Anti-patterns em Testes
Escopo Tentacular(Scope Creep)
• Escopo vai crescendo aos poucos durante o desenvolvimento do projeto
• Casos de testes não podem ser antecipados• Casos patológicos: requisitos mudam durante a execução dos
testes• Deve-se disciplinar o crescimento do escopo com desenvolvimento
iterativo e incremental.
Dá para fazer
só mais isso?
Dá para fazer
só mais isso?
Anti-patterns em TestesDeus Deadline
• Deadline é intocável• Implantação na data a qualquer custo
– Defeitos críticos e severos têm criticidade reduzida para médio– Tapar o sol com a peneira é a única saída?
• Por outro lado, quanto custa um bug em produção?• Quanto custa a manutenção de um sistema feito sob pressão
(arquitetura frágil, código mal documentado, gambiarras etc.)?
Amanhã!
Amanhã!
Anti-patterns em TestesSer ou Não Ser
• Equipe de Testes quasi-independente(abaixo da TI)• Pressão para entregar (Deus Deadline)impacta os testadores psicologicamente• Testadores sofrem pressão para implantar o sistema• Encontrar defeitos e fazer o controle de qualidade não são
prioritários• Testadores enxergam o trabalho como um desenvolvedor (“entregar
o sistema” é mais importante que “encontrar os defeitos”)– “Bom” testador é o que entrega o sistema no prazo da
implantação – “Bom” testador é o que não descobre defeitos, pois atrasam a
entrega
Eu testador
Eu testador
Eu programad
or
Eu programad
or
Velocidade Máxima
• Não há ciclos!
• Sempre vale a pena continuar a execução dos testes após encontrar um defeito?
Anti-patterns em Testes
Tempo
Versão 1.0Versão 1.0
Equipe de DesenvolvimentoEquipe de Desenvolvimento
Equipe de TestesEquipe de Testes
CT1 CT2 CT3
DefeitoDefeito
CT4 CT5
Versão 1.1Versão 1.1
? CT3 CT4 CT5 CT6CT6 CT7...
Anti-patterns em Testes
Tempo
Me Engana Que Eu Gosto IPrazo, Chicote e Stress
(ou Sangue, Suor e Lágrimas)
- Patrocinador: Quanto tempo leva para finalizar o projeto?- Analista: 8 meses- Patrocinador: Impossível! Se a equipe trabalhar duro, entregamos em 4
meses.• Patrocinador sabe que não vai ser entregue em 4 meses• A entrega será em 6 meses (como Patrocinador de fato esperava,
mas não queria admitir)• Porém, a qualidade do produto e de vida dos funcionários fica
comprometida• Violência é um remédio difícil de dosar
– O deadline não deve antecipar mais que 20% do estimado
Anti-patterns em TestesMe Engana Que Eu Gosto II
O Otimista
• Basta testar o caminho feliz• Não temos tempo para testar tudo mesmo (ver Deus Deadline)• Se o sistema passar nos Testes (apenas caminho feliz), está
pronto para ser implantado• Não vai haver erro na produção!• Implantar o sistema é sempre mais importante que qualidade!
• Porém, qual o prejuízo financeiro, de imagem etc. que um sistema defeituoso causa?
Anti-patterns em Testes Me Engana Que Eu Gosto III
Independência ou Morte
• Mito: terceirizar testes é suficiente• O desenvolvedor, na qualidade de cliente, interfere demais na
Fábrica de Teste terceirizada– Pede-se (manda-se?) testar apenas Fluxos Principais– Tira a independência dos testes– Elimina o senso crítico do testador e seu talento para encontrar
defeitos– Não melhora a qualidade do sistema. O controle de qualidade
continua com os mesmo vícios de antes.
Anti-patterns em TestesHerói Local
• Sistema testado em ambiente de teste muito diferente da produção• Resultado: o sistema passa apenas nos testes, mas não funciona em
nenhum outro lugar• Variação: execução de testes que são dependentes de ambiente. Se
o ambiente de teste for diferente da produção, o sistema pode não funcionar após a implantação
• Custa mais, investir num ambiente de teste like production ou encontrar erros em produção?
Deixe para Amanhã o Que Pode Fazer Hoje
Anti-patterns em Testes
Requisitos
Análise &
Projeto
Implementação
Elaborar casos de
testes
Preparar ambiente
Executar testes
Abrir defeitos
Requisitos
Análise &
Projeto
Implementação
Elaborar casos de
testes
Preparar ambiente
Executar testes Abrir defeitos
Anti-patterns em TestesTestador Especialista
• Testador é especialista no sistema– Elabora os cenários, casos de testes– Executa os próprios casos de testes
• Testador tende a não documentar os procedimentos do caso de teste testador simplesmente executa o teste– Similar ao programador que codifica sem levantar requisitos e
fazer análise
• Com a falta de documentação NÃO pode-se alocar a equipe a diferentes sistemas
• Solução: arquitetos de testes elaboram os cenários e casos de testes. Testadores com conhecimento superficial em todos os sistemas executam.
• Solução adequada para grandes equipes de testes.
Déjà vu
• “Eu já vi este bug antes!”• Tanto a equipe de testes, quanto o desenvolvimento devem
versionar– Executáveis– Casos de Testes– Requisitos, etc.
• Sem este controle, é comum– Testar uma versão desatualizada– Implantar uma versão desatualizada (aqui ocorre o déjà vu do
defeito)– Testar baseado em requisitos desatualizados
Anomalia em TestesDe
novo?De
novo?
Cabeça de Programador
• Desenvolvedor elabora os cenários detestes• Equipe de Testes detalha os passos e executa o teste• Uma das grandes vantagens de ter uma equipe de testes
independente é utilizar a perspectiva de testador (caçador de defeitos) ao invés da perspectiva do desenvolvedor (psicologia do teste)
Anomalia em Testes Eu explico
Eu explico
Anomalia em TestesEnganando o processo!
• O Testador executa os casos de teste e depois documenta os passos.
• O Testador encontra um Bug, mas não consegue reproduzi-lo!
• Esta anomalia acontece mais com testes de roteiros!
Execução dos TestesExecução dos Testes Criação dos Casos de Testes
Criação dos Casos de TestesErradoErrado
Dúvidas?
Recommended