c't 4/2020
S. 116
Wissen
Mutations-Tests
Bild: Albert Hulm

Mutantenjagd

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, die einer simplen Coverage-Analyse entgehen.

Von Pina Merkert

Automatische Tests prüfen Funktionen oder auch ganze Programme mit wohlüberlegten Beispielen, ob sie korrekt arbeiten [1]. 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: