Zum Inhalt
wannacode

Was die Abdeckung nicht sagt

Kurz gesagt: Die Anforderungsabdeckung zählt, wie viele Anforderungen mindestens einen Test haben. Sie sagt nicht, ob der Test den Fehler abfängt, ob er die ganze Anforderung prüft, was passiert, wenn sich zwei Regeln treffen, oder was gar nicht aufgeschrieben ist. Deshalb fragst du neben der Zahl immer „was wurde nicht geprüft, und warum“.

Problem

Hundert Prozent, und trotzdem falsch

Der Bericht, bevor die Herbstkampagne live geht, ist grün: Alle Anforderungen sind abgedeckt, alle Tests bestehen.

Eine Woche später bekommt der Support eine Beschwerde. Ein Warenkorb von 52,00 € mit HERBST10, 46,80 € nach dem Rabatt. Der Warenkorb sagt „Lieferung: kostenlos“, aber beim Bezahlen werden dem Kunden 4,90 € berechnet. Der Warenkorb zählt die Grenze vor dem Rabatt, und die Zahlung danach.

Die Lieferung hat Tests. Der Gutscheincode hat Tests. Aber kein Test lässt die beiden Regeln zusammen laufen. Und als QA fragt, welche Antwort stimmt, stellt sich heraus, dass niemand entschieden hat: Wird die Grenze von 50 € vor dem Rabatt gezählt oder danach?

Die Idee

Was die Zahl zählt

Die Anforderungsabdeckung (requirements coverage) zählt die Anforderungen, die mindestens einen Test haben. Vier von vier: 100 %. Nichts weiter.

Die Zahl sagt nicht:

  • Ob der Test den Fehler abfängt. Ein Test bei 120,00 € deckt „kostenlos ab 50,00 €“ ab, fängt aber „über 50 €“ nicht ab. Das Häkchen ist echt, der Test ist schwach.
  • Ob er die ganze Anforderung prüft. „Der Code gibt 10 % Rabatt und gilt nicht für reduzierte Produkte“ sind zwei Regeln in einem Satz. Ein Test für die 10 %, und die Zeile ist abgedeckt.
  • Was zwischen den Anforderungen passiert. Die Matrix hat eine Zeile pro Regel, nicht pro Treffen zweier Regeln. Der Warenkorb von 52,00 € mit einem Code steht in keiner Zeile.
  • Was nicht aufgeschrieben ist. Es gibt Zeilen nur für die Anforderungen in der Liste. Eine Anforderung, die niemand aufgeschrieben hat, ergibt keine leere Zeile. Sie fehlt einfach.

Das sind die Grenzen der Abdeckung. Abdeckung ist nützlich. Null ist ein Alarm, und eine leere Zeile ist ein echtes Loch. Aber 100 % sagen nur, dass es keine leeren Zeilen gibt.

Genauer, für Neugierige

Abdeckung wird immer an etwas gemessen: Anforderungen, Eingabeklassen, Grenzen, Übergängen, Zweigen im Code. Du siehst sie im Modul „Testentwurfsverfahren“. 100 % nach einem Kriterium heißen, dass alle seine Elemente mindestens einmal ausgeführt wurden. Es heißt nicht, dass es keine Fehler gibt: Testen zeigt, dass Fehler vorhanden sind, nicht, dass keine da sind. Das ist das erste der sieben Prinzipien in ISTQB CTFL v4.0.1 (Abschnitt 1.3).

ISTQB CTFL v4.0.1 (Abschnitt 1.4.4) nennt die Bewertung der Abdeckung als einen der Vorteile der Rückverfolgbarkeit. Die Abdeckung beantwortet die Frage „gibt es für jede Anforderung einen Test“. Wie gut der Test prüft, ist eine andere Frage, mit eigenen Maßen.

Probier es aus

Wo lügt die Zahl?

1. Die Anforderung „Die Lieferung ist ab 50,00 € einschließlich kostenlos“ hat einen Test: „Ein Warenkorb von 120,00 €: Die Lieferung ist kostenlos“. Das Programm sagt „über 50 €“ statt „ab 50 €“. Fällt der Test durch?
2. Die Anforderung lautet „Ein Gutscheincode gibt 10 % Rabatt und gilt nicht für reduzierte Produkte“. Der einzige Test ist „Ein T-Shirt für 20,00 € mit HERBST10: 18,00 €“. Was wurde nicht geprüft?
3. Die Lieferung hat Tests. Der Gutscheincode hat Tests. Was prüft keiner von ihnen?
4. Der Bericht sagt „95 % Anforderungsabdeckung“. Welche Frage sagt dir am meisten?

Probier es aus

Hundert Prozent bei den Rabatten

Markiere die Verbindungen, dann die zwei Paare von Tests, die dasselbe prüfen. Sieh, wie hoch die Abdeckung ist und was trotzdem nicht geprüft wurde.

Tests

  • T-1: Ein Warenkorb von 30,00 €: Die Lieferung kostet 4,90 €.
  • T-2: Ein Warenkorb von 120,00 €: Die Lieferung ist kostenlos.
  • T-3: Ein Warenkorb von 25,00 €: Die Lieferung kostet 4,90 €.
  • T-4: Ein T-Shirt für 20,00 € mit HERBST10: 18,00 €.
  • T-5: Ein Stammkunde, reduzierte Jeans für 40,00 €: 38,00 €.
  • T-6: Ein Stammkunde mit HERBST10, ein T-Shirt für 20,00 €: 18,00 €, nicht 17,00 €.
  • T-7: Ein T-Shirt für 30,00 € mit HERBST10: 27,00 €.

Klicke auf die Zelle, in der der Test die Anforderung prüft; noch einmal, um die Verbindung zu entfernen. Die Pfeiltasten wechseln zwischen den Zellen, Leertaste oder Enter markiert.

AnforderungenT-1: Ein Warenkorb von 30,00 €: Die Lieferung kostet 4,90 €.T-2: Ein Warenkorb von 120,00 €: Die Lieferung ist kostenlos.T-3: Ein Warenkorb von 25,00 €: Die Lieferung kostet 4,90 €.T-4: Ein T-Shirt für 20,00 € mit HERBST10: 18,00 €.T-5: Ein Stammkunde, reduzierte Jeans für 40,00 €: 38,00 €.T-6: Ein Stammkunde mit HERBST10, ein T-Shirt für 20,00 €: 18,00 €, nicht 17,00 €.T-7: Ein T-Shirt für 30,00 € mit HERBST10: 27,00 €.Abgedeckt durch
A-1 Die Lieferung ist ab 50,00 € einschließlich kostenlos, sonst kostet sie 4,90 €.0
A-2 Ein Gutscheincode gibt 10 % Rabatt und gilt nicht für reduzierte Produkte.0
A-3 Ein Stammkunde bekommt 5 % Rabatt, auch auf reduzierte Produkte.0
A-4 Rabatte werden nicht addiert: Der größere gilt.0
Prüft0000000
Welche Tests sind überflüssig (wiederholen einen anderen Test)?

Die Idee

Der Fehler steckt dazwischen

Die meisten Regeln im Shop sind für sich einfach. Die Lieferung ist ein Vergleich. Der Gutscheincode ist 10 %. Schwierig wird es, wenn sie sich treffen:

  • die Grenze der Lieferung und der Rabatt: davor oder danach?
  • der Code und eine Rückgabe: Wird die bezahlte Bestellung mit dem Code zurückgegeben, kann der Code wieder verwendet werden?
  • der Code und die Treue auf einem reduzierten Produkt: Der Code gilt nicht, die Treue gilt, also 5 %. Die Antwort folgt aus den Regeln, aber es gibt keinen Test dafür.

Die ersten beiden Fragen haben keine Zeile in der Matrix, weil sie keine Anforderung haben. Die dritte hat eine Antwort, aber sie sitzt zwischen zwei Zeilen. Das ist auch das Wertvollste, was du mit der Matrix tun kannst: auf Paare von Zeilen schauen und fragen „und wenn beide gelten?“. Manchmal ist die Antwort ein neuer Test. Öfter ist es eine offene Frage an den Inhaber, und dann eine neue Anforderung.

Die leere Stelle in der Matrix ist also nicht nur eine leere Zeile. Manchmal liegt sie zwischen zwei vollen.

Die Idee

Wenn die Zahl zum Ziel wird

Verlangt das Management „100 % Abdeckung bis Freitag“ und schaut nur darauf, wird es sie bekommen. Die Häkchen werden in Eile gesetzt, manche dort, wo der Test nur in der Nähe der Anforderung besteht. Die Zahl wächst, und das Prüfen nicht.

Deshalb stehen im Bericht neben der Abdeckung andere Fragen:

  • Was ist nicht abgedeckt, und warum? Eine Liste, kein Prozentsatz.
  • Wie wichtig ist der nicht abgedeckte Teil? Die Farbe eines Buttons oder die Zahlung.
  • Liegen die Tests an den Grenzen? 49,99 und 50,00 €, der 14. und der 15. Tag.
  • Was sagen die Fehler? Kommen nach dem Release die Fehler von einer Stelle, sind die Tests dort schwach, was auch immer die Zahl sagt.

Die Qualität der Tests misst man anders: Die Tests laufen gegen eine Version des Systems mit einem echten Fehler, und du siehst, ob sie durchfallen. Später im Kurs machst du das mit jeder deiner Tabellen und jedem deiner Szenarien.

Genauer, für Neugierige

Die Beobachtung, dass ein Maß, das zum Ziel wird, aufhört, ein gutes Maß zu sein, ist als Goodharts Gesetz bekannt (nach dem Ökonomen Charles Goodhart). Die Formulierung in dieser Form kam später, von der Anthropologin Marilyn Strathern.

Übung

Der fehlende Test

1. Was ergänzen? Die Matrizen sind vollständig. Welcher Test bringt etwas Neues?

1. Die Matrix zur Lieferung ist vollständig: Die Tests sind 30,00 €, 25,00 € und 120,00 €. Welcher neue Test bringt am meisten?
2. Die Anforderungen zu den Rabatten sind abgedeckt. Welcher Test fehlt für „Ein Gutscheincode gilt nicht für reduzierte Produkte“?
3. Der Test „Ein Stammkunde mit HERBST10, ein T-Shirt für 20,00 €: 18,00 €“ ist auch mit der Treue verbunden. Das Programm gibt die 5 % gar nicht. Fällt der Test durch?

Test

Teste dich

1. Was zählt die Anforderungsabdeckung?
2. Alle Anforderungen sind abgedeckt, und alle Tests bestehen. Was kannst du sagen?
3. Warum zeigt die Matrix den Fehler zwischen zwei Regeln nicht?
4. Das Management will bis Freitag „100 % Abdeckung“. Was ist am wahrscheinlichsten, wenn das das einzige Maß ist?
5. Wenn die Abdeckung es nicht sagt, woher weißt du, ob die Tests gut sind?

Erstellt von Ivo Gergov im Rahmen der Kampagne von Evo Tech für zugängliche Programmierausbildung ·