Copertura delle condizioni per If (A && B) - misurazione dell'ingresso o del codice esercitato?

3

Ho studiato la copertura delle condizioni negli ultimi giorni. In un libro "The Art of Software Testing" sottolineano che non assicura la copertura decisionale, perché ad esempio

IF(A && B)

A=True, B=false e A=False,B=True soddisfano la copertura delle condizioni ma la decisione è sempre False .

Mi chiedo, come può questo soddisfare la copertura? Il valore True di B in realtà non verrà mai testato a causa del cortocircuito, quindi come può soddisfare la copertura?

    
posta John V 23.02.2013 - 12:46
fonte

1 risposta

10

La copertura delle condizioni riguarda il test che qualsiasi operando che fa parte dell'espressione if può essere valutato sia in true che in false senza problemi. In questo tipo di copertura, non ti interessa ciò che verrebbe eseguito all'interno delle parentesi graffe, né il risultato dell'operando utilizzato in una condizione.

Prendi il seguente codice:

bool a = ...;
bool b = ...;
if (a && b)
{
    ...
}

La copertura delle condizioni di questo codice richiederebbe di testare:

  • a per sia vero che falso, e:
  • b sia per true sia per falso.

Nelle lingue che richiedono la valutazione di entrambi gli operandi in un'operazione logica , la copertura delle condizioni del codice sopra è soddisfatta con:

a = true; b = false
a = false; b = true

Questo è ciò che è illustrato nella tua domanda.

Alcuni linguaggi valutano il secondo operando di un AND logico solo se il primo operando è vero (o valutano il secondo operando di OR solo se il primo operando viene valutato come falso). In questo caso, sono richiesti tre test invece di due:

a = true; b = true
a = true; b = false
a = false

Come puoi notare, non ci interessa il valore di b nel terzo test, dal momento che il programma non lo calcolerà mai quando a è falso.

    
risposta data 23.02.2013 - 13:50
fonte

Leggi altre domande sui tag