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?
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.
| Anforderungen | 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 €. | 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üft | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Die Referenzmatrix
- A-1: T-1, T-2, T-3
- A-2: T-4, T-6, T-7
- A-3: T-5
- A-4: T-6
Überflüssig: T-1 / T-3 (30 € und 25 € liegen in derselben Gruppe: unter 50 €.); T-4 / T-7 (ein T-Shirt für 20 € und für 30 € mit dem Code sind derselbe Fall: ein nicht reduziertes Produkt mit 10 % Rabatt.)
Jede Anforderung ist abgedeckt, jeder Test gehört zu einer Anforderung. Und trotzdem:
- Kein Test liegt bei 50,00 €. Wird die Grenze zu „über 50 €“, bleibt alles grün.
- A-2 ist durch drei Tests abgedeckt, aber alle handeln von den 10 %. Der Code auf einem reduzierten Produkt wurde nicht geprüft.
- T-6 ist nicht mit A-3 verbunden: 18,00 € kommt auch heraus, wenn die Treue gar nicht funktioniert. Verbindest du ihn, ändert sich die Abdeckung nicht, aber die Matrix beginnt zu lügen.
- Der Warenkorb von 52,00 € mit einem Code steht nirgends, weil die Regel dafür noch nicht entschieden ist.
Zwei der sieben Tests wiederholen andere. Ohne sie ist die Abdeckung immer noch 100 %, und die Löcher sind dieselben.
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?
Test
Teste dich
Verwandte Lektionen
Abschnitt „Verwandte Lektionen“- Baut auf: Die gute Anforderung · Akzeptanzkriterien · Die Rückverfolgbarkeitsmatrix · Wenn sich eine Anforderung ändert
- Aufgaben zum Thema: Rückverfolgbarkeit