← Mundo bit ByteQualidade e Teste de Software
Professor Ronaldo Lavestein
Escolher com método
Etapa 5

Bons valores de teste

Agora que conhecemos a regra de quantidade e já revisamos o código, chegou a hora de executar. Mas surge um problema prático: quais valores realmente vale a pena testar?

“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:

GrupoExemplosEsperado
Menor que 1-3, -1, 0Rejeitar
De 1 a 101, 5, 10Aceitar, se houver estoque
Maior que 1011, 20, 100Rejeitar

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:

0→1→2...9→10→11

É 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:

ValorPor que testar?Esperado
0Logo abaixo do mínimoRejeitar
1Limite mínimo válidoAceitar
2Logo acima do mínimoAceitar
9Logo abaixo do máximoAceitar
10Limite máximo válidoAceitar
11Logo acima do máximoRejeitar

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:

SubtotalRelação com o limite
R$ 29,99Logo abaixo
R$ 30,00Exatamente no limite
R$ 30,01Logo 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:

  1. Quantidade permitida: 1 a 10.
  2. Estoque disponível: 8 unidades.
  3. Cupom válido a partir de R$ 30,00.
  4. 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?

A seguir: testar regras com várias condições

Vamos organizar combinações com tabelas de decisão e, depois, testar comportamentos que dependem de uma sequência de estados.

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.