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.