Einheit 8 / 11

Testabdeckungsanalyse und risikobasiertes Testen: Mit KI das richtige Ziel erreichen

Gewinne:

  • Fähigkeit, Metriken wie Leitungs-, Zweig- und Zustandsabdeckung als Karte und nicht als Vertrauen zu lesen und zu verstehen, dass eine hohe Abdeckung Pseudo-Vertrauen schaffen kann
  • Möglichkeit, den Anforderungsumfang neben den Codeumfang zu stellen und Rückverfolgbarkeitslücken mithilfe künstlicher Intelligenz sichtbar zu machen
  • Fähigkeit, Features mit der Formel Risiko = Wahrscheinlichkeit × Auswirkung zu bewerten, begrenzten Testaufwand auf das höchste Risiko zu lenken und absichtliche Abweichungen vom Geltungsbereich zu dokumentieren

Sie können nicht jede Software für immer testen. Zeit und Ressourcen sind begrenzt. Die eigentliche Frage ist also: Wohin mit dem begrenzten Testaufwand? Zwei Konzepte beantworten diese Frage. Die Testabdeckung – eine Metrik, die misst, wie viel Code oder Anforderungen von Tests berührt werden – stellt dar, was getestet wird. Risikobasiertes Testen – der Ansatz, die Testpriorität anhand der Wahrscheinlichkeit der Verschlechterung eines Bereichs und des Schadens zu bestimmen, der bei einer Verschlechterung entstehen wird – lenkt den Aufwand auf das größte Risiko. Künstliche Intelligenz (KI) ist in beiden Fällen ein leistungsstarker Analysepartner: Sie macht Deckungslücken sichtbar, schlägt Risikobereiche vor. Der zentrale Vorbehalt bleibt jedoch bestehen: Die Anzahl der Bereiche, die die KI sieht, kann irreführend sein; Mit Tests, die nichts verifizieren, kann sogar eine Zeilenabdeckung von 100 % erreicht werden. Ihre Aufgabe ist es, den Bereich als Karte und nicht als Trust zu lesen.

Abdeckungskennzahlen richtig lesen

Es gibt verschiedene Arten von Bereichen, und nicht alle sind gleichermaßen aussagekräftig:

  • Zeilenabdeckung: Wie viele Codezeilen wurden mindestens einmal ausgeführt. Das häufigste, aber schwächste Kriterium; Nur weil eine Leitung funktioniert, ist das kein Beweis dafür, dass sie sich korrekt verhält.
  • Zweigabdeckung: Ob jeder if-Zweig (sowohl wahr als auch falsch) getestet wurde. Aussagekräftiger als eine Zeile.
  • Bedingungsabdeckung: Jede Unterbedingung in komplexen Bedingungen separat testen.
  • Pfadabdeckung: Kombinationen logischer Pfade innerhalb des Codes. Es ist das umfassendste, aber in der Praxis schwer zu erreichen.
Achtung: Der Abdeckungsprozentsatz ist kein „Qualitätswert“. Eine Zeilenabdeckung von 100 % zeigt an, dass die Zeilen funktionieren. nicht, dass es das richtige Ergebnis liefert (den Pseudodurchlauf in Einheit 1). Nutzen Sie den Umfang als Antwort auf die Frage „Wo habe ich noch nie gesucht“ und nicht als Zusicherung, dass „alles getestet wurde“.

Blinde Flecken erkennen

Abdeckungsmetriken messen nur, wie viel des Codes ausgeführt wurde; kann Folgendes nicht sehen: (1) ungetestete Anforderungen (Code vorhanden, aber Geschäftsregel ist falsch), (2) fehlender Code (kein Spielraum für ein Steuerelement, das nie geschrieben wurde), (3) Daten-/Zustandskombinationen, (4) Benutzerfreundlichkeit, Leistung, Sicherheit. Daher sollte die Anforderungsabdeckung (jedes Akzeptanzkriterium muss von mindestens einem Test erfüllt werden) neben der Codeabdeckung platziert werden. KI ist bei der Erstellung der Anforderungs-Test-Zuordnung (Traceability-Matrix) sehr hilfreich.

Risikobasiertes Testen: Wo investieren wir den Aufwand?

Risiko = Wahrscheinlichkeit (Bruchwahrscheinlichkeit) × Auswirkung (Schaden bei Bruch). Mit KI können Sie eine Feature-Liste auf diesen beiden Achsen bewerten und eine Heatmap erstellen. Hohe Wahrscheinlichkeit × hohe Domänen (Zahlung, Authentifizierung, Datenintegrität) verdienen die intensivsten Tests; Niedrige × niedrige Bereiche (ein selten verwendeter Vorzugsbildschirm), Lichttests sind ausreichend.

Bereich

Wahrscheinlichkeit

Auswirkungen

Risiko

Testdichte

Zahlungsfluss

mittel

sehr hoch

hoch

Tief + Automatisierung

Authentifizierung

mittel

sehr hoch

hoch

Tief + Sicherheit

Produktsuche

hoch

mittel

Mittelhoch

Automatisierung + Entdeckung

Profilfoto

niedrig

