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).