what is cyclomatic complexity learn with an example
Zyklomatische Komplexität ist ein sehr verbreitetes Schlagwort in der Entwicklungsgemeinschaft. Diese Technik wird hauptsächlich verwendet, um die Komplexität eines Codes oder einer Funktionalität zu bestimmen.
Die Technik wurde von MaCabe entwickelt und hilft, die folgenden 3 Fragen für die Programme / Funktionen zu identifizieren
- Ist die Funktion / das Programm testbar?
- Wird die Funktion / das Programm von allen verstanden?
- Ist die Funktion / das Programm zuverlässig genug?
Als Qualitätssicherung können wir diese Technik verwenden, um das „Niveau“ unserer Tests zu ermitteln. Es ist eine Praxis, dass wir, wenn das Ergebnis der zyklomatischen Komplexität mehr oder mehr ist, diese Funktionalität als komplex betrachten und daher als Tester schließen; dass der Code / die Funktionalität eingehende Tests erfordert.
Wenn andererseits das Ergebnis der zyklomatischen Komplexität eine kleinere Zahl ist, schließen wir als Qualitätssicherung, dass die Funktionalität weniger komplex ist, und entscheiden den Umfang entsprechend.
Lassen Sie mich Schritt für Schritt gehen: Verstehen Sie zuerst, wie es berechnet wird, und dann werden wir verstehen, wie das Testniveau bestimmt wird.
Was du lernen wirst:
- Wie berechnet man die zyklomatische Komplexität?
- Formel für die zyklomatische Komplexität
- Beispiel für die zyklomatische Komplexität
- Wie können Tester es verwenden?
- Jetzt kommt die Abkürzung
- Literatur-Empfehlungen
Wie berechnet man die zyklomatische Komplexität?
Die Berechnung von CC dreht sich um 2 Konzepte
- Knoten
- Kanten
Anweisungen in einem Programm werden als Knoten dargestellt, und Steuerpfade von einer Anweisung zur anderen werden durch Kanten dargestellt.
Formel für die zyklomatische Komplexität
Die Formel zur Berechnung des CC lautet wie folgt:
CC = E ~ N + 2
Wo:
E = Anzahl der Kanten
N = Anzahl der Knoten.
(Es gibt eine Verknüpfung zur Berechnung, aber nicht jetzt ... später ...)
Beispiel für die zyklomatische Komplexität
Nehmen wir das folgende Beispiel, um es zu verstehen.
Betrachten Sie das folgende Kontrollflussdiagramm:
Ich habe die platziert NETZ Punkte zur Identifizierung der Knoten und BLAU Linien zur Identifizierung der Kanten:
Also hier in diesem Beispiel:
Anzahl der Knoten (rote Punkte) = 14
Anzahl der Kanten (blaue Linien) = 15
Die zyklomatische Komplexität ist also = N ~ E + 2 = (14-15) +2 = 3
Wie können Tester es verwenden?
In der Praxis können Tester mit Entwicklern zusammenarbeiten, um das Kontrollflussdiagramm für einen bestimmten Code abzuleiten. Und sobald wir den Graphen haben, können wir die Komplexität mit dieser Formel ableiten. Aber die Geschichte für Tester endet nicht hier: - Der Hauptpunkt hier ist - was ist die Verwendung dieser Nummer für das Testteam?
Nun, Tester können diese Nummer verwenden, um das Niveau ihrer Tests zu bestimmen.
In der Praxis gibt es zwei Teststufen:
- Längenprüfung
- Breitentests
Betrachten Sie die folgende Matrix für verschiedene Funktionen eines Moduls: -
Längentests sind eine Methode, mit der wir versuchen, den gesamten Umfang abzudecken, indem wir die wichtigen Testfälle für jede Funktion auswählen. Zum Beispiel Nehmen wir in diesem Fall an, ich wähle, um mit dem Längen-Test zu implizieren, dann kann ich wählen -
- Unterfunktion 1.1 und Unterfunktion 1.3 für Funktion 1
- Untermerkmal 2.2 aus Merkmal 2
- Unterfunktion 3.3 aus Funktion 3
- Unterfunktion 4.2 und Unterfunktion 4.3 aus Funktion 4
- Unterfunktion 5.3 aus Funktion 5
Hier gehe ich also auf das gesamte Feature ein, ohne auf ausführliche Details der Unter-Features einzugehen.
Wenn das Ergebnis des CC eine größere Zahl ist, dann entscheide ich mich für den Breitentest. Ich werde tatsächlich jedes einzelne Merkmal zusammen mit jedem einzelnen Untermerkmal testen.
Basierend auf Ihren aktuellen Projektanforderungen und der Zuverlässigkeit der Umgebung können Tester mit dem Entwicklungsteam zusammenarbeiten und einen Standard zur Identifizierung des Testniveaus und des Testumfangs erstellen. Zum Beispiel -
- Wenn der CC<=15 – Basic sanity test
- Wenn der CC zwischen 16 und 30 liegt - Längenprüfung
- Wenn der CC zwischen 31 und 50 liegt - Breitentest
- Wenn der CC> 50 - Es ist eine chaotische Funktionalität und muss weiter zerlegt werden
Jetzt kommt die Abkürzung
Zählen Sie einfach die Anzahl der geschlossenen Regionen und addieren Sie 1 dazu.
In unserem obigen Beispiel - Anzahl der geschlossenen Bereiche = 2 (gelb ausgefüllt), also CC = 2 + 1 = 3
In der realen Arbeit ist es sehr schwierig, das Ergebnis zu schließen, wenn wir Aussagen wie -
- '... diese Funktionalität ist sehr schwer zu implementieren'
Was meinst du mit schwierig? Ist es komplex, kompliziert oder chaotisch?
Wie sind Sie zu dem Schluss gekommen, dass dies schwierig ist?
- '... das sollte bis zum Ende des Tages verfügbar sein'
Was ist das Ende des Tages? Ihr Ende des Tages ist 19.00 Uhr, wahrscheinlich meins ist 18.00 Uhr?
- '... ich müsste dafür detaillierte Tests durchführen'
Was ist eine detaillierte Prüfung? Es gibt keine Testtechnik namens 'Detaillierte Tests'.
- „… Der Code sollte von guter Qualität sein, bevor wir ihn für die Qualitätssicherung bereitstellen.“
Wie messen Sie gute Qualität?
Wenn ich stattdessen die Aussagen wie folgt umformuliere:
Die zyklomatische Komplexität für das Stück Code wird mit 75 und gemäß unseren Standards berechnet. Diese Funktionalität ist von Natur aus Chaos. Daher empfehlen wir, es weiter zu zerlegen.
Über
- '... diese Funktionalität ist sehr schwer zu implementieren'
Die Funktionalität wird in der QS-Umgebung bis 17.00 Uhr CST bereitgestellt.
Fragen und Antworten zu Interviews mit Qualitätssicherungsingenieuren
Über
- '... das sollte bis zum Ende des Tages verfügbar sein'
Da die zyklomatische Komplexität mit 48 berechnet wird, würden wir gemäß unserem Standard die Systemtests zusammen mit den Integrations- und Regressionstests für das Feature durchführen.
Über
- '... Ich müsste dafür detaillierte Tests durchführen.'
Laut Sonar ist der CC jetzt 102. Wir haben den CC auf 10 standardisiert. Wir werden den Code bereitstellen, wenn wir den Code verbessern, um den CC auf weniger als 10 zu bringen.
Über
- '... der Code sollte von guter Qualität sein, bevor wir ihn für die Qualitätssicherung bereitstellen.'
Was ist der Unterschied zwischen den beiden Aussagen?
Nun, der Unterschied hier ist die Messung. Ich habe jede meiner Aussagen mit geeigneten Maßnahmen unterstützt, die meinen Stakeholdern helfen würden, genau zu wissen, was ich sagen möchte.
Verwenden Sie in ähnlicher Weise die zyklomatische Komplexität beim Testen von Software, um das genaue Maß Ihrer Testbemühungen zu bestimmen, und Sie können damit nicht nur den Umfang Ihrer Tests identifizieren, sondern auch die Arten von Tests, die Sie durchführen müssten.
Literatur-Empfehlungen
- Was ist Komponententest oder Modultest (Lernen mit Beispielen)
- Was ist ein Vergleichstest (Lernen mit Beispielen)
- Software Testing Career Package eBook
- Was ist System Integration Testing (SIT)? Lernen Sie anhand von Beispielen
- Beste Software-Test-Tools 2021 (QA Test Automation Tools)
- Testen von Primer eBook Download
- 5 Wichtige Diagramme, die Tester zur Verwendung benötigen
- TestRail Review Tutorial: Lernen Sie das End-to-End-Testfallmanagement