I valori di input e output previsti per il componente software dovrebbero essere estratti dalla specifica del componente. I valori sono poi raggruppati in insiemi con confini identificabili. Ogni set, o partizione, contiene valori che ci si aspetta vengano elaborati dal componente nello stesso modo. Il partizionamento degli intervalli di dati di test è spiegato nella tecnica di progettazione dei casi di test di partizionamento dell’equivalenza. È importante considerare sia le partizioni valide che quelle non valide quando si progettano i casi di test.
La dimostrazione può essere fatta usando una funzione scritta in 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; }}
Sulla base del codice, i vettori di input di sono partizionati. I blocchi che dobbiamo coprire sono la dichiarazione di overflow e la dichiarazione di underflow e nessuno di questi 2. Questo dà luogo a 3 classi equivalenti, dalla revisione del codice stesso.
nota che esiste una dimensione fissa di intero quindi:-
MIN_VALUE ≤ x + y ≤ MAX_VALUE
Riconosciamo che il parametro di ingresso a e b sono entrambi interi, quindi esiste un ordine totale su di essi.Quando calcoliamo le uguaglianze:-
x + y = MAX_VALUE MIN_VALUE = x + y
otteniamo i valori che sono al limite, inclusi, cioè queste coppie di (a,b) sono combinazioni valide, e nessun underflow o overflow accadrebbe per loro.
D’altra parte:-
x + y = MAX_VALUE + 1
fornisce coppie di (a,b) che sono combinazioni non valide, Overflow accadrebbe per loro. Allo stesso modo:-
x + y = MIN_VALUE – 1
fornisce coppie di (a,b) che sono combinazioni non valide, per le quali si verificherebbe l’Underflow.
I valori limite (disegnati solo per il caso di overflow) sono mostrati come la linea arancione nella figura a destra.
Per un altro esempio, se i valori di input fossero i mesi dell’anno, espressi come interi, il parametro di input ‘mese’ potrebbe avere le seguenti partizioni:
... -2 -1 0 1 .............. 12 13 14 15 ..... --------------|-------------------|-------------------invalid partition 1 valid partition invalid partition 2
Il confine tra due partizioni è il luogo dove il comportamento dell’applicazione cambia e non è un numero reale stesso. Il valore di confine è il valore minimo (o massimo) che si trova al confine. Il numero 0 è il numero massimo nella prima partizione, il numero 1 è il valore minimo nella seconda partizione, entrambi sono valori limite. I casi di test dovrebbero essere creati per generare ingressi o uscite che cadranno su e ai lati di ogni confine, il che risulta in due casi per confine. I casi di test su ogni lato di un confine dovrebbero essere nel più piccolo incremento possibile per il componente sotto test, per un intero questo è 1, ma se l’input fosse un decimale con 2 posti allora sarebbe .01. Nell’esempio sopra ci sono valori limite a 0,1 e 12,13 e ognuno dovrebbe essere testato.
L’analisi dei valori limite non richiede partizioni non valide. Prendiamo un esempio in cui un riscaldatore viene acceso se la temperatura è di 10 gradi o più fredda. Ci sono due partizioni (temperatura≤10, temperatura>10) e due valori limite da testare (temperatura=10, temperatura=11).
Se un valore limite rientra nella partizione non valida, il test case è progettato per assicurare che il componente software gestisca il valore in modo controllato. L’analisi dei valori limite può essere usata durante tutto il ciclo di test ed è ugualmente applicabile a tutte le fasi di test.