Cyclomatische Complexiteit in softwaretesten (voorbeeld)

Wat is McCabe's Cyclomatic Complexiteit?

Cyclomatische Complexiteit in softwaretesten is een teststatistiek die wordt gebruikt voor het meten van de complexiteit van een softwareprogramma. Het is een kwantitatieve maatstaf voor onafhankelijke paden in de broncode van een softwareprogramma. Cyclomatic complexDe snelheid kan worden berekend met behulp van controlestroomgrafieken of met betrekking tot functies, modules, methoden of klassen binnen een softwareprogramma.

Onafhankelijk pad wordt gedefinieerd als een pad dat ten minste één rand heeft die nog niet eerder in andere paden is overschreden.

Deze metriek is in 1976 ontwikkeld door Thomas J. McCabe en is gebaseerd op een controlestroomweergave van het programma. De besturingsstroom geeft een programma weer als een grafiek die bestaat uit knooppunten en randen.

In de grafiek vertegenwoordigen knooppunten verwerkingstaken, terwijl randen de besturingsstroom tussen de knooppunten vertegenwoordigen.

Cyclomatische Complexiteit in softwaretesten

Stroomdiagramnotatie voor een programma:

De stroomgrafieknotatie voor een programma definieert verschillende knooppunten die via de randen zijn verbonden. Hieronder staan ​​stroomdiagrammen voor uitspraken als if-else, While, until en normale stroomvolgorde.

Stroomdiagramnotatie voor een programma

Hoe Cyclomatic Com te berekenenplexity

Wiskundige weergave:

Wiskundig gezien is het een verzameling onafhankelijke paden door het grafiekdiagram. De Code complexDe kwaliteit van het programma kan worden gedefinieerd met behulp van de formule –

V(G) = E - N + 2

Waar,

E – Aantal randen

N – Aantal knooppunten

V (G) = P + 1

Waar P = Aantal predikaatknooppunten (knooppunt dat voorwaarde bevat)

Voorbeeld -

i = 0;
n=4; //N-Number of nodes present in the graph

while (i<n-1) do
j = i + 1;

while (j<n) do

if A[i]<A[j] then
swap(A[i], A[j]);

end do;
j=j+1;

end do;

Stroomgrafiek voor dit programma zal zijn

Cyclomatische Complexity-stroomgrafiek voor dit programma

Wiskundig rekenen,

  • V(G) = 9 – 7 + 2 = 4
  • V(G) = 3 + 1 = 4 (Voorwaardeknooppunten zijn 1,2 en 3 knooppunten)
  • Basisset – Een reeks mogelijke uitvoeringspaden van een programma
  • 1, 7
  • 1, 2, 6, 1, 7
  • 1, 2, 3, 4, 5, 2, 6, 1, 7
  • 1, 2, 3, 5, 2, 6, 1, 7

Eigenschappen van Cyclomatic complexiteit:

Following zijn de eigenschappen van Cyclomatic complexiteit:

  1. V (G) is het maximale aantal onafhankelijke paden in de grafiek
  2. V(G) >=1
  3. G heeft één pad als V (G) = 1
  4. Minimaliseer complexheid tot 10

Hoe is deze statistiek nuttig voor het testen van software?

Basispadtesten zijn er een van Wit box techniek en het garandeert dat tijdens het testen ten minste één instructie wordt uitgevoerd. Het controleert elk lineair onafhankelijk pad door het programma betekent aantal testgevallen, zal gelijkwaardig zijn aan de cyclomatische complexiteit van het programma.

Deze statistiek is nuttig vanwege de eigenschappen van Cyclomatic complexiteit (M) –

  1. M kan het aantal testgevallen zijn om vertakkingsdekking te bereiken (bovengrens)
  2. M kan het aantal paden door de grafieken zijn. (Ondergrens)

Beschouw dit voorbeeld –

If (Condition 1)
Statement 1

Else
Statement 2

If (Condition 2)
Statement 3

Else
Statement 4

Cyclomatische ComplexDe snelheid voor dit programma is 8-7+2=3.

Als complexity heeft berekend als 3, er zijn drie testgevallen nodig voor de volledige paddekking voor het bovenstaande voorbeeld.

Te volgen stappen:

De following stappen moeten worden gevolgd voor het berekenen van Cyclomatic complexontwerp van testen en testcases.

Stap 1 – Constructie van grafiek met knooppunten en randen uit de code

Stap 2 – Identificatie van onafhankelijke paden

Stap 3 – Cyclomatische Complexiteitsberekening

Stap 4 – Ontwerp van testgevallen

Zodra de basisset is gevormd, TESTGEVALLEN moet worden geschreven om alle paden uit te voeren.

Meer over V (G):

Cyclomatic complexAls het programma klein is, kan de snelheid handmatig worden berekend. Er moeten geautomatiseerde tools worden gebruikt als het programma erg com isplex omdat dit meer stroomgrafieken met zich meebrengt. Gebaseerd op complexMet dit nummer kan het team een ​​conclusie trekken over de acties die ter meting moeten worden ondernomen.

Following tabel geeft overzicht op de complexiteitsnummer en bijbehorende betekenis van v (G):

complexity nummer Betekenis
1-10 Gestructureerde en goed geschreven code

Hoge testbaarheid

Kosten en inspanning zijn minder

10-20 complex Code

Middelmatige testbaarheid

Kosten en inspanning zijn gemiddeld

20-40 Zeer complex Code

Lage testbaarheid

De kosten en inspanningen zijn hoog

> 40 Helemaal niet testbaar

Zeer hoge kosten en moeite

Gereedschappen voor Cyclomatic Complexiteitsberekening:

Er zijn veel tools beschikbaar voor het bepalen van de complexiteit van de applicatie. Sommige complexVoor specifieke technologieën worden rekenhulpmiddelen gebruikt. ComplexDe identiteit kan worden gevonden aan de hand van het aantal beslissingspunten in een programma. De beslissingspunten zijn if, for, for-each, while, do, catch, case-instructies in een broncode.

Voorbeelden van hulpmiddelen zijn

  • OCLint – Statische code-analysator voor C en gerelateerde talen
  • Reflector-invoegtoepassing – Codestatistieken voor .NET-assemblages
  • GMetrieken – Zoek statistieken in Java gerelateerde toepassingen

Gebruik van Cyclomatic Complexiteit:

Cyclomatische Complexheid kan daarbij zeer behulpzaam blijken te zijn

  • Helpt ontwikkelaars en testers onafhankelijke paduitvoeringen te bepalen
  • Ontwikkelaars kunnen er zeker van zijn dat alle paden minstens één keer zijn getest
  • Helpt ons om ons meer te concentreren op de ongedekte paden
  • Verbeter de codedekking in Software Engineering
  • Evalueer het risico dat aan de toepassing of het programma is verbonden
  • Door deze statistieken vroeg in de cyclus te gebruiken, wordt het risico van het programma groter

Conclusie:

Cyclomatische Complexity is softwaremetriek die nuttig is voor gestructureerde of Wit Box Testen. Het wordt voornamelijk gebruikt om com te evaluerenplexiteit van een programma. Als er meer beslissingspunten zijn, dan is complexDe kwaliteit van het programma is meer. Als het programma een hoge complexity-nummer, dan is de kans op fouten hoog en is er meer tijd voor onderhoud en het oplossen van problemen.