Lässt es sich mit cremefarbenem Papier, einer Tönung, mehr Kontrast oder größerer Schrift besser lesen? Wählen Sie Ihre Farben und Ihre Schrift, einmalig für alle Seiten.

Kostenlose Lektion

Äquivalenzklassen und Grenzwerte

Nach dieser Lektion: Ich kann Testfälle aus Äquivalenzklassen und Grenzwerten auswählen.

Lektion, 55 Min.4 BefehleLab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Wie viele Testfälle braucht ein Fahrpreis?

Äquivalenzklassen und Grenzwerte sind zwei Wege, aus unendlich vielen Eingaben wenige gute Testfälle auszuwählen. Sie finden damit die meisten Fehler mit wenig Aufwand.

Ein Verkehrsverbund hat vier Preise nach Alter. Die Fahrkartenautomaten nehmen jede Zahl von 0 bis 120. Niemand kann 121 Fälle prüfen. Man braucht eine Auswahl.

Am Ende dieser Lektion

Notiz

Ich kann Testfälle aus Äquivalenzklassen und Grenzwerten auswählen.

Schlüsselwörter

BegriffWas er bedeutetBeispiel
Äquivalenzklasseeine Gruppe von Eingaben, die das Programm gleich behandelt
Grenzwertder letzte und der erste Wert an der Kante einer Klasse17 und 18
Testtabelleeine Liste aus Eingaben und erwarteten Ergebnissen
ungültige Eingabeein Wert, den das Programm ablehnen muss-1
Stichprobeein einzelner Wert aus einer Klasse

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Eine Äquivalenzklasse fasst gleich behandelte Eingaben zusammen

Eine Äquivalenzklasse ist eine Gruppe von Eingaben, bei denen das Programm dasselbe tut. Wenn 8 richtig behandelt wird, wird 12 sehr wahrscheinlich auch richtig behandelt.

Aus jeder Klasse reicht deshalb eine Stichprobe. Auch die ungültigen Eingaben bilden Klassen, zum Beispiel Zahlen unter 0.

Ein Beispiel: Klassen des Fahrpreises

KlasseAlterPreis in CentStichprobe
Ungültig, zu kleinunter 0abgelehnt-5
Kinder unter 60 bis 503
Kinder und Jugendliche6 bis 1715012
Erwachsene18 bis 6430040
Seniorinnen und Senioren65 und älter20070

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Fehler sitzen an den Kanten der Klassen

Programmierende vertauschen oft < und <=. Solche Fehler zeigen sich nur an der Kante einer Klasse, nicht in ihrer Mitte.

Testen Sie deshalb die Grenzwerte: den letzten Wert der einen Klasse und den ersten der nächsten. Für den Übergang von 17 auf 18 sind das genau diese beiden.

Ein Beispiel: die Grenzwerte des Fahrpreises

GrenzeLetzter Wert untenErster Wert obenErwartete Preise
Kind unter 6560 und 150
Jugend bis 171718150 und 300
Erwachsen bis 646465300 und 200

Die Zellen, die Lernende ausfüllen, bleiben in dieser Vorschau leer.

Den Preis an den Grenzen im Lab prüfen

Im Lab legen Sie fahrpreis.py an. Die Datei enthält absichtlich einen Fehler an einer Grenze. Sie prüfen nur die sechs Grenzwerte aus der Tabelle.

Die Schleife ruft die Funktion sechsmal auf. Vergleichen Sie jede Zeile der Ausgabe mit dem, was die Tabelle erwartet.

Den Ordner anlegen

Befehl
mkdir -p ~/testlabor

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Hineingehen

Befehl
cd ~/testlabor

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die Preisfunktion schreiben

Befehl
printf 'def fahrpreis(alter):\n    if alter < 6:\n        return 0\n    if alter < 17:\n        return 150\n    if alter < 65:\n        return 300\n    return 200\n' > fahrpreis.py

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Die sechs Grenzwerte durchgehen

Befehl
for a in 5 6 17 18 64 65; do python3 -c "from fahrpreis import fahrpreis; print($a, fahrpreis($a))"; done

Hier angezeigt, nicht ausgeführt. Erstellen Sie ein kostenloses Konto, um „Ausführen“ zu drücken und ihn im Terminal Ihres eigenen Labs einzugeben.

Ein häufiger Fehler

Warnung

Viele glauben, mehr Testfälle seien immer besser. Zehn Werte aus derselben Klasse finden aber denselben Fehler wie einer. Wählen Sie lieber eine Stichprobe je Klasse und die Werte an jeder Kante.

Eine Testtabelle im Code

Code: python
def fahrpreis(alter):
    if alter < 6:
        return 0
    if alter < 17:
        return 150
    if alter < 65:
        return 300
    return 200

# Ein Testfall ist eine Eingabe und ein erwarteter Preis in Cent.
faelle = [[5, 0], [6, 150], [17, 150], [18, 300], [64, 300], [65, 200]]
for fall in faelle:
    bekommen = fahrpreis(fall[0])
    if bekommen == fall[1]:
        print(fall[0], "ok")
    else:
        print(fall[0], "FEHLER, erwartet", fall[1], "bekommen", bekommen)

Über dieses Lab und seinen Quellcode: Lab „Linux im Alltag“: die dreißig Befehle, die Entwickelnde auswendig tippen

Sie unterrichten eine Gruppe? Weisen Sie dieses Modul Ihren Studierenden zu, mit Handbuch für Lehrende, automatisch geprüften Aufgaben und einem Lab für jede Person.