Ein Rabatt, der bei 100 Euro fehlt
Softwaretesten heißt, ein Programm mit ausgewählten Eingaben zu starten und zu prüfen, ob es das Richtige tut. So finden Sie Fehler, bevor Kundinnen und Kunden sie finden.
Ein Webshop gibt ab 100 Euro Bestellwert zehn Prozent Rabatt. Ein Warenkorb mit genau 100 Euro bekommt ihn nicht. Bis jemand es merkt, haben Hunderte so bestellt.
Am Ende dieser Lektion
Notiz
Ich kann sagen, welche Art von Test welche Art von Fehler findet.
Schlüsselwörter
| Begriff | Was er bedeutet | Beispiel |
|---|---|---|
| Fehlerzustand | die falsche Stelle im Code | > statt >= |
| Fehlerwirkung | das falsche Verhalten, das Nutzende sehen | |
| Testfall | eine Eingabe und das Ergebnis, das Sie dafür erwarten | |
| Teststufe | die Größe des Teils, den ein Test prüft | |
| Fehlerbericht | die Meldung, die einen Fehler beschreibt |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Fehlerzustand und Fehlerwirkung sind nicht dasselbe
Ein Fehlerzustand ist die falsche Stelle im Code. Eine Fehlerwirkung ist das, was dadurch schiefgeht und was jemand sieht.
Beides ist nicht dasselbe. Ein Fehlerzustand kann lange im Code liegen, ohne dass jemand etwas merkt. Erst eine bestimmte Eingabe weckt ihn und macht aus ihm eine Fehlerwirkung.
Ein Beispiel: der Rabatt im Webshop
| Frage | Antwort im Beispiel |
|---|---|
| Die Regel | Ab 100 Euro gibt es zehn Prozent Rabatt |
| Der Fehlerzustand | Im Code steht > 100 statt >= 100 |
| Die Fehlerwirkung | Ein Warenkorb mit genau 100 Euro zahlt 100 statt 90 |
| Eine Eingabe, die nichts verrät | 50 Euro oder 200 Euro: beide stimmen |
| Der Testfall, der ihn findet | Eingabe 100, erwartet 90 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Den Fehler selbst auslösen
Legen Sie im Lab einen Ordner an und darin eine kleine Datei preis.py mit genau diesem Rabatt. Danach rufen Sie die Funktion zweimal auf.
Sagen Sie vor jedem Aufruf voraus, was herauskommen soll. Vergleichen Sie es dann mit dem, was das Terminal ausgibt.
Einen Ordner anlegen
mkdir -p ~/testlaborHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
In den Ordner wechseln
cd ~/testlaborHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Die Datei preis.py schreiben
printf 'def preis_mit_rabatt(preis):\n if preis > 100:\n return preis - preis // 10\n return preis\n' > preis.pyHier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Mit genau 100 Euro aufrufen
python3 -c "from preis import preis_mit_rabatt; print(preis_mit_rabatt(100))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Mit 200 Euro aufrufen
python3 -c "from preis import preis_mit_rabatt; print(preis_mit_rabatt(200))"Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.
Der Fehler zum Ändern
# Die Regel: ab 100 Euro gibt es zehn Prozent Rabatt.
def preis_mit_rabatt(preis):
if preis > 100:
return preis - preis // 10
return preis
print(preis_mit_rabatt(100))
print(preis_mit_rabatt(200))
# Ändern Sie > in >= und starten Sie noch einmal.
Ein häufiger Fehler
Warnung
Viele glauben, bestandene Tests zeigten, dass ein Programm fehlerfrei ist. Das stimmt nicht. Ein Test zeigt nur, dass ein Fehler da ist, wenn er ihn findet. Er beweist nie, dass keiner mehr da ist.
Vier Teststufen prüfen vier verschiedene Größen
Ein Programm besteht aus Teilen. Eine Teststufe sagt, wie groß der Teil ist, den ein Test prüft.
Der Unit-Test prüft eine einzelne Funktion. Der Integrationstest prüft, ob zwei Teile zusammenarbeiten. Der Systemtest prüft das ganze Programm. Der Abnahmetest prüft, ob es für die Auftraggebenden brauchbar ist.
Ein Beispiel: vier Stufen im Webshop
| Teststufe | Was geprüft wird | Ein Fehler, den sie findet |
|---|---|---|
| Unit-Test | Die Funktion für den Rabatt | Bei genau 100 Euro fehlt der Rabatt |
| Integrationstest | Warenkorb und Zahlung zusammen | Die Zahlung bekommt Euro statt Cent |
| Systemtest | Der ganze Shop mit Datenbank | Bei vielen Bestellungen antwortet er nicht mehr |
| Abnahmetest | Der Shop aus Sicht der Einkaufsabteilung | Die Rechnung nennt keine Umsatzsteuer |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.
Späte Fehler sind teuer
Ein Fehler beim Schreiben ist in Minuten behoben. Derselbe Fehler nach der Auslieferung braucht Fehlerbericht, Suche, Korrektur, neuen Test und neue Version.
Die Zahlen der Tabelle sind ein Beispiel, kein Naturgesetz. Sie zeigen die Richtung: Früh finden spart Arbeit.
Beispielrechnung: Aufwand bei 60 Euro je Stunde
| Fehler entdeckt | Arbeitsstunden | Kosten in Euro |
|---|---|---|
| Beim Schreiben des Codes | 1 | 60 |
| Im Integrationstest | 5 | 300 |
| Im Systemtest | 10 | 600 |
| Nach der Auslieferung | 50 | 3000 |
Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.