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
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?

Das war die Leseprobe unseres heise-Plus-Artikels "Automatische Mutation-Tests mit dem Python-Modul MutMut ". Mit einem heise-Plus-Abo können Sie den ganzen Artikel lesen.