niedrig

niedrig

Lichtsteuerung

Hilfeseite

niedrig

zu niedrig

zu niedrig

Rezension

Die Falle, dem Zielfernrohr nachzujagen

Den Abdeckungsprozentsatz zu einem Ziel zu machen (z. B. die Regel „Team muss 90 % Abdeckung erreichen“) hat einen gefährlichen Nebeneffekt: Entwickler und Tester konzentrieren sich auf die Erhöhung des Prozentsatzes, anstatt sich mit dem tatsächlichen Risiko auseinanderzusetzen. Das Ergebnis ist oft ein aufgeblähter Umfang ohne Behauptungen oder triviale Tests – die Zahl sieht gut aus, aber es gibt keinen Schutz. Dabei handelt es sich um das Phänomen, dass das Kriterium verfälscht wird, wenn es selbst zum Ziel wird: „Wenn eine Maßnahme zum Ziel wird, hört sie auf, eine gute Maßnahme zu sein.“ Verwenden Sie das Oszilloskop als Diagnosetool und nicht als Leistungsbericht.

Ein gesünderer Ansatz besteht darin, den Geltungsbereich direktional zu interpretieren: „Warum bleibt die Filialabdeckung im kritischen Zahlungsmodul bei 40 % hängen?“ Die Frage lautet: „Beträgt die Gesamtabdeckung 90 %?“ Es ist viel wertvoller als die Frage. Lassen Sie die KI den Umfangsbericht nach Modul und Risikostufe aufschlüsseln. Heben Sie Hochrisikogebiete mit geringer Abdeckung hervor. So wird der Spielraum zu einem Kompass, der die Arbeit lenkt, und nicht zu einem blinden Prozentsatz.

Achtung: Der Slogan „100 % Abdeckung“ ist eine Falle. Das Testen einiger Codes (einfache Zugriffsfunktionen, automatisch generierte Teile) ist von geringem Wert. Der dort aufgewendete Aufwand wird aus risikoreichen Geschäftsregeln gestohlen. Ziel ist es, jedes wichtige Verhalten und Risiko zu testen, nicht jede Zeile.

Schwache Eingabeaufforderung / Starke Eingabeaufforderung

Schwach: „Erhöhe meine Testabdeckung.“
Stark: „Angesichts dieser Liste von Akzeptanzkriterien und dieser vorhandenen Testfälle. (1) Tabellarisch darlegen, welche Akzeptanzkriterien von keinem Test erfüllt wurden (Anforderungsabdeckungslücke). (2) Bewerten Sie jedes Feature mit 1–5 auf der Wahrscheinlichkeits- und Auswirkungsachse; Rangfolge nach Risiko = Wahrscheinlichkeit × Auswirkung. (3) Schlagen Sie für meine begrenzte Zeit vor, welche 5 Lücken ich zuerst schließen sollte, beginnend mit dem höchsten Risiko. Nehmen Sie die Codezeilenabdeckung nicht als einziges Kriterium, sondern priorisieren Sie das Geschäftsrisiko. Kriterien: [...] Tests: [...]“

Leistungsstarke Eingabeaufforderung; kombiniert Umfang mit Geschäftsrisiko und priorisiert begrenzte Arbeitskräfte.

Vier kopierbare Vorlagen

1) Lücke im Anforderungsumfang:

Angesichts der folgenden Akzeptanzkriterien und dieser Testfälle. Erstellen Sie eine Rückverfolgbarkeitstabelle: jedes Kriterium -> Tests, die es erfüllen. Kriterien, für die es keine Tests gibt, werden als „ABDECKUNGSLÜCKE“ bezeichnet, und Tests, die mit keinem Kriterium in Zusammenhang stehen, werden als „NOTWENDIG?“ bezeichnet. Note: Kriterien: [...] / Tests: [...]

2) Risikobewertung:

Bewerten Sie diese Liste von Funktionen/Modulen mit 1–5 hinsichtlich der Achsen Wahrscheinlichkeit (Wahrscheinlichkeit eines Bruchs) und Auswirkung (Schaden bei Bruch). Risiko = Wahrscheinlichkeit × Auswirkung. Sortieren Sie in einer Tabelle und geben Sie für jeden Hochrisikobereich den empfohlenen Testtyp (Einheit/API/UI/Aufklärung/Sicherheit) an. Liste: [...]

3) Interpretation des Geltungsbereichs:

Der folgende Abdeckungsbericht wurde erstellt (Linie %, Zweig %). Sagen Sie mir Folgendes: – Was beweisen diese Zahlen NICHT? – Welche Bereiche könnten trotz hoher Zeilenabdeckung gefährdet sein? – Welche zusätzlichen Tests würden Sie für Lücken empfehlen, die die Abdeckung nicht erkennt (Anforderung, Datenkombination, Sicherheit)? Bericht: [Einfügen]

4) Begrenzter Zeitplan:

Noch [X Stunden] bis zur Ausstrahlung. Die folgende Risikoeinstufung und die Deckungslücken werden angegeben. Während dieser Zeit wird der Testplan, der das maximale Risiko reduziert, in der Reihenfolge seiner Priorität erstellt. Machen Sie deutlich, was Sie NICHT bewusst testen sollten und welches Risiko Sie dabei in Kauf nehmen.Daten: [...]

drei Mini-Koffer

Fall 1 – 100 % Abdeckung, kein Vertrauen. Ein Team konnte sich einer Linienabdeckung von 94 % rühmen. Die „Scope-Interpretation“-Analyse zeigte, dass die meisten Tests ohne Behauptung durchgeführt wurden, was bedeutete, dass sie Zeilen ausführten, aber nichts überprüften. Der tatsächliche Schutzumfang war viel geringer. Das Team konzentrierte sich nicht auf Zahlen, sondern auf Mutationstests (Einheit 10); Die tatsächliche Fehlererkennungsrate verdoppelte sich.

Fall 2 – Risikokarte korrigierte Priorität. Ein Team verbrachte 40 % seines Testaufwands mit einem selten verwendeten Berichtsbildschirm und übersprang den Zahlungsfluss, weil er „einfach funktioniert“. Die KI-Risikobewertung zeigte dieses Ungleichgewicht. Die Arbeit wurde neu verteilt; Zwei Wochen später wurde ein schwerwiegender Fehler im Zahlungsfluss entdeckt und vor der Veröffentlichung geschlossen.

Fall 3 – Bewusst außerhalb des Wirkungsbereichs. Vier Stunden nach Beginn einer Veröffentlichung entschied das Team mit der Vorlage „begrenzter Zeitplan“, was getestet und was bewusst übersprungen werden sollte. Zwei risikoreiche Streams wurden eingehend getestet; Ein Präferenzbildschirm mit geringem Risiko wurde als „akzeptiertes Risiko“ dokumentiert und übersprungen. Die Entscheidung war transparent und begründet; Die Version kam sicher heraus.

Häufige Fehler

  • Verwechslung des Deckungsprozentsatzes mit Qualität. Eine hohe Zeilenabdeckung wird als „getestete“ Sicherheit interpretiert.
  • Ich schaue mir nur die Codeabdeckung an. Überspringen der Anforderungsabdeckung (Testen jedes Akzeptanzkriteriums).
  • Gleiches Testen ohne Berücksichtigung des Risikos. Zuteilung von Arbeitskräften in Bereiche mit geringem Risiko und Vernachlässigung kritischer Arbeitsströme.
  • Versteckt sich außerhalb des Wirkungsbereichs. Nicht dokumentieren, was nicht getestet wurde, wenn die Zeit nicht ausreichte; Überraschungen nach der Veröffentlichung.
  • Ich akzeptiere die Risikobewertung der KI ohne Frage. KI kennt den Produktkontext nicht vollständig; Passen Sie die Ergebnisse mit einem Expertenauge an.

Zusammenfassend

Testabdeckung und risikobasiertes Testen sind zwei Instrumente, um begrenzten Aufwand an die richtige Stelle zu lenken. Abdeckungsmetriken (Linie, Zweig, Zustand, Pfad) zeigen, was berührt wurde, beweisen aber nicht, dass es sich korrekt verhalten hat; Umfang ist eine Karte, Vertrauen nicht. Platzieren Sie die Anforderungsabdeckung neben der Codeabdeckung. Bewerten Sie die Merkmale mit der Formel Risiko = Wahrscheinlichkeit × Auswirkung und direktem Aufwand für das größte Risiko. KI macht Lücken sichtbar, bewertet Risiken, plant begrenzte Zeit; Aber die letzte Priorität und die Entscheidung zum „bewussten Ausstieg“ liegt beim Experten, der den geschäftlichen Kontext kennt.

Anwendungsaufgabe

Wählen Sie ein Modul aus Ihrem eigenen Projekt. Führen Sie die Vorlage „Anforderungsumfangslücke“ mit KI aus und finden Sie heraus, welche Akzeptanzkriterien nicht getestet werden. Ordnen Sie dann die Unterfunktionen des Moduls auf den Achsen Wahrscheinlichkeit × Auswirkung mit „Risikobewertung“ ein. Verteilen Sie die (hypothetischen) 3 Stunden Testzeit, die Sie haben, mit dem „begrenzten Zeitplan“; Schreiben Sie auf, was Sie bewusst nicht testen und welches Risiko Sie in Kauf nehmen. Fügen Sie einen konkreten Test hinzu, der die Deckungslücke mit dem höchsten Risiko schließt, die Sie finden.

Checkliste

  • [ ] Ich lese den Abdeckungsprozentsatz als Karte, nicht als Qualität.
  • [ ] Neben der Codeabdeckung habe ich auch die Anforderungsabdeckung entfernt.
  • [ ] Ich habe die Features nach Wahrscheinlichkeit × Auswirkung bewertet und sie nach Risiko eingestuft.
  • [ ] Ich habe den Testaufwand auf das höchste Risiko umgelenkt.
  • [ ] Ich habe Bereiche dokumentiert, die nicht bewusst getestet und Risiken erkannt wurden.
  • [ ] Ich habe die Risikobewertungen von AI basierend auf meinem Produktkontext überprüft.