what is cyclomatic complexity learn with an example
Complexitatea ciclomatică este un cuvânt buzz foarte comun în comunitatea de dezvoltare. Această tehnică este utilizată în principal pentru a determina complexitatea unei bucăți de cod sau funcționalitate.
Tehnica a fost dezvoltată de MaCabe și ajută la identificarea celor 3 întrebări de mai jos pentru programe / caracteristici
- Funcția / programul poate fi testat?
- Funcția / programul este înțeleasă de toată lumea?
- Este caracteristica / programul suficient de fiabil?
Ca QA putem folosi această tehnică pentru a identifica „nivelul” testării noastre. Este o practică că, dacă rezultatul complexității ciclomatice este mai mult sau mai mare, considerăm că acea funcționalitate este de natură complexă și, prin urmare, încheiem ca tester; că piesa de cod / funcționalitate necesită teste aprofundate.
Pe de altă parte, dacă rezultatul complexității ciclomatice este un număr mai mic, concluzionăm ca QA că funcționalitatea este mai puțin complexă și decidem domeniul de aplicare în consecință.
Lasă-mă să merg pas cu pas: mai întâi să înțelegem cum este calculat și apoi vom trece mai departe pentru a înțelege cum este determinat nivelul testării.
Ce veți învăța:
- Cum se calculează complexitatea ciclomatică?
- Formula de complexitate ciclomatică
- Exemplu de complexitate ciclomatică
- Cum îl pot folosi testerii?
- Acum vine comanda rapidă-
- Lectură recomandată
Cum se calculează complexitatea ciclomatică?
Calculul CC se învârte în jurul a 2 concepte
- Noduri
- Margini
Instrucțiunile dintr-un program sunt reprezentate ca noduri, iar căile de control de la o instrucțiune la alta sunt reprezentate de Edges.
Formula de complexitate ciclomatică
Formula pentru calcularea CC este următoarea:
CC = E ~ N + 2
Unde:
E = Numărul muchiilor
N = Numărul de noduri.
(Există o comandă rapidă pentru calcul, dar nu acum ... mai târziu ...)
Exemplu de complexitate ciclomatică
Să luăm exemplul de mai jos pentru a-l înțelege.
programe de interviu java și răspunsuri pentru cei cu experiență
Luați în considerare graficul fluxului de control de mai jos:
Am plasat NET puncte pentru a identifica nodurile și ALBASTRU linii pentru identificarea marginilor:
Deci, aici, în acest exemplu:
Număr de noduri (puncte roșii) = 14
cel mai bun detergent pentru PC pentru Windows 7
Număr de muchii (linii albastre) = 15
Deci Complexitatea ciclomatică = N ~ E + 2 = (14-15) +2 = 3
Cum îl pot folosi testerii?
În lumea reală, testerii pot sta împreună cu dezvoltatorii pentru a obține graficul fluxului de control pentru o anumită bucată de cod. Și odată ce avem graficul, putem obține complexitatea folosind această formulă. Dar povestea pentru testeri nu se termină aici: - punctul principal aici este - la ce folosește acest număr pentru echipa de testare?
Ei bine, testerii pot folosi acest număr pentru a determina nivelul testării lor.
În practică există 2 niveluri de testare:
- Testarea lungimii
- Testarea lățimii
Luați în considerare matricea de mai jos pentru diferite caracteristici ale oricărui modul: -
Testarea lungimii este un mod prin care încercăm să acoperim întregul domeniu, selectând cazurile de testare importante pentru fiecare caracteristică. De exemplu , în acest caz, să presupun că aleg să implic cu testarea lungimii, apoi pot selecta -
- Subfuncția 1.1 și Subfuncția 1.3 pentru Funcția 1
- Subfuncția 2.2 din Funcția 2
- Sub Funcția 3.3 din Funcția 3
- Sub Funcția 4.2 și Sub Funcția 4.3 din Funcția 4
- Subfuncția 5.3 din Funcția 5
Așadar, aici mă refer la întreaga caracteristică fără a intra în detalii exhaustive ale sub-caracteristicilor.
Acum, dacă rezultatul CC este un număr mai mare, atunci aleg să merg cu testarea Breadth, voi testa de fapt fiecare caracteristică împreună cu fiecare sub-caracteristică.
Deci, pe baza cerințelor dvs. actuale de proiect, a fiabilității mediului, testerii pot colabora împreună cu echipa de dezvoltare și pot crea un standard pentru identificarea nivelului și sferei testării. De exemplu -
- Dacă CC<=15 – Basic sanity test
- Dacă CC este între 16 și 30 - Testarea lungimii
- Dacă CC este între 31 și 50 - Testarea lățimii
- Dacă CC> 50 - Este o funcționalitate haotică și are nevoie de descompunere suplimentară
Acum vine comanda rapidă-
Numai numărați regiunile închise și adăugați 1 la acesta.
În exemplul nostru de mai sus - numărul de regiuni închise = 2 (completat în galben), deci CC = 2 + 1 = 3
cum se deschide un fișier json
În lucrarea reală este foarte dificil să concluzionăm rezultatul atunci când dăm afirmații precum -
- „... această funcționalitate este foarte dificil de implementat”
Ce vrei să spui prin dificil? Este complex, complicat sau haotic?
Cum ați ajuns la concluzia că acest lucru este dificil?
- „… Acest lucru ar trebui să fie disponibil până la sfârșitul zilei”
Ce este sfârșitul zilei? Sfârșitul zilei dvs. este 19:00, probabil al meu este 18:00?
- „... aș fi nevoie să fac teste detaliate pentru asta”
Ce este testarea detaliată? Nu există o tehnică de testare numită „Testare detaliată”
- „… Codul ar trebui să fie de bună calitate înainte de al implementa în QA”
Cum măsurați o calitate bună?
În schimb, dacă reformulez afirmațiile ca -
Complexitatea ciclomatică pentru fragmentul de cod este calculată la 75 și conform standardelor noastre; această funcționalitate este de natură Haos. Prin urmare, vă recomandăm să îl descompuneți în continuare.
Peste
- „... această funcționalitate este foarte dificil de implementat”
Funcționalitatea va fi implementată în mediu QA până la ora 17:00 CST.
Peste
- „… Acesta ar trebui să fie disponibil până la sfârșitul zilei”
Deoarece complexitatea ciclomatică este calculată ca 48, conform standardului nostru, vom face testarea sistemelor împreună cu testarea de integrare și regresie pentru caracteristică.
Peste
- „… .Aș fi nevoie să fac teste detaliate pentru acest lucru”
Conform Sonar, CC este acum 102. Am standardizat pentru a avea CC la 10. Vom implementa codul atunci când îmbunătățim codul pentru a face CC mai mic de 10.
Peste
- „.... codul ar trebui să fie de bună calitate înainte de al implementa în QA”
Care este diferența dintre cele două afirmații?
Ei bine, diferența aici este măsurarea. Am susținut fiecare afirmație cu măsurători adecvate, care ar ajuta părțile interesate să știe exact ce vreau să spun.
În mod similar, utilizați complexitatea ciclomatică în testarea software-ului pentru a determina măsura exactă a eforturilor dvs. de testare și o puteți utiliza nu numai pentru a identifica domeniul de aplicare al testării, ci și tipurile de testare pe care ar trebui să le faceți.
Lectură recomandată
- Ce este testarea componentelor sau testarea modulelor (Aflați cu exemple)
- Ce este testarea comparativă (Aflați cu exemple)
- Testarea software-ului Pachetul de cărți electronice eBook
- Ce este Testarea integrării sistemului (SIT): învățați cu exemple
- Cele mai bune instrumente de testare software 2021 [Instrumente de automatizare a testelor de calitate]
- Descărcare eBook Descărcare Primer
- 5 diagrame importante pe care testerii trebuie să le învețe cum să le folosească
- Tutorial de examinare TestRail: Aflați gestionarea completă a cazurilor de testare