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