Nell'analisi del valore limite, perché testare min + 1 insieme a min?

3

Nei test di analisi dei confini, alcuni autori suggeriscono di testare MIN-1, MIN, MIN + 1 (e lo stesso per MAX).

Anche per 1-100 range (se A > = 1 & A < = 100), i test case sarebbero: 0,1,2 e 99,100,101.

Non vedo il punto - se 100 lavori, allora anche i 99 devono funzionare (secondo me, ma è per questo che chiedo).

    
posta user144171 24.01.2015 - 11:41
fonte

2 risposte

7

Supponiamo che stai testando un "intervallo" di classe, che rappresenta gli intervalli di numeri naturali:

 var interval= new Interval(1,100);

Ora i tuoi primi due test sono "verdi":

AssertIsTrue(interval.Contains(100))
AssertIsFalse(interval.Contains(101))

e sei sicuro che l'autore non abbia fatto "errore di off-one".

Sfortunatamente, l'implementazione è simile a questa

Contains(x)
{
    return (x>= beginRange && x == endRange);
   // above line has a typo, "==" should have been be "<="
}

Quindi sarebbe stato meglio aggiungere un altro test in prima persona,

 AssertIsTrue(interval.Contains(99));

che fallisce, rivelando il bug mancato ai primi due test.

O per essere più generali: gli errori off-by-one non si manifestano sempre mescolando "<" e "<=", ci sono molte altre possibilità per ottenere cose del genere errate, e come tester, è meglio non fare alcuna ipotesi su come appare l'implementazione interna di una funzione.

    
risposta data 24.01.2015 - 11:56
fonte
0

In boundary analysis testing, some authors suggest testing MIN-1, MIN, MIN+1 (and the same for MAX) ... I do not see the point

Il punto è che il tuo codice è previsto fallire per valori al di fuori dell'intervallo consentito e questo è ciò che stai testando con questi casi "extra".
Non tutti i test dovrebbero passare; devi testare per [alcune] cose che ti aspetteresti di fallire e correggere il problema se / quando non .

    
risposta data 13.12.2016 - 12:52
fonte

Leggi altre domande sui tag