Dovrebbero essere testati tutti i possibili contro-casi? [duplicare]

0

Attualmente sto provando a testare l'unità di un comportamento che, in alcuni casi molto particolari, restituisce B anziché A. Può dipendere dal valore di 3 diversi attributi, per esempio.

Come posso testarlo?

  • Verifica solo il caso specifico in cui il comportamento è true
  • Prova il caso specifico e un'altra combinazione casuale di valori per i quali il comportamento non è vero
  • Verifica il caso specifico e tutte le possibili combinazioni

L'ultima opzione sembra un incubo di manutenzione in quanto qualsiasi nuovo attributo o valore per un attributo richiederebbe massicci aggiornamenti in tutti i test sui comportamenti che li utilizzano, ma almeno avresti una copertura del 100% del comportamento.

Per fare un esempio, potremmo voler sapere se una persona ha diritto ai solletici gratuiti. Per essere idonei, è necessario appartenere alla categoria A, D e F, avere più di 20 anni, essere mancini e avere i capelli rossi.

Devo solo provare che "le categorie A o D o F + > 20yo + mancino + capelli rossi" danno l'idoneità? Devo testare anche alcune combinazioni casuali come "E, 25yo, mancino, biondo" non contrassegnate come idonee? Devo testare assolutamente ogni possibile combinazione o categoria, sotto / sopra 20anni, mano e capelli, uno è vero, tutti gli altri sono falsi?

    
posta leokhorn 19.02.2015 - 19:12
fonte

3 risposte

4

Per un'espressione booleana lunga generalmente non testate tutte le combinazioni possibili, ma verificate che ogni singolo parametro abbia l'effetto appropriato. Ad esempio, data la seguente espressione da testare:

(A or B or C) and D and E

Prova A impostando B e C false e D e E true. La commutazione di A ora dovrebbe alternare il risultato dell'intera espressione.

Prova B impostando A e C false e D e E true. La commutazione di B ora dovrebbe alternare il risultato dell'intera espressione.

Allo stesso modo per le altre variabili. Si imposta ciascuno in modo che si sappia che è la variabile in prova che sta cambiando il risultato.

Questo ti dà 5 test (O (n)) invece di 32 (O (2 n )), ma offre comunque una buona copertura.

    
risposta data 19.02.2015 - 20:10
fonte
1

Molto dipende da cosa andrà a capo del software.

Se questa è la tua app Web di base o il tuo gioco base per iPhone, probabilmente non devi fare COSI 'molto.

Se le vite umane vi cavalcassero, ti saresti fatto meglio a credere che hai bisogno di testare il santo schifo.

La storia di Therac 25 dovrebbe essere ben nota ormai. Diverse persone sono morte come conseguenza diretta del suo difetto software.

Il Uwatec Aladin Air X Nitrox la storia del computer subacqueo non è così conosciuta. Cinque subacquei erano piegati in pretzel, soffrendo di gravi lesioni neurologiche permanenti, dal suo difetto software. (Full Disclosure: so che uno dei subacquei feriti coinvolti, leggermente.)

    
risposta data 20.02.2015 - 01:15
fonte
0

Se il numero di combinazioni possibili è ragionevolmente piccolo, puoi testarle tutte. Ma se non è così ed è molto difficile mantenere test che coprano tutti gli input possibili, raccomanderei di testare solo i casi più tipici e i casi limite (se ce ne sono).

    
risposta data 19.02.2015 - 19:23
fonte

Leggi altre domande sui tag