4 Stimmen

Wie man sicherstellt, dass Entwickler ihren Code als Einheit testen

Wie können Sie sicherstellen, dass alle Entwickler in Ihrem Team ihren Code Unit-Tests unterziehen? Code-Coverage-Metriken sind die einzige Möglichkeit, die ich mir vorstellen kann, um dies objektiv zu messen. Gibt es eine andere Möglichkeit?

(Natürlich, wenn Sie wirklich nach TDD dann sollte dies nicht ein Problem sein. Aber nehmen wir mal an, Sie haben einige Entwickler, die TDD noch nicht ganz "verstanden" haben).

12voto

Kibbee Punkte 64039

Dies ist wahrscheinlich eher ein soziales als ein technisches Problem. Erstens: Wollen Sie Unit-Tests, die zu einer 100%igen Codeabdeckung führen, oder können Sie sich mit weniger zufrieden geben und darauf vertrauen, dass Ihre Entwickler Unit-Tests dort einbauen, wo sie wirklich wichtig sind und wo sie Sinn machen. Sie könnten wahrscheinlich eine Art System einrichten, das Tests zur Codeabdeckung durchführt, um sicherzustellen, dass die Unit-Tests einen bestimmten Prozentsatz des Codes abdecken. Aber dann gäbe es immer noch Möglichkeiten, das System zu umgehen. Und es würde immer noch nicht zu einem fehlerfreien Code führen. Aufgrund von Dingen wie dem Halteproblem ist es unmöglich, jeden Pfad im Code abzudecken.

6voto

BC. Punkte 23018

Führen Sie Testabdeckungsberichte automatisch während des Build-Prozesses aus. Wir tun dies mit CruiseControl. Andernfalls müssen Sie tatsächlich überprüfen, was in Ihren Testergebnisberichten getestet wird.

3voto

Yes - that Jake. Punkte 16190

Code Coverage Tools sind mit Sicherheit besser als jede Ad-hoc-Methode, die Sie sich ausdenken könnten. Deshalb gibt es sie ja auch.

Selbst Entwickler, die TDD beherrschen, sind nicht immun gegen Lücken in der Abdeckung. Oft bricht Code, der einen Fehler behebt, einen lateralen Test oder erstellt einen Zweig, den der ursprüngliche Entwickler nicht vorhergesehen hat und von dem der Wartungsentwickler nicht wusste, dass er neu ist.

2voto

MattK Punkte 10147

Eine gute Möglichkeit, Tests zu schreiben, besteht darin, die Verantwortlichkeit zu erhöhen. Wenn ein Entwickler jemand anderem genau erklären muss warum Wenn sie keine Unit-Tests geschrieben haben, ist die Wahrscheinlichkeit größer, dass sie dies tun. Die meisten Firmen bei denen ich gearbeitet habe, haben verlangt, dass jeder vorgeschlagene Commit zu einem Stamm von einem anderen Entwickler vor dem Commit überprüft wird, und dass der Name des Überprüfers in den Commit-Kommentaren angegeben wird. In dieser Umgebung können Sie Ihrem Team sagen, dass sie nicht zulassen sollten, dass der Code die Überprüfung durch Kollegen "besteht", wenn keine Unit-Tests vorhanden sind.

Jetzt haben Sie eine Kette von Verantwortlichkeiten. Wenn ein Entwickler Code festschreibt, ohne den Prüfer zu nennen, können Sie ihn fragen, wer den Code geprüft hat (und wie ich auf die harte Tour gelernt habe, macht es keinen Spaß, seinem Chef "niemand" zu sagen, wenn man ihm diese Frage stellt!). Wenn Sie bemerken, dass Code ohne Unit-Tests übergeben wird, können Sie sowohl den Entwickler und den Code-Reviewer, warum keine Unit-Tests enthalten waren. Die Möglichkeit, diese Frage gestellt zu bekommen, ermutigt Code-Reviewer, auf Unit-Tests zu bestehen.

Ein weiterer Schritt, den Sie unternehmen können, ist die Installation eines Commit-Hooks in Ihrem Versionsverwaltungssystem, der das gesamte Team per E-Mail benachrichtigt, wenn ein Commit durchgeführt wurde, zusammen mit den Dateien und sogar dem Code, aus dem der Commit besteht. Dies sorgt für ein hohes Maß an Transparenz und ermutigt die Entwickler dazu, sich an die Regeln zu halten. Natürlich funktioniert dies nur, wenn es sich an die Anzahl der Übertragungen Ihres Teams pro Tag anpasst.

Dies ist eher eine psychologische als eine technische Lösung, aber sie hat sich für mich bei der Leitung von Software-Teams bewährt. Sie ist auch ein bisschen sanfter als der Gummischlauch, der in einer anderen Antwort vorgeschlagen wurde :-)

1voto

Stephen Punkte 3977

Hier haben wir nur einen Testordner mit einer Paketstruktur, die den eigentlichen Code widerspiegelt. Um eine Klasse einzuchecken, muss sie laut Richtlinie eine zugehörige Testklasse haben, die bestimmte Richtlinien darüber enthält, welche/wie jede Methode getestet werden muss. (Beispiel: Wir verlangen nicht, dass reine Getter und Setter getestet werden)

Ein kurzer Blick in den Prüfungsordner zeigt, wenn eine Klasse fehlt, und die fehlende Person kann mit einem Gummischlauch (oder was auch immer, je nach Ihren Richtlinien) verprügelt werden.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X