How to Design Tests? Weakening the pre-condition!

How to Design Tests? Weakening the pre-condition!

A Importância da Implementação de Testes

Distinção entre Tipos de Testes

  • É fundamental entender como criar testes e a necessidade por trás deles, começando pela distinção entre escrever testes corretamente e a implementação cuidadosa.
  • A priorização dos testes é crucial; devemos identificar quais são os mais importantes para focar.

Fontes para Criação de Testes

  • Os testadores escrevem testes com base em especificações e também em relatos de bugs, que surgem quando usuários encontram falhas no sistema.
  • As principais fontes para a criação de testes incluem requisitos, relatórios de bugs e análise do código, onde o testador deve priorizar as informações relevantes.

Priorização na Escrita de Testes

  • O testador deve investir tempo nas funcionalidades que, se não funcionarem corretamente, causarão maiores reclamações ou perdas significativas.
  • Funcionalidades complexas devem ser priorizadas nos testes devido à dificuldade em entender sua implementação correta.

Princípios na Criação de Testes

  • Um princípio importante é enfraquecer as pré-condições dos testes para garantir que eles sejam executados em diversos estados diferentes do sistema.
  • Quanto mais variados forem os estados iniciais e argumentos utilizados nos testes, maior será a garantia da eficácia da suíte de teste.

Estratégias para Casos Limítrofes

  • Realizar testes com entradas representativas é essencial; isso inclui testar casos limítrofes como arrays vazios ou cheios.

Como Testar a Média Final do Aluno?

Estratégias de Teste para Cálculo de Média

  • A garantia de que o aluno não será reprovado é baseada em situações limítrofes, onde se testam diferentes combinações de conceitos que representam a média final do aluno.
  • O objetivo é aumentar a cobertura dos casos representativos, evitando redundâncias. Testar com uma única entrada humana pode ser suficiente em algumas situações.
  • É importante considerar que testar com múltiplas entradas humanas pode não trazer benefícios significativos e pode enfraquecer as pré-condições.

Dimensões das Entradas nos Testes

  • As entradas devem ser vistas como multidimensionais, incluindo não apenas os argumentos passados para o método, mas também o estado inicial da memória do sistema.
  • Variar o hardware e o sistema operacional é crucial, pois um sistema pode funcionar bem em um dispositivo e falhar em outro.
  • A compatibilidade entre diferentes versões de sistemas operacionais (ex: Windows, Linux) deve ser considerada durante os testes.

Considerações sobre Ambiente e Configurações

  • É necessário variar configurações como tipo de navegador e idioma padrão, além das bibliotecas auxiliares utilizadas no teste.
  • Variáveis de ambiente podem afetar significativamente o comportamento do sistema; portanto, devem ser levadas em conta nas entradas dos testes.

Variações no Comportamento do Sistema

  • Em sistemas com diferentes versões ou características para clientes distintos, é essencial testar essas variações para garantir a funcionalidade adequada.
  • Fatores como latência da rede e notificações externas também influenciam os resultados dos testes; todas as entradas devem ser consideradas cuidadosamente.

Conclusão sobre Entradas nos Testes

Playlists: Testing