Ich bin gerade bei der Arbeit auf ein interessantes Problem bei der kollaborativen Codierung gestoßen.
Ich habe einige Unit- / Funktions- / Integrationstests geschrieben und neue Funktionen in Anwendungen implementiert, an denen ~ 20 Entwickler arbeiten. Alle Tests bestanden und ich habe den Code eingecheckt. Am nächsten Tag aktualisierte ich mein Projekt und bemerkte (zufällig), dass einige meiner Testmethoden von anderen Entwicklern gelöscht wurden (Probleme am Ende zusammenführen). Neuer Anwendungscode wurde nicht berührt.
Wie kann ich ein solches Problem automatisch erkennen? Ich meine, ich schreibe Tests, um automatisch zu überprüfen, ob mein Code noch funktioniert (oder nicht gelöscht wurde). Wie mache ich dasselbe für Tests?
Wir verwenden Java, JUnit, Selenium, SVN und Hudson CI, wenn es darauf ankommt.
Antworten:
Ich bin mit Hudson for CI nicht besonders vertraut, aber mein CI-Tool kann auch die Codeabdeckung berechnen. Wenn Sie einen Prozess schreiben können, der Sie benachrichtigt, wenn die Codeabdeckung abnimmt, ist dies ein guter Indikator dafür, dass ein Test entfernt wurde. Es würde Ihnen auch sagen, ob neuer Code ohne Tests hinzugefügt wurde. Nicht das, wonach Sie gefragt haben, aber schön zu wissen.
quelle
Es gelten die üblichen Haftungsausschlüsse: Wir entwickeln eine technische Lösung für ein soziales Problem. Dies ist jedoch ein Problem der Projekthygiene. Es ist also ein bisschen so, als würde man sagen, dass Toiletten eine technische Lösung für ein soziales Problem sind.
Lassen Sie den RSS-Feed von Hudson übergeben. Zählen Sie die Anzahl der Tests im Hudson-Bericht. Wenn es sich verringert, ertönt ein Alarm. Haben Sie ein Auto-Da-Fe, wenn der Alarm ertönt.
Der Schuldige des Commits kann identifiziert und bestraft werden. Ihr Problem wird verschwinden.
Aufgrund dieser Lösung können andere Probleme auftreten. Bei anhaltendem Schwindel wenden Sie sich bitte an Ihren Arzt.
quelle
Organisatorischer Ansatz
Verfügen Sie über eine Richtlinie, nach der eine Person Tests löschen muss, um mit dem Testersteller zu sprechen. Normalerweise würden Sie Tests nur löschen, wenn Sie einige getestete Funktionen ablehnen, und das kommt nicht sehr oft vor.
Technische Ansatz
Dies ist eher ein Kontrollfreak-Ansatz, aber Sie können einen separaten Test durchführen, der den Quellcode auf das Vorhandensein aller Tests überprüft, die Sie überprüfen möchten. Möglicherweise können Sie auch eine Schnittstelle zu Hudson herstellen und die Liste der ausgeführten Tests abrufen.
quelle
Ähnlich wie bei Art ..
Kommentare Verwenden Sie zunächst gut kommentieren. Für jede Methode; Vergessen Sie nicht, die erwarteten Ein- und Ausgaben, eine kurze Beschreibung für komplexere Funktionen und Ihren Namen anzugeben.
Richtlinien Dies unterstreicht jedoch wirklich, dass mehr Kommunikation zwischen den Entwicklern erforderlich ist. Mannschaft. Es sollten Richtlinien für die Zusammenarbeit vorhanden sein ... oder zumindest mit Ihrem Projekt sprechen. Manager und bitten Sie ihn, dies im Team zu klären.
Richtige Verwendung von SVN Sie können auch Ihre Klassen und Methoden aufschreiben und nachverfolgen. Auch wenn Sie SVN verwenden, hoffe ich aufrichtig, dass diese Löschungen als Änderungen nachverfolgt werden, separat vermerkt werden und gute Gründe haben.
Ohne ein spezielles Programm zu schreiben, können Sie auch nur diff vergleichen. Dateien in SVN, um Änderungen an Ihren Methoden zu verfolgen.
quelle
Das Gleiche kann auch für den tatsächlichen Code passieren, und Sie werden es erst erfahren, wenn Sie feststellen, dass Ihre Änderung nicht mehr vorhanden ist.
Abgesehen davon ist es schwierig, Code, der entfernt wird, als eine schlechte Sache zu identifizieren, da Sie sehr oft Code / Funktionen usw. manuell entfernen und aufgrund dessen die Anzahl der Tests ebenso sinken kann wie bei einer anderen Person.
quelle