Zum Inhalt
wannacode

Testarten

Kurz gesagt: Die Stufe sagt, wo du testest, die Art sagt, was und wie. Funktionales Testen prüft, was das System tut, nichtfunktionales, wie gut. Die Blackbox schaut auf das Verhalten, die Whitebox auf die Struktur. Nach einer Korrektur lässt du einen Bestätigungstest für den Fehler laufen und Regressionstests für alles drumherum.

Problem

Sie haben eines repariert und ein anderes kaputt gemacht

Ein Kunde beschwert sich: Eine Bestellung von genau 50,00 € zahlt Lieferkosten. Der Entwickler korrigiert den Vergleich, der Tester probiert 50,00 € und sieht 0,00 €. Behoben.

Am nächsten Tag sieht die Buchhaltung, dass der Gutscheincode jetzt doppelt abgezogen wird. Die Korrektur hat die Funktion für den Warenkorbwert geändert, die auch der Gutscheincode nutzt. Niemand ließ die Tests des Gutscheincodes laufen, weil „wir haben die Lieferung angefasst“.

Die Idee

Die Art ist das Was und Wie

Die vorige Lektion sagte, wo du testest: Komponente, Integration, System, Abnahme. Die Testart sagt, was du prüfst und woher die Testfälle kommen:

  • Funktionales Testen: was das System tut. Die Gebühr bei 50,00 €, die Ablehnung eines leeren Warenkorbs.
  • Nichtfunktionales Testen: wie gut. Geschwindigkeit, Barrierefreiheit, Informationssicherheit, Zuverlässigkeit: die acht Merkmale der ISO/IEC 25010 außer der funktionalen Eignung.
  • Blackbox: Die Testfälle kommen aus der Spezifikation und dem Verhalten. Der Code wird nicht angesehen.
  • Whitebox: Die Testfälle kommen aus der Struktur: den Zweigen der Funktion, den Pfaden durch den Prozess.

Arten lassen sich mit Stufen kombinieren. Ein funktionaler Blackbox-Test auf der Systemstufe, ein nichtfunktionaler Test auf der Komponentenstufe: Jedes Paar ist möglich.

Genauer, für Neugierige

Im ISTQB CTFL v4.0.1 stehen die Arten in Abschnitt 2.2.2: funktional, nichtfunktional, Blackbox und Whitebox. Der Lehrplan sagt ausdrücklich, dass sich jede Art auf jeder Stufe durchführen lässt, mit anderem Schwerpunkt. Die Blackbox- und Whitebox-Verfahren (Äquivalenzklassen, Grenzwerte, Zweigüberdeckung) stehen im Modul über Testentwurf.

Probier es aus

Was für ein Test ist das?

1. Der Tester probiert 49,99 €, 50,00 € und 50,01 € und schaut auf die Liefergebühr. Den Code hat er nicht geöffnet.
2. Der Entwickler sieht, dass die Lieferfunktion drei Zweige hat, und schreibt für jeden einen Test.
3. Wie schnell sich der Warenkorb öffnet, wird gemessen, während 200 Kunden gleichzeitig einkaufen.
4. Ein Kunde mit Screenreader geht den ganzen Bestellpfad nur mit der Tastatur durch.

Die Idee

Nach der Korrektur: zwei Fragen

Wenn ein Fehler behoben ist, lässt du Tests aus zwei verschiedenen Gründen laufen:

  1. Bestätigungstest: Ist der Fehler behoben? Du lässt den Test laufen, der ihn gezeigt hat, mit genau denselben Schritten. 50,00 € → 0,00 €.
  2. Regressionstest: Hat die Korrektur etwas kaputt gemacht, das früher funktionierte? Du lässt die Tests für alles laufen, was die Änderung erreichen kann. Der Warenkorbwert wird vom Gutscheincode, vom Stammkundenrabatt und von der Zahlung genutzt. Also auch deren Tests.

Ein Fehler in etwas, das früher funktionierte, heißt Regression. Sie ist die gemeinste Sorte, weil niemand dort hinschaut: „wir haben die Lieferung angefasst, nicht den Gutscheincode“.

Genauer, für Neugierige

Bestätigungs- und Regressionstest stehen im CTFL-Abschnitt 2.2.3. Der Regressionstestsatz wächst mit jeder Version, deshalb empfiehlt der Lehrplan, ihn zu automatisieren und mit einer Auswirkungsanalyse daraus auszuwählen: Welche Teile hängen vom geänderten ab? Die Rückverfolgbarkeitsmatrix aus dem Modul „Rückverfolgbarkeit“ beantwortet genau diese Frage.

Probier es aus

Was lässt du nach der Korrektur laufen?

1. Die Lieferung für genau 50,00 € wurde korrigiert. Welchen Test lässt du zuerst laufen?
2. Die Korrektur ändert die Funktion für den Warenkorbwert. Was muss außerdem laufen?
3. Warum sind Regressionstests die ersten Kandidaten für die Automatisierung?

Die Idee

Das System, das schon läuft

Der Shop ist live. Von nun an ist jede Änderung in einem laufenden System mit echten Kunden und Daten. Das Testen darin heißt Wartungstest. Es gibt drei Auslöser:

  • Änderung: eine Korrektur, eine neue Regel (die Schwelle wird 60 €), eine aktualisierte Bibliothek, eine neue Version des Betriebssystems;
  • Migration: eine neue Plattform, ein neuer Server, das Übertragen von Daten aus dem alten Shop;
  • Außerbetriebnahme: Die alte App wird abgeschaltet, und die Daten müssen jahrelang lesbar bleiben.

Wie breit du testest, hängt von zwei Fragen ab: wie groß das Risiko der Änderung ist und wie groß das System drumherum. Deshalb beginnt die Wartung immer mit einer Auswirkungsanalyse: Was berührt die Änderung?

Genauer, für Neugierige

Der Wartungstest steht im CTFL-Abschnitt 2.3. Für die Migration nennt der Lehrplan auch die Prüfung der umgewandelten Daten (Datenkonvertierung), und für die Außerbetriebnahme das Testen des Archivs und der Wiederherstellungsverfahren, wenn Daten lange aufbewahrt werden müssen.

Übung

Arten und Auslöser

1. Ist es ein Wartungstest? Sage für jede Änderung im laufenden Shop, ob sie ein Grund zum Testen ist, und warum.

1. Der Shop zieht von einem eigenen Server in die Cloud um. Der Code ändert sich nicht.
2. Die alte Mobile-App wird abgeschaltet. Ihre Bestellungen müssen für die Buchhaltung 5 Jahre aufbewahrt werden.
3. Die Schwelle für kostenlose Lieferung wird 60 €.

Test

Teste dich

1. Was ist der Unterschied zwischen einer Teststufe und einer Testart?
2. Was ist eine Regression?
3. Blackbox-Testen ist …
4. Was ist KEIN Auslöser für den Wartungstest?

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