Skip to content

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ário

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

Documentação de Testes