Automatische Mutation-Tests mit dem Python-Modul MutMut
Mit automatisiert verbuggtem Quelltext ĂĽberprĂĽfen Mutation-Tests die Qualität bestehender Tests. Das Âoffenbart LĂĽcken und ungeprĂĽfte Randfälle.
(Bild: Albert Hulm)
Automatische Tests prüfen Funktionen oder ganze Programme mit wohlüberlegten Beispielen, ob sie korrekt arbeiten. Im Idealfall durchlaufen sie dabei jede einzelne Zeile des Quelltexts. Doch auch in einem so getesteten Programm können sich Fehler verstecken. Ein Beispiel:
def elected(yes_ratio: float) -> bool:
return yes_ratio > 0.5
Die Funktion liefert fĂĽr eine Wahl die Entscheidung, ob die Zustimmung fĂĽr eine einfache Mehrheit reicht. Ein Entwickler hat fĂĽr diese Funktion folgende Tests geschrieben, die 100 Prozent der Zeilen durchlaufen:
def test_elected():
assert elected(0.6)
def test_not_elected():
assert not elected(0.2)
Das Problem dabei: Keiner der Tests überprüft den Randfall elected(0.5). Für 50 Prozent liefert sie nämlich False, obwohl True richtig wäre. Aber wie findet man ungenügende Tests wie diese?