Os valores esperados de entrada e saída para o componente de software devem ser extraídos da especificação do componente. Os valores são então agrupados em conjuntos com limites identificáveis. Cada conjunto, ou partição, contém valores que são esperados para serem processados pelo componente da mesma forma. O particionamento de intervalos de dados de teste é explicado na técnica de projeto de caso de teste de particionamento de equivalência. É importante considerar tanto partições válidas quanto inválidas ao projetar casos de teste.
A demonstração pode ser feita usando uma função escrita em Java.
class Safe { static int add(int a, int b) { int c = a + b ; if (a >= 0 && b >= 0 && c < 0) { System.err.println("Overflow!"); } if (a < 0 && b < 0 && c >= 0) { System.err.println("Underflow!"); } return c; }}
Na base do código, os vetores de entrada são particionados. Os blocos que precisamos cobrir são a instrução de estouro e a instrução de subfluxo e nenhum destes 2. Isso dá origem a 3 classes equivalentes, a partir da própria revisão do código.
observamos que existe um tamanho fixo de inteiro portanto:-
MIN_VALUE ≤ x + y ≤ MAX_VALUE
Notemos que o parâmetro de entrada a e b são ambos inteiros, daí a ordem total existir neles.Quando calculamos as equações:-
x + y = MAX_VALUE MIN_VALUE = x + y
recuperamos os valores que estão no limite, inclusive, isto é, estes pares de (a,b) são combinações válidas, e nenhum subfluxo ou transbordo ocorreria para eles.
Por outro lado:-
x + y = MAX_VALUE + 1
dá pares de (a,b) que são combinações inválidas,o transbordo ocorreria para eles. Da mesma forma:-
x + y = MIN_VALUE – 1
dá pares de (a,b) que são combinações inválidas,o overflow ocorreria para eles.
Valores-limite (desenhados apenas para o caso de overflow) estão sendo mostrados como a linha laranja na figura do lado direito.
Para outro exemplo, se os valores de entrada fossem meses do ano, expressos como inteiros, o parâmetro de entrada ‘mês’ poderia ter as seguintes partições:
... -2 -1 0 1 .............. 12 13 14 15 ..... --------------|-------------------|-------------------invalid partition 1 valid partition invalid partition 2
A fronteira entre duas partições é o lugar onde o comportamento da aplicação muda e não é um número real em si. O valor do limite é o valor mínimo (ou máximo) que se encontra no limite. O número 0 é o número máximo na primeira partição, o número 1 é o valor mínimo na segunda partição, ambos são valores de limite. Os casos de teste devem ser criados para gerar entradas ou saídas que cairão sobre e para cada lado de cada limite, o que resulta em dois casos por limite. Os casos de teste em cada lado de um limite devem estar no menor incremento possível para o componente em teste, para um número inteiro este é 1, mas se o input fosse uma casa decimal com 2 casas, então seria .01. No exemplo acima há valores de limite em 0,1 e 12,13 e cada um deve ser testado.
Análise de valor limite não requer partições inválidas. Pegue um exemplo em que um aquecedor é ligado se a temperatura for 10 graus ou mais fria. Existem duas partições (temperature≤10, temperature>10) e dois valores limite a serem testados (temperature=10, temperature=11).
Onde um valor limite está dentro da partição inválida o caso de teste é projetado para assegurar que o componente do software lida com o valor de forma controlada. A análise do valor limite pode ser usada durante todo o ciclo de teste e é igualmente aplicável em todas as fases de teste.