21

Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

Embed Size (px)

Citation preview

Page 1: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007
Page 2: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

Anti-patterns e Anomalias em TestesGustavo Alves, 06/out/2007

Page 3: Anti-patterns e Anomalias em Testes Gustavo 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

Page 4: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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

Page 5: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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.

Page 6: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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?

Page 7: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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?

Page 8: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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ã!

Page 9: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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

Page 10: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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...

Page 11: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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

Page 12: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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?

Page 13: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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.

Page 14: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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?

Page 15: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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

Page 16: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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.

Page 17: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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?

Page 18: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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

Page 19: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

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

Page 20: Anti-patterns e Anomalias em Testes Gustavo Alves, 06/out/2007

Dúvidas?