Antwort

5

Das sind sehr unterschiedliche Tiere, aber beide würden den Wert und die Qualität Ihrer Testsverbessern. Beide Tools tragen dazu bei, dass die Aussage "My code coverage is N%" aussagekräftiger wird.


Hypothesis würden Sie helfen, für eine Funktion im Test alle Arten von Testeingaben im definierten Umfang zu erzeugen.

Normalerweise, wenn Sie eine Funktion testen müssen, stellen Sie mehrere Werte Beispiel versuchen, durch die Code-Coverage-Berichte angetrieben alle Anwendungsfälle und Grenzfälle abzudecken - das so genannt wird „Beispiel Basiertes Testen“. Hypothese dagegen implementiert ein eigenschaftsbasiertes Testen, das eine ganze Reihe unterschiedlicher Eingaben und Eingabekombinationen erzeugt, die dabei helfen, verschiedene häufig auftretende Fehler wie Division durch Null, None, 0, Off-by-One-Fehler usw. zu finden und versteckte Fehler zu finden.

Mutation testing dreht sich alles darum, den Code unter Test zu ändern, während Sie Ihre Tests gegen eine modifizierte Version Ihres Codes ausführen.

Dies hilft wirklich zu sehen, wenn Ihre Tests tatsächlich testen, was sie testen sollen, um den Wert Ihrer Tests zu verstehen. Mutationstests würden wirklich gut aussehen, wenn Sie bereits eine reichhaltige Testcodebasis und eine gute Codeabdeckung haben.


Was mir geholfen ahold diese Konzepte zu bekommen waren dieser Python Podcasts:

+1

Gute Antwort. Property-Based Testing variiert die Eingaben, Mutation Testing variiert den Code. "Mutationstests würden wirklich gut aussehen, wenn Sie bereits eine umfangreiche Testcodebasis und eine gute Codeabdeckung haben." ... die Sie mit Property-Based Testing nutzen können! – clacke