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.

Lesezeit: 4 Min.
In Pocket speichern
vorlesen Druckansicht Kommentare lesen

(Bild: Albert Hulm)

Von

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?

Immer mehr Wissen. Das digitale Abo für IT und Technik.

  • Zugriff auf alle Inhalte von heise+
  • exklusive Tests, Ratgeber & Hintergründe: unabhängig, kritisch fundiert
  • c't, iX, Technology Review, Mac & i, Make, c't Fotografie direkt im Browser lesen
  • einmal anmelden – auf allen Geräten lesen - monatlich kündbar
  • erster Monat gratis, danach monatlich 9,95 €
  • Wöchentlicher Newsletter mit persönlichen Leseempfehlungen des Chefredakteurs
GRATIS-Monat beginnen Jetzt GRATIS-Monat beginnen Mehr Informationen zu heise+