Complessità ciclica per 2 IF: perché non solo FF o TT?

0

So che la complessità ciclomatica definisce il numero di percorsi indipendenti nel codice. Usando il modo semplice, può essere calcolato come numero di IF +1. In tal caso, per un codice semplice con due IF, CC sarebbe 3.

Questo avrebbe senso in termini di risultati VERO / FALSO - TT, TF, FT. Ogni caso di test avrebbe attraversato un nuovo limite.

Ma cosa succede se ho scelto TT e FF? Avrei attraversato tutti i bordi, come potrebbe esserci un altro percorso indipendente?

EDIT: avrei potuto capire ... presumo linearmente indipendente significa che cambio solo un risultato decisionale alla volta ...

    
posta user144171 10.03.2015 - 15:57
fonte

1 risposta

1

La complessità ciclomatica applicata al test pone due limiti nei casi di test necessari.

Da Wikipedia Complessità ciclomatica: implicazioni per il test del software

M is an upper bound for the number of test cases that are necessary to achieve a complete branch coverage.

M is a lower bound for the number of paths through the control flow graph (CFG). Assuming each test case takes one path, the number of cases needed to achieve path coverage is equal to the number of paths that can actually be taken. But some paths may be impossible, so although the number of paths through the CFG is clearly an upper bound on the number of test cases needed for path coverage, this latter number (of possible paths) is sometimes less than M.

All three of the above numbers may be equal: branch coverage <= cyclomatic complexity <= number of paths.

Per il codice:

if( c1() )
   f1();
else
   f2();

if( c2() )
   f3();
else
   f4();

Questo ha una complessità di 3. Sì, test TT o FF sono due casi di test e copriranno la copertura del codice del ramo. La copertura Npath richiederebbe quattro test.

Un modulo dovrebbe avere almeno tante prove quante sono le sue complessità.

Considera un bug che richiede che f1 () sia chiamato prima di f3 (). I test TT e FF non scopriranno il bug, mentre i test TF e FT mostreranno il bug. dovresti avere almeno 3 test per questo metodo in base alla complessità ciclomatica.

Sebbene il punto chiave di tutto ciò sia che la complessità stabilisce i limiti del numero di test necessari per testare il codice in modo soddisfacente. Non dice quali test hai bisogno (né se hai i test giusti).

    
risposta data 10.03.2015 - 16:11
fonte

Leggi altre domande sui tag