Ich betrachte eine kleine (~ 70 kLOC einschließlich generierter) C # -Codebasis (.NET 4.0, etwas Silverlight) mit sehr geringer Testabdeckung. Der Code selbst funktioniert dahingehend, dass er die Benutzerakzeptanztests bestanden hat, aber spröde und in einigen Bereichen nicht sehr gut berücksichtigt ist. Ich möchte mit den üblichen Verdächtigen (NMock, NUnit, StatLight für die Silverlight-Bits) eine solide Unit-Test-Abdeckung um den Legacy-Code hinzufügen.
Mein normaler Ansatz ist es, das Projekt durchzuarbeiten, Unit-Tests und Refactoring durchzuführen, bis ich mit dem Status des Codes zufrieden bin. Ich habe das in der Vergangenheit schon oft gemacht und es hat gut funktioniert.
Dieses Mal denke ich jedoch darüber nach, einen Testgenerator (insbesondere Pex ) zu verwenden, um das Testframework zu erstellen und es dann manuell zu konkretisieren.
Meine Frage lautet: Haben Sie in der Vergangenheit Unit-Test-Generatoren verwendet, als Sie mit der Arbeit an einer älteren Codebasis begonnen haben, und wenn ja, würden Sie diese empfehlen?
Ich befürchte, dass die generierten Tests die semantischen Nuancen der Codebasis übersehen, was zu der gefürchteten Situation führt, Tests zum Zwecke der Abdeckungsmetrik durchzuführen, anstatt Tests, die das beabsichtigte Verhalten im Code klar ausdrücken.
quelle
Antworten:
Ich würde vorschlagen, die Dinge etwas anders zu betrachten. Das Hinzufügen eines neuen Komponententestcodes zu einer vorhandenen Anwendung ohne Zwischenfälle führt möglicherweise nicht zu den besten Ergebnissen. Wenn Sie dies tun, um sich mit der Codebasis vertraut zu machen, oder wirklich Zeit zum Töten haben und Testgeneratoren testen möchten, ignorieren Sie meine Kommentare.
Um pragmatisch zu sein, sollten Sie alle Fehlerlisten durchsehen. Erstellen Sie dann Unit-Tests für jeden der Fehler, um festzustellen, wie er sich verhalten soll. Im Idealfall würden Sie nur dann neuen Code für jeden Fehler hinzufügen, wenn Sie ihn erreichen.
Zeiten zum Hinzufügen eines Unit-Testcodes:
Es ist schwierig, den Wert des Hinzufügens von Komponententests nachträglich zu quantifizieren.
Normalerweise erlaube ich mir nicht, Antworten zu schreiben, die gegen das sind, was der Fragesteller will, aber ich denke, dies ist eine gute Lektion, die ich weitergeben kann.
quelle