O que vou aprender ao final desse post?
Abordagem para avaliar a qualidade dos seus testes automatizados de interface.
O post de hoje aborda a proposta apresentada por Dave Haffner para avaliar a qualidade de seus testes automatizados de interface. O vídeo é excelente e nele Haeffner divide sua proposta para avaliar a qualidade dos testes em 3 etapas:
– Estrutura dos código de testes;
– aplicação do padrão page objects; e
– utilização dos locators.
Para facilitar o entendimento e aplicação iremos dividir em 3 posts. Nesse primeiro momento, abordaremos apenas a proposta para análise da estrutura do código de testes.
Haffner aborda inicialmente alguns indícios que ajudam a separar testes ruins de testes bons.
Indicativos de um teste RUIM:
- Falha sem um bom motivo
- Facilmente impactado por mudanças no software
- Lento
- Pouco confiável
- Difícil de compreender e manter
Indicativos de um teste BOM:
- Escrito para utilizar um framework existente (ex.: BDD ou xUnit)
- Valida um único aspecto (atomico)
- Pode ser executado isoladamente (autônomo)
- Qualquer um pode compreender seu objetivo e estrutura
- Testes similares agrupados (Estrutura de pastas e testes orgânica e fácil de compreender)
- Inicialização(setup) e Encerramento(teardown) dos testes centralizados
- Aplica o padrão page objects
Pontuação dos testes:
*Cada teste inicia com 100 pontos, a partir daí deduzimos os pontos de acordo com a tabela abaixo:
Item |
Pertence aos testes? |
Pontuação |
Comandos selenium |
Não |
– 3 cada (max. -9) |
Locators | Não | -2 cada (max. -8) |
Selenium setup e teardown | Não | -20 |
Uso de Sleep | Não | -5 cada (max. -20) |
Esperas implícitas | Não | -10 |
Esperas explícitas | Não | -3 |
Estruturas condicionais | Não | -5 cada (max. -20) |
Chamadas a estruturas page objects | Sim | N:A |
Verificações (Assertion(s)) | Sim | N:A |
O código de testes, exibido abaixo, exemplifica alguns dos problemas mencionados:
Ficou interessado? No vídeo Haffner explica os motivos referentes a cada um dos elementos considerados importantes na análise. Concordar ou discordar com a proposta é irrelevante, o que importa é a reflexão em busca de formas de melhorar continuamente seus testes.
No próximo post trataremos da segunda parte do vídeo, que aborda a utilização do padrão page objects.