Escolher o item de cobertura antes da percentagem
Uma percentagem só tem significado quando se conhece o conjunto de itens que deveria ser exercitado. Podem ser classes de equivalência, valores-limite, regras de decisão, transições ou ramos de código. Dez execuções do mesmo caso não representam dez itens distintos. Num formulário com duas classes de cliente e três classes de prazo, três casos podem exercitar cada classe individualmente sem cobrir as seis combinações possíveis. Regista o critério escolhido, os itens identificados e as condições de execução. Essa lista permite distinguir cobertura de classes, combinações e resultados esperados, evitando que uma métrica favorável esconda um comportamento importante por observar.
Derivar limites de uma regra inteira inclusiva
O nosso lote fictício aceita entre 21 e 80 registos inteiros. Valores abaixo de 21, dentro do intervalo e acima de 80 formam três classes para esta regra. Para BVA de dois valores, usa os itens 20,21,80,81: valores adjacentes dos dois lados dos limites. A suite 20,21,50,81 cobre apenas três desses quatro itens, embora tenha quatro execuções. O valor 50 pode representar a classe válida, mas não substitui o limite 80. Especifica também o resultado esperado para cada caso. Sem saber que 21 e 80 devem ser aceites, executar esses valores não fornece um oráculo útil para detetar a desigualdade errada.
Demonstrar o que um caso consegue detetar
Compara a regra 21<=n<=80 com uma implementação defeituosa que usa 21<n<=80. Ambas aceitam 50 e rejeitam 20 e 81. O caso 21 distingue as versões: deveria ser aceite, mas a implementação rejeita-o. O modelo local desta aula executa deliberadamente essa versão defeituosa para mostrar a limitação de uma suite que só usa valores interiores. Isto não demonstra a eficácia de todos os testes de uma aplicação real. Outros defeitos podem afetar tipos, formatos, volume, concorrência ou combinações não modeladas. Usa o exemplo para justificar escolhas de casos, mantendo visível o âmbito restrito da experiência.
Representar condições e resultados numa tabela
Define três booleanos independentes: A significa conta ativa, S significa assinatura válida e D significa chave repetida. Todas as oito combinações são possíveis neste modelo. A regra fictícia rejeita primeiro se A ou S forem falsos; se ambos forem verdadeiros, devolve o resultado anterior quando D é verdadeiro e processa uma nova operação quando D é falso. Esta ordem é uma condição do exercício, não uma política bancária universal. Enumera as oito regras antes de simplificar e associa um resultado a cada uma. Repetir uma regra não cobre outra; seis regras distintas de oito representam 75% de cobertura da tabela completa.
Visitar estados e exercitar transições
O batch começa em READY. start leva a RUNNING; success leva de RUNNING a DONE; error leva de RUNNING a FAILED; retry leva de FAILED a RUNNING. Existem quatro transições válidas. As sequências start-success e start-error, cada uma após reset para READY, visitam todos os estados mas só três transições distintas. Falta retry. Para verificar a proibição de retry em DONE, chega a DONE através de eventos válidos e tenta apenas esse evento inválido. Confirma rejeição e preservação de estado. Não encadeies eventos inválidos assumindo que o primeiro estabeleceu corretamente o estado necessário para o segundo.
Ler cobertura estrutural com limites explícitos
Considera dois IF independentes, um para A e outro para B, cada um com ramos true e false. Os casos (true,true) e (false,false) percorrem os quatro resultados de ramo. As combinações (true,false) e (false,true) continuam por executar. Assim, 100% de cobertura de ramos neste modelo não implica todas as combinações, nem comprova que os resultados foram corretamente verificados. Relaciona cobertura com riscos e critérios de aceitação. Ao recomendar uma release, explica qual estrutura foi observada e que comportamentos relevantes permanecem fora da experiência. A cobertura orienta novas perguntas; não transforma automaticamente uma suite numa prova de ausência de defeitos.
Calcula separadamente: {20,21,50,81} cobre 3/4 limites; seis regras distintas cobrem 6/8 combinações; start-success e start-error cobrem 3/4 transições. Todos dão 75%, mas descrevem lacunas diferentes.
Armadilhas comuns
Contar repetições como cobertura nova; usar um valor interior como limite; confundir estados com transições; generalizar cobertura de ramos para todas as combinações ou para ausência de defeitos.
Tópicos relacionados: Desenhar casos · Risco e release
Define o item de cobertura e o resultado esperado antes de calcular percentagens. Uma lacuna identificada informa o próximo teste, sem provar por si só que existe um defeito.
Referência: ISTQB CTFL syllabus v4.0.1 · CTFL v4.0; syllabus v4.0.1 (2024-09-15)