Are my Tests Good Enough? Extra Criteria

Are my Tests Good Enough? Extra Criteria

A Pirâmide de Testes e Suas Implicações

Estrutura da Pirâmide de Testes

  • A pirâmide de testes é uma abordagem que analisa a distribuição entre diferentes tipos de testes, com ênfase na quantidade e tipo.
  • Na base da pirâmide, estão os testes unitários, seguidos pelos testes de integração e, no topo, os testes da interface gráfica (GUI).
  • Empresas que adotam esse modelo priorizam um maior número de testes unitários devido ao seu baixo custo e alta eficácia na localização de defeitos.

Vantagens dos Testes Unitários

  • Os testes unitários são mais baratos para criar e executar, proporcionando feedback rápido aos desenvolvedores.
  • Em contraste, os testes GUI tendem a ser mais lentos e menos eficazes em identificar problemas rapidamente.

Diversidade nas Suítes de Teste

  • É comum ter múltiplas suítes de teste em um projeto, cada uma com características específicas adaptadas às necessidades do desenvolvimento.
  • Testes mais simples podem ser executados frequentemente antes das contribuições ao código, enquanto suítes mais complexas podem ser usadas após integrações significativas.

Propriedades dos Testes Eficazes

  • As propriedades dos testes são fundamentais para garantir sua qualidade; se a maioria dos testes possui boas características, a suíte como um todo é considerada boa.
  • Um teste deve ser sensível ao comportamento do sistema; falhas devem ser reportadas quando o comportamento esperado não é atendido.

Características Importantes dos Testes

  • Os testes devem focar no comportamento do sistema em vez da estrutura interna do código. Mudanças estruturais não devem afetar a validade dos testes.
  • A legibilidade e rapidez na execução são essenciais para fornecer feedback ágil aos desenvolvedores.
  • Os testes precisam ser determinísticos; eles não devem apresentar resultados inconsistentes entre execuções.

Isolamento e Independência nos Testes

  • Cada teste deve operar independentemente; isso permite flexibilidade na execução e combinação dos mesmos conforme necessário.
  • Um bom teste deve limpar qualquer "lixo" gerado durante sua execução para evitar interferências em outros testes subsequentes.

Identificação Clara de Problemas

  • Os testes devem ajudar a localizar defeitos específicos no código. Se um teste falha localmente, espera-se que também falhe em produção.
Playlists: Testing+