O cupom parece simples até começarmos a perguntar
A regra combinada da Cantina Horizonte é esta:
O MBB10 concede 10% de desconto quando o subtotal for maior ou igual a R$ 30,00, o cupom estiver dentro da validade e ainda não tiver sido utilizado.
Testar R$ 29,99, R$ 30,00 e R$ 30,01 continua sendo útil para o limite do valor.
Mas isso não responde sozinho o que acontece quando o cupom está vencido ou já foi usado.
Uma condição sozinha não conta a história inteira
Podemos separar a regra em três perguntas:
Subtotal suficiente?
O valor é pelo menos R$ 30,00?
Cupom válido?
A data atual ainda está dentro da validade?
Ainda não utilizado?
O cupom permanece disponível para uso?
O desconto só deve acontecer quando as três respostas forem favoráveis.
Se começarmos a testar de cabeça, é fácil esquecer uma combinação
Imagine alguém anotando apenas:
“Testar um pedido de R$ 50,00 com o cupom MBB10.”
Esse caso verifica uma situação possível, mas não deixa claro se o cupom estava vencido ou se já tinha sido usado.
Quando várias condições influenciam uma mesma decisão, precisamos de uma forma melhor de organizar as combinações.
A tabela nasce da necessidade
Vamos colocar as condições nas linhas e diferentes combinações nas colunas. O resultado fica assim:
| Condição / ação | Regra 1 | Regra 2 | Regra 3 | Regra 4 |
|---|---|---|---|---|
| Subtotal ≥ R$ 30,00? | Sim | Sim | Sim | Não |
| Cupom dentro da validade? | Sim | Não | Sim | Sim |
| Cupom ainda não utilizado? | Sim | Sim | Não | Sim |
| Aplicar 10%? | Sim | Não | Não | Não |
Agora fica muito mais difícil esquecer que um cupom vencido ou já utilizado precisa produzir outro resultado.
Tabela de decisão
É uma técnica usada para organizar condições e ações quando o resultado depende de combinações de regras.
Uma tabela completa poderia mostrar todas as combinações possíveis. Para aprender o raciocínio, começamos pelas combinações que realmente ajudam a separar os comportamentos importantes.
O teste continua precisando de dados concretos
A tabela organiza a lógica, mas ainda precisamos transformar cada coluna em uma situação executável.
| Caso | Subtotal | Validade | Uso anterior | Esperado |
|---|---|---|---|---|
| CT-CUP-01 | R$ 50,00 | Válido | Não usado | Aplicar 10% |
| CT-CUP-02 | R$ 50,00 | Vencido | Não usado | Não aplicar |
| CT-CUP-03 | R$ 50,00 | Válido | Já usado | Não aplicar |
| CT-CUP-04 | R$ 20,00 | Válido | Não usado | Não aplicar |
CT significa Caso de Teste. Estamos começando a identificar os casos porque eles já são numerosos o bastante para precisarem de organização.
Agora aparece um segundo tipo de regra
Nem todo comportamento depende apenas de valores e condições atuais. Alguns dependem também de onde o processo está neste momento.
Veja o caminho normal de um pedido:
Cada posição desse caminho representa um estado do pedido.
Estado e transição
Se o pedido está em Novo e passa para Confirmado, houve uma mudança de estado.
Transição de estado
É a passagem de um estado para outro. Quando as regras dizem quais mudanças são permitidas, podemos testar tanto transições válidas quanto inválidas.
Por exemplo, estas mudanças fazem sentido:
| Estado atual | Próximo estado | Esperado |
|---|---|---|
| Novo | Confirmado | Permitir |
| Confirmado | Em preparação | Permitir |
| Em preparação | Pronto | Permitir |
| Pronto | Entregue | Permitir |
As mudanças inválidas também são importantes
Agora experimente pensar nas situações abaixo:
Novo → Entregue
O pedido pulou todas as etapas intermediárias. Isso deveria ser permitido?
Entregue → Em preparação
O pedido voltou para um estado anterior depois de ter sido entregue.
Esses casos não são encontrados apenas escolhendo números próximos a um limite. O que importa é a sequência de estados.
Teste de transição de estados
É uma técnica útil quando o comportamento permitido depende do estado atual e das mudanças possíveis a partir dele.
Uma técnica não substitui a outra
Até aqui já vimos problemas diferentes pedindo técnicas diferentes:
| Problema | Técnica que ajuda |
|---|---|
| Faixas de valores com comportamento semelhante | Particionamento de equivalência |
| Pontos em que o comportamento muda | Análise de valores-limite |
| Várias condições combinadas | Tabela de decisão |
| Comportamento depende do estado atual | Transição de estados |
Na prática, as técnicas também podem ser combinadas. O cupom, por exemplo, tem uma condição de valor que merece análise de limite e outras condições que ficam mais claras numa tabela de decisão.
Prática · escolha a técnica pelo problema
- A quantidade aceita vai de 1 a 10. Qual técnica ajuda a observar as bordas?
- O cupom depende de valor mínimo, validade e uso anterior. Qual técnica ajuda a organizar as combinações?
- Um pedido não pode voltar de Entregue para Em preparação. Qual técnica ajuda a representar isso?
- Uma regra diz que notas de 0 a 100 são válidas e valores fora da faixa são inválidos. Que duas técnicas podem se complementar?
O objetivo não é decorar nomes. É reconhecer que tipo de problema estamos tentando organizar.
Mas ainda falta uma pergunta
Até aqui falamos muito sobre como escolher bons casos. Porém uma mesma regra pode ser testada em lugares diferentes.
A quantidade 0 pode ser verificada numa função isolada, na comunicação entre partes ou no sistema completo visto pelo usuário.
Quando dizemos “testar a quantidade”, o que exatamente estamos testando?
Antes de seguir
Você deve conseguir explicar:
- por que valores-limite não organizam sozinhos uma regra com várias condições;
- para que serve uma tabela de decisão;
- o que significa transição de estado;
- por que técnicas diferentes podem ser usadas no mesmo sistema.