“Testei 5 e funcionou”
Um colega abre a Cantina Horizonte, informa quantidade 5, adiciona o produto e conclui:
“A quantidade está funcionando.”
O teste mostrou que 5 funciona. Isso é útil.
Mas a regra é:
A quantidade deve ser um número inteiro entre 1 e 10, inclusive.
Testar apenas 5 não diz o que acontece com 0, 1, 10, 11, -3 ou 100.
Testar tudo parece seguro — até olharmos os números
Se o campo aceitar números inteiros, existem muitos valores possíveis. E, em outros campos, podemos ter textos, datas, combinações e diferentes estados.
Precisamos escolher dados que representem comportamentos diferentes, em vez de tentar tudo.
Comece separando grupos que deveriam se comportar do mesmo jeito
Para a quantidade de 1 a 10, temos três grupos bem naturais:
| Grupo | Exemplos | Esperado |
|---|---|---|
| Menor que 1 | -3, -1, 0 | Rejeitar |
| De 1 a 10 | 1, 5, 10 | Aceitar, se houver estoque |
| Maior que 10 | 11, 20, 100 | Rejeitar |
Se todos os valores de um grupo deveriam receber o mesmo tratamento, podemos começar escolhendo representantes.
Particionamento de equivalência
É uma técnica que divide os dados de entrada em grupos — ou partições — que deveriam ser tratados de maneira equivalente pelo sistema.
Em vez de testar -1, -2, -3, -4 e -5 só porque são diferentes, podemos escolher um representante dessa região e dedicar esforço a outras regiões importantes.
Mas alguns pontos merecem atenção especial
Defeitos aparecem com frequência justamente onde o comportamento muda.
Na regra de 1 a 10, os pontos mais interessantes ficam perto de 1 e de 10:
É fácil imaginar um erro como usar < 10 quando a regra deveria aceitar 10, ou esquecer completamente o limite inferior.
Análise de valores-limite
É uma técnica que concentra atenção nas bordas das faixas e nos valores imediatamente próximos, porque é ali que o comportamento costuma mudar.
Partição e limite respondem perguntas diferentes
Particionamento
Quais grupos deveriam receber o mesmo tratamento?
Valores-limite
Em quais pontos o comportamento muda?
As duas técnicas se complementam.
Aplicando à Cantina Horizonte
Um conjunto pequeno e bem justificado para quantidade poderia ser:
| Valor | Por que testar? | Esperado |
|---|---|---|
| 0 | Logo abaixo do mínimo | Rejeitar |
| 1 | Limite mínimo válido | Aceitar |
| 2 | Logo acima do mínimo | Aceitar |
| 9 | Logo abaixo do máximo | Aceitar |
| 10 | Limite máximo válido | Aceitar |
| 11 | Logo acima do máximo | Rejeitar |
Observe que agora conseguimos explicar por que cada valor está ali.
O estoque cria outro limite
Suponha que existam 8 sanduíches em estoque.
Mesmo que a quantidade máxima geral seja 10, o estoque cria uma borda concreta naquele momento.
Quais valores seriam interessantes perto de estoque 8?
Uma boa sequência é 7, 8 e 9: logo abaixo, exatamente no limite e logo acima.
O cupom também tem uma borda
Se o MBB10 exige subtotal maior ou igual a R$ 30,00, podemos observar:
| Subtotal | Relação com o limite |
|---|---|
| R$ 29,99 | Logo abaixo |
| R$ 30,00 | Exatamente no limite |
| R$ 30,01 | Logo acima |
Agora estamos reutilizando a mesma forma de pensar em outra regra.
E se alguém digitar letras ou deixar vazio?
Esses casos não devem ser inventados automaticamente sem olhar para a especificação e para o tipo de campo.
Se a interface aceita apenas números, talvez parte da entrada já seja restringida. Se uma comunicação direta com o servidor aceitar dados diferentes, a situação muda.
A resposta depende da especificação e da forma como a entrada é construída. O ponto é perceber que tipos diferentes de entrada também podem formar partições diferentes.
Prática · monte um conjunto pequeno, mas justificável
Para cada regra abaixo, escolha valores de teste e explique por que escolheu cada um:
- Quantidade permitida: 1 a 10.
- Estoque disponível: 8 unidades.
- Cupom válido a partir de R$ 30,00.
- Uma futura regra permite nota de 0 a 100.
A resposta vale mais quando contém a justificativa do que quando contém muitos números.
O número de testes não mede sozinho a qualidade dos testes
Uma pessoa pode executar 30 valores escolhidos quase iguais e ainda deixar de verificar os pontos importantes.
Outra pode escolher 6 valores bem pensados e revelar um defeito rapidamente.
O objetivo não é “testar muito”. É testar com intenção.
Agora as regras começam a ficar mais interessantes
Quantidade e estoque têm limites relativamente simples.
Mas o cupom MBB10 possui mais de uma condição:
- subtotal mínimo;
- data de validade;
- uso anterior do cupom.
Quando condições começam a se combinar, escolher casos apenas por limite já não organiza tudo tão bem.
Como testar uma regra quando o resultado depende de várias condições ao mesmo tempo?
Antes de seguir
Você deve conseguir explicar:
- por que não é necessário testar todos os valores possíveis;
- o que é uma partição de equivalência;
- por que valores próximos aos limites merecem atenção especial;
- a diferença entre escolher um representante de um grupo e testar uma borda.