Boas Práticas
Escrita de Casos de Teste
1. Um objetivo por caso de teste
Cada caso de teste deve validar uma coisa específica.
markdown
<!-- Ruim -->
### CT001 - Testar login e cadastro
...
<!-- Bom -->
### CT001 - Login com credenciais válidas
### CT002 - Cadastro de novo usuário2. Independência entre casos
Casos de teste não devem depender de outros para funcionar.
3. Dados explícitos
Use dados concretos, não descrições genéricas.
markdown
<!-- Ruim -->
| 1 | Preencher com email válido | Campo aceita |
<!-- Bom -->
| 1 | Preencher email com `user@test.com` | Campo aceita |4. Resultados observáveis
O resultado esperado deve ser algo que você pode ver/verificar.
markdown
<!-- Ruim -->
| Resultado | Sistema processa corretamente |
<!-- Bom -->
| Resultado | Mensagem "Sucesso" exibida e redirecionamento para /dashboard |Automação
1. Use data-testid
Seletores baseados em data-testid são mais estáveis.
html
<button data-testid="login-button">Entrar</button>typescript
cy.get('[data-testid="login-button"]').click()2. Evite seletores frágeis
typescript
// Ruim - quebra com mudanças de estilo
cy.get('.btn.btn-primary.large')
// Ruim - quebra com mudanças de texto
cy.contains('Clique aqui para entrar')
// Bom - estável
cy.get('[data-testid="login-button"]')3. Esperas explícitas
typescript
// Ruim - tempo fixo
cy.wait(5000)
// Bom - espera por condição
cy.get('[data-testid="dashboard"]').should('be.visible')4. Isole os testes
typescript
beforeEach(() => {
// Limpe estado entre testes
cy.clearCookies()
cy.clearLocalStorage()
})Documentação
1. Mantenha atualizada
Documentação desatualizada é pior que nenhuma documentação.
2. Documente o "porquê"
Não apenas os passos, mas por que aquele teste é importante.
3. Use tags consistentes
Tags ajudam na busca e na integração com IA.
4. Inclua informações de automação
Seletores, APIs e exemplos de código economizam tempo.
Organização
1. Uma funcionalidade por roteiro
Agrupe casos relacionados, mas não misture funcionalidades diferentes.
2. Priorize smoke tests
Identifique os testes críticos que devem rodar em todo deploy.
3. Revise periodicamente
Agende revisões para remover testes obsoletos e adicionar novos cenários.
Code Review para Testes
Checklist
- [ ] Caso de teste tem objetivo claro
- [ ] Passos são reproduzíveis
- [ ] Dados de teste estão explícitos
- [ ] Seletores são estáveis (data-testid)
- [ ] Resultado esperado é verificável
- [ ] Frontmatter está completo
- [ ] Tags são relevantes