Ich bin Softwareingenieur bei einem mittelständischen Unternehmen. Wir haben eine ziemlich robuste Testplattform, die auf TeamCity läuft. Es führt Unit-Tests bei jedem Check-In und einen täglichen Unit-Test / BVT-Lauf durch.
Das Problem ist - wir haben viele defekte Komponententests.
Sehr oft spreche ich die Sinnlosigkeit von Komponententests an, wenn sie ständig brechen und nicht gewartet werden. Wenn Sie nicht sehen können, ob eine Änderung eine Regression verursacht hat, wird der größte Teil des Werts einer Unit-Testing-Plattform entfernt.
Ich würde gerne einen Samen anpflanzen lassen, der eine Kultur der guten Gewohnheiten schafft - Tests reparieren, wenn sie gebrochen sind, sie als wertvoll ansehen und die Festlegung von Tests zusammen mit anderen Arbeiten priorisieren.
Ich habe es mit Bestechung (Backwaren!) Versucht, einfach gefragt und mit Teamleitern gesprochen. Jeder sagt, dass es eine gute Idee ist, aber ich sehe, dass ich der einzige bin, der etwas dagegen unternimmt.
Was ist der beste Weg, um andere zu ermutigen, ihre Tests zu korrigieren, und Prioritäten für die Korrektur von Tests innerhalb ihrer Sprints zu setzen?
Wenn es einen weniger subjektiven Weg gibt, dies zu fragen, würde ich gerne irgendwelche Tipps annehmen.
quelle
Antworten:
Stellen Sie sicher, dass Sie nichts veröffentlichen können, ohne die Tests zu korrigieren.
Die Tatsache ist, dass Sie keine kontinuierliche Integration durchführen, wenn Ihr Build mehr als 15 Minuten am Stück unterbrochen ist (und dies schließt auch fehlgeschlagene Tests ein) .
Die "nukleare Option" besteht darin, dass Ihr Quellcodeverwaltungsserver Commits / Checkins von anderen Benutzern als denen ablehnt, die den Build abgebrochen haben. Natürlich muss ein Administrator in der Lage sein, dies vorübergehend außer Kraft zu setzen, wenn die betreffende Person in den Urlaub fährt - aber wenn jeder weiß, dass das gesamte Team durchgedreht ist, bis sie ihre Tests repariert hat, wird dies verdammt schnell behoben.
Eine gute Richtlinie (die noch besser ist, wenn sie automatisiert ist) besteht darin, die Quelle nach 15 Minuten fehlgeschlagener Erstellung auf die letzte bekannte stabile Festschreibung zurückzusetzen. Mit anderen Worten, wenn Sie das Problem nicht beheben können oder nicht wissen, was den Build oder Test zum Absturz gebracht hat, setzen Sie es zurück und arbeiten Sie lokal, bis es behoben ist. Lassen Sie niemals andere Entwickler mit dem Daumen drehen, während Sie an einem schleifen Problem, das ihnen egal ist.
PS Wenn bereits viele Tests fehlgeschlagen sind, können Sie in CI einen "Trailing Threshold" verwenden. Richten Sie es so ein, dass der Build nur dann fehlschlägt, wenn mehr Testfehler als beim letzten Mal vorliegen. Zusammen mit einer Erfassungsregel wird dies die Entwickler zwingen, die Testsituation zu verbessern, wenn sie weiterarbeiten möchten.
PPS Mir ist klar, dass dies für manche drakonisch erscheint, aber es hängt alles von Ihrer Kultur ab. Wenn Sie zu einem Punkt kommen, an dem die Leute den Build einfach nicht kaputt lassen oder die Tests fehlschlagen (mein Team macht das fast nie, obwohl ich sie gelegentlich daran erinnern muss), müssen Sie nicht mit den strengsten Regeln fortfahren. Obwohl IMO sollten Sie immer den Build auf einem defekten Unit-Test scheitern. Integrationstests / Browsertests können manchmal fehlschlagen.
quelle
Fehlgeschlagene Komponententests sind nicht das Problem. Sie sind ein Symptom .
Das eigentliche Problem liegt in der Kultur. Du musst vorsichtig sein: hier sind Drachen . Sie können die Kultur nicht selbst ändern, und wenn Sie das quietschende Rad sind, werden Sie letztendlich zu Ausgestoßenen. Buchstäblich.
Ich schlage vor, wenn Sie versuchen, eine hochrangige Person zu finden, die sich für die Sache einsetzt und den Weg weist. Wenn dies fehlschlägt, versuchen Sie es in einer allgemeinen Entwicklerversammlung, ohne mit dem Finger zu zeigen oder Namen zu nennen. Eine andere Alternative besteht darin, die Verantwortung für die ordnungsgemäße Ausführung eines Auftrags selbst zu übernehmen: Legen Sie bei jedem Check-in weitere Tests fest. Behalten Sie ein Diagramm an der Wand, das zeigt, wie viele Tests im Laufe der Zeit fehlschlagen. Andere werden es sehen: Vielleicht werden sie sich dafür entscheiden.
Es gibt keine einfache Antwort.
quelle