Partição de equivalência em testes de software

particao-equivalenciaSeria interessante se pudéssemos testar todas as possíveis entradas de um sistema, para garantir que todas elas gerariam resultados esperados. Mas já sabemos que é impossível.

Existem diversas técnicas para agrupar e otimizar os casos de teste, afim de fazer a maior cobertura possível do sistema. Uma delas é conhecida como partição de equivalência.

Trata-se de uma técnica de testes que propõe a separação das possíveis entradas em categorias diferentes. Partições de equivalência podem ser encontradas em dados válidos e inválidos ( valores que deveriam ser rejeitados, por exemplo). As partições podem ser identificadas para valores de saída, valores relativos ao tempo ( antes ou depois de um evento), bem como valores internos ao processo.

Um exemplo prático e hipotético muito simples:

Considere as seguintes regras para uma aplicação de financiamento de imóveis:

  1. Para imóveis construídos até 1990 – Não é possível financiar
  2. Para imóveis construídos entre 1990 e 2000 – Financiamento de 50% do valor
  3. Para imóveis construídos no ano de 2000 em diante – Financiamento do valor total

Pois bem, temos 3 partições possíveis aqui . Note que qualquer valor de data entre 1990 e 2000 acarretará o mesmo resultado, que é a possibilidade de financiar até 50% do valor do imóvel. Sendo assim, podemos pegar apenas 1 representante dessa partição para fazer o teste ( por exemplo, “1993”). Resumimos as possibilidades de entrada em 4 casos de teste apenas.  Quatro? Sim! Um representante para cada partição identificada acima e um representante de entrada inválida ( “0” ou “20,3” , por exemplo). Note que podem ser necessários mais casos de teste, de acordo com a especificação da aplicação.

Para que a técnica de partição de equivalência seja aplicada de maneira correta, há alguns critérios a seguir ao fazer a divisão das partições:

  • A divisão das partições deve ser bem clara e definida. Um elemento da partição deve ser idêntico aos outros da mesma partição. Ou seja, ele deve representar fielmente qualquer outro elemento que esteja naquele mesmo grupo.
  • Não deve ser possível que um elemento se enquadre hora na partição A e hora na partição B.
  • Se uma partição não possui membros, ela não existe. Ou seja, partição vazia não é permitido.
  • Valores inválidos devem ser considerados também.

Os casos de teste devem ser construídos a partir das partições criadas. De acordo com as especificações, cada representante de uma partição deve apresentar um resultado diferente.

Obviamente, há casos mais elaborados em que as partições devem ser cuidadosamente separadas pra que as diferentes combinações de entrada possam ser testadas. Além dessa técnica ser aplicável a todos os níveis de teste, ela facilita e muito a vida do testador. Diminui  a quantidade de testes e facilita a cobertura completa dos testes no sistema.

About Pedro Costa