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.

Artikel verschenken
In Pocket speichern vorlesen Druckansicht
Automatische Mutation-Tests mit dem Python-Modul MutMut

(Bild: Albert Hulm)

Lesezeit: 8 Min.
Inhaltsverzeichnis

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?