Zum Inhalt
wannacode

Teststufen

Kurz gesagt: Testen ist nicht eine Sache. Auf der Komponentenstufe wird eine Regel für sich geprüft, bei der Integration, ob die Teile miteinander sprechen, auf der Systemstufe das ganze Verhalten, und bei der Abnahme, ob es das ist, was das Geschäft will. Jede Stufe fängt Fehler, die die anderen übersehen.

Problem

Alles besteht, und das Geld stimmt nicht

Die Entwickler des Shops haben 400 Tests für Lieferung und Gutscheincode. Alle bestehen. Der Tester ist den ganzen Bestellpfad durchgegangen: Warenkorb, Lieferung, Zahlung. Alles in Ordnung.

Am ersten Tag nach dem Start überweist die Bank 0,50 € für eine Bestellung von 50,00 €. Der Warenkorb schickt den Gesamtbetrag in Euro, und der Zahlungsdienst liest ihn in Cent. Jeder Teil ist für sich richtig. Der Fehler liegt dazwischen, und kein Test schaut dorthin.

Die Idee

Vier Stufen, vier Fragen

Getestet wird auf mehreren Teststufen. Jede stellt eine andere Frage und fängt andere Fehler:

Stufe Die Frage Im Shop
Komponente Ist eine Regel für sich richtig? Die Lieferfunktion bei 49,99 €, 50,00 € und 50,01 €
Integration Sprechen die Teile richtig miteinander? Der Warenkorb und der Zahlungsdienst: Euro oder Cent?
System Tut das Ganze, was beschrieben ist? Der ganze Pfad: Warenkorb, Gutscheincode, Lieferung, Zahlung, E-Mail
Abnahme Ist das, was das Geschäft will? Lässt es sich nutzen? Die Buchhaltung prüft den Gutscheinbericht

Die Stufen sind nicht besser oder schlechter. Sie sind verschiedene Netze mit verschiedenen Löchern.

Genauer, für Neugierige

Der ISTQB CTFL v4.0.1 beschreibt die Stufen in Abschnitt 2.2.1 und teilt sie in fünf: Komponententest (auch Unit-Test genannt), Komponentenintegrationstest, Systemtest, Systemintegrationstest (der Shop mit dem Paketdienst, mit der Bank) und Abnahmetest. Für jede Stufe nennt der Lehrplan das Testobjekt, die Ziele, die Testbasis (woher die Testfälle kommen), typische Fehlerzustände und wer verantwortlich ist.

Die Idee

Je tiefer, desto genauer zeigt sie hin

Ein Komponententest ruft eine Funktion mit 50,00 € auf und sieht 4,90 €. Du weißt genau, wo der Fehler steckt. Er läuft in Millisekunden und braucht weder Datenbank noch Browser noch Bank.

Ein Systemtest sieht denselben Fehler, aber durch den ganzen Shop. Wenn er fehlschlägt, weißt du noch nicht, ob es die Lieferung ist, der Gutscheincode oder die Seite. Und manche Fälle sind dort schwer zu erreichen: Um 49,99 € zu prüfen, musst du einen Warenkorb für genau so viel füllen.

Das Umgekehrte gilt auch. Ein Komponententest sieht nicht, dass der Warenkorb und die Bank in verschiedenen Einheiten rechnen. Deshalb brauchst du beide Stufen.

Genauer, für Neugierige

Komponententests schreiben meist Entwickler, oft vor dem Code (TDD). Wenn du einen der Programmierkurse gemacht hast, hast du sie dort als Tests mit JUnit, xUnit, pytest oder node:test gesehen. Hier schreiben wir keinen Code: Im Modul über Automatisierung siehst du dieselben Regeln als Komponententests in den vier Sprachen.

Probier es aus

Welche Stufe fängt es?

1. Die Funktion, die die Lieferung berechnet, gibt für einen Warenkorb von genau 50,00 € 4,90 € zurück.
2. Der Warenkorb schickt den Gesamtbetrag in Euro, und der Zahlungsdienst liest ihn in Cent: Der Kunde zahlt 0,50 € statt 50,00 €.
3. Alles wird richtig berechnet, aber der Shop schickt die Bestellbestätigung nur auf Englisch, und die Kunden sind in Bulgarien.

Die Idee

Abnahme ist nicht eine Sache

Der Abnahmetest fragt „lässt es sich nutzen“, aber „nutzen“ heißt für verschiedene Menschen Verschiedenes. Deshalb gibt es mehrere Arten:

  • Benutzerabnahmetest (UAT): Die Menschen, die das System nutzen werden, erledigen damit ihre echte Arbeit. Die Buchhalterin lässt den Monatsbericht laufen.
  • Betrieblicher Abnahmetest: Die Menschen, die das System am Laufen halten werden, prüfen Sicherung, Wiederherstellung, Überwachung und Updates.
  • Vertraglich und regulatorisch: Der Maßstab ist der Vertrag mit dem Auftraggeber oder das Gesetz. Werden Cookie-Einwilligungen gespeichert? Ist alles da, was der Vertrag aufzählt?
  • Alpha und Beta: Menschen außerhalb des Teams probieren das Produkt aus. Alpha findet in der Umgebung des Entwicklers statt, Beta auf der Seite der Kunden, auf ihren Handys und in ihren Netzen.

Der Maßstab für die Abnahme sind die Akzeptanzkriterien der Stories. Deshalb schreiben wir sie gemeinsam mit dem Geschäft, vor dem Code.

Probier es aus

Welche Art von Abnahme?

1. Die Buchhalterin prüft, ob der monatliche Gutscheinbericht ihre Arbeit erledigt.
2. Die Administratoren prüfen, dass die nächtliche Sicherung der Bestellungen funktioniert und der Shop daraus in unter einer Stunde wiederhergestellt werden kann.
3. 200 echte Kunden nutzen die neue Mobile-App zwei Wochen vor dem offiziellen Start von zu Hause aus.
4. Es wird geprüft, dass der Shop die Cookie-Einwilligungen der Kunden speichert, wie es das Datenschutzgesetz verlangt.

Die Idee

Die Stufe ist das Ziel, nicht die Zeit

Man stellt sich die Stufen leicht als Treppe vor: erst Komponente, dann Integration, am Ende die Abnahme. Im Wasserfallmodell ist es oft so. Aber in einem agilen Team können alle vier für eine Story in einer Woche stattfinden: Der Entwickler schreibt einen Komponententest, QA lässt das Szenario auf dem System laufen, und der Product Owner nimmt es bei der Demo ab.

Eine Stufe erkennst du an ihrem Ziel: was du prüfst und wogegen. Nicht daran, wann oder von wem.

Genauer, für Neugierige

Stufen gehören zu den Testarten (die nächste Lektion). Funktionales und nichtfunktionales Testen gibt es auf jeder Stufe: Die Performance einer Funktion liegt auf der Komponentenstufe, die Performance des ganzen Shops mit 200 Kunden auf der Systemstufe.

Übung

Stufen im Shop

1. Welche Stufe fängt den Fehler? Wähle für jeden Fehler die niedrigste Stufe, auf der er sich zeigt.

1. Der Gutscheincode HERBST10 wird am Tag nach seinem Ablauf immer noch akzeptiert.
2. Der Paketdienst hat das Adressformat geändert. Bestellungen erreichen ihn weiterhin, aber mit leerem Stadtfeld.
3. Jeder Schritt funktioniert für sich, aber wenn der Kunde von der Zahlung zum Warenkorb zurückgeht, verschwindet der Gutscheincode.
4. Das Lager sagt, dass mit der neuen Retourenseite die Bearbeitung eines Pakets 6 Schritte statt 2 braucht und sie nicht nachkommen.

Test

Teste dich

1. Welche Stufe beantwortet die Frage „ist das, was das Geschäft will“?
2. Warum genügt der Systemtest allein nicht?
3. Was prüft der Integrationstest?
4. Wer führt den Benutzerabnahmetest meist durch?

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