Leitende Entwickler und Unit-Tests – Erforderlich?Dürfen sie Lakaien einsetzen?[geschlossen]

StackOverflow https://stackoverflow.com/questions/23688

  •  09-06-2019
  •  | 
  •  

Frage

Sollten leitende Entwickler von Unit-Tests ausgenommen werden – oder sollte es ihnen erlaubt sein, Lakaien für die Implementierung einzusetzen?Wie kann man Menschen, die nicht an die Verwendung von Unit-Testing-Techniken gewöhnt sind, am besten dazu motivieren, diese zu übernehmen?

War es hilfreich?

Lösung

Ich würde argumentieren, dass aus puristischer TDD-Perspektive (d. h.einer, der der Meinung ist, dass Unit-Tests geschrieben werden sollten Vor Implementierung) sollten leitende Entwickler schreiben mehr Unit-Tests als Lakaien, nicht weniger.

Der Grund dafür ist, dass Unit-Tests an erster Stelle stehen und daher genaue Kenntnisse der Codebasis erforderlich sind, um sie zu schreiben.Wenn Sie sie von Lakaien schreiben lassen, lassen Sie im Wesentlichen diejenigen, die am wenigsten über Ihre Domain wissen, die Struktur Ihrer Codebasis diktieren.Für mich klingt das nach einer schlechten Idee.

Andere Tipps

Ich denke, dass es den Sinn von Unit-Tests zunichte macht, wenn Lakaien Unit-Tests für jemand anderen durchführen.Der Programmierer, der Code schreibt, sollte wissen, wie der Code funktionieren soll und welches Verhalten er erwartet.Nur weil jemand anderes dies tut, entbindet dies den ursprünglichen Programmierer nicht von dieser Verantwortung.

(Umständliche Formulierung aufgrund der Geschlechtsneutralität.)

Die Person, die den Test schreibt = definiert, wie das System funktionieren soll = der „Chef“

Die Leute, die die Tests durchführen, sind die sogenannten „Lakaien“

Klingt nach einem alten Hund, der keine neuen Tricks mag.Und wie man so schön sagt: Es ist schwer, sie dazu zu bringen, sich zu ändern ...TFD (Test-First-Entwicklung) macht sehr viel Spaß, wenn man erst einmal damit anfängt. Vielleicht gibt es einen internen eintägigen Workshop zu TDD oder TFD, an dem das gesamte Team beteiligt ist.

Sollten leitende Entwickler von Unit-Tests ausgenommen werden?

Absolut nicht.Dann sollten sie überhaupt keine leitenden Entwickler sein.Ältere Entwickler sollten Anführer sein, die den Weg weisen. Die Vorstellung, dass Lakaien dies tun, scheint absurd – warum sollte man sich dann überhaupt die Mühe machen, zu testen?

Ich denke, eine Möglichkeit, mit diesen Situationen umzugehen, wäre, dass der leitende Entwickler den Großteil der Unit-Tests schreiben könnte.Das bedeutet, dass sie die Art und Weise des Programms definieren und gestalten sollen arbeiten.Die Lakaien können dann den Code schreiben, der zum Test passt, und dabei die Designphilosophien des älteren Mannes lernen.

Teil I (Leitende Entwickler und Unit-Tests)

Wenn ich an TDD oder Test Driven Design denke, dienen die Unit-Tests dazu, das auszutreiben evolutionäres Design des Systems, was hoffentlich eine kontinuierliche Verbesserung gewährleistet.
Das Schreiben des Tests prägt den Code oder hebt Probleme mit einer bereits getroffenen Entscheidung hervor, was hoffentlich zu einem Refactoring-Prozess führt, um die Qualität des Designs zu verbessern.

Meiner Erfahrung nach ist der leitende Entwickler normalerweise die Person mit der größten Erfahrung und den meisten Fähigkeiten, was bedeutet, dass er diese Refactoring-Möglichkeiten besser erkennen sollte.(Erkennen Sie die Code-Gerüche)

Mir fallen spontan drei Situationen ein, in denen jemand anderes die Tests für Sie schreibt könnte akzeptabel sein.

  1. Akzeptanztests/Kundentests/End-to-End-Tests.Nennen Sie sie, wie Sie wollen, aber ich meine die Tests, die am Dateneingabepunkt beginnen (Webdienst, Webseite, Eingabe auf dem Anwendungsbildschirm) und den gesamten Stapel des Systems durchlaufen (zu einer Datenbank, Aufruf eines anderen Dienstes usw.). zurück zum Bildschirm mit den Eingabeergebnissen usw.).Dies könnte von jemandem geschrieben werden, der die Details der einzelnen Einheiten, die in den Tests geübt werden, nicht umsetzt.
  2. Gepaarte Programmierung (Ping-Pong-Muster) -

    A schreibt einen neuen Test und sieht, dass er fehlschlägt.
    B implementiert den Code, der für den Test erforderlich ist.
    B schreibt den nächsten Test.
    A setzt es um.

  3. Fehlerbehebungstests – Wenn ein Fehler gefunden wird, empfiehlt es sich oft, einen fehlgeschlagenen Test zu schreiben, der den Fehler aufdeckt.Sobald dieser Test durchgeführt wurde, ist es durchaus möglich, dass jemand den Code implementiert, der den Test erfolgreich macht.Ich glaube nicht, dass dies eine besonders gute Idee ist, da das Schreiben des Tests, der aufgrund des Fehlers fehlschlägt, oft Aufschluss darüber gibt, wie eine Lösung erstellt werden könnte.

Kurz gesagt, meine Antwort auf Ihre erste Frage wäre: Nein, ein leitender Entwickler sollte nicht vom Schreiben von Unit-Tests befreit werden.

Teil II (Menschen motivieren, Tests zu schreiben)

Damit hatte ich in der Vergangenheit Probleme.Obwohl ich jetzt versuche, TDD so oft wie möglich durchzuführen, dauerte es ein paar Monate, bis ich erkannte, dass das Schreiben von Tests einen echten Nutzen bringt.
Ich glaube, dass es ziemlich schwierig ist, anderen die Vorteile von TDD und Unit Testing zu zeigen.Erst wenn die Person selbst diesen „Aha“-Moment erlebt, in dem TDD/Unit-Tests eine Feinheit in ihrem Code hervorgehoben haben, die sie andernfalls möglicherweise übersehen hätte oder die ihr geholfen hätte, einen Fehler in kurzer Zeit zu beheben, wird sie Sehen Sie sich die Vorteile an.Es kann ziemlich schwierig sein, sie an diesen Punkt zu bringen.
Persönlich bin ich durch Paarprogrammierung im oben genannten Ping-Pong-Muster dorthin gelangt, habe mit einem erfahrenen TDDer zusammengearbeitet und gesehen, wie sich der Code, den wir geschrieben haben, um eine nicht triviale Funktionalität zu lösen, zu etwas entwickelt hat, das man eine elegante Lösung nennen könnte.Anschließend gelangt diese Arbeit durch die Qualitätssicherung in die Live-Umgebung, ohne dass irgendwelche Mängel festgestellt werden.

Kurz gesagt, ich denke, dass die Zusammenarbeit mit einem erfahrenen Programmierer, der bereits von den Vorteilen überzeugt ist, die sich aus dem Schreiben von Unit-Tests ergeben, eine großartige Möglichkeit ist, jemanden zu motivieren, Unit-Tests zu schreiben.

Absolut nicht;Zumindest weil es so viel einfacher ist, Tests für selbst entwickelten Code zu schreiben.Für alle Entwickler ist es jedoch wichtig, unabhängig vom Dienstalter, ihren gesamten Code einem Unit-Test zu unterziehen.Wenn sie sich weiterentwickeln und wissen, dass ihr Code testbar sein muss, werden die Früchte ihrer Arbeit viel größer sein.

Wenn Sie Entwickler zum Unit-Testen motivieren möchten, verdeutlichen Sie einfach die Vorteile und die Zeitersparnis, die sich auf lange Sicht ergibt.Wenn sie sich angewöhnen, Unit-Tests für ihren Code zu schreiben, werden sie dies bald ganz selbstverständlich tun.

Wenn ein leitender Entwickler keine eigenen Tests durchführt, ist er kein leitender Entwickler.

Mangelnde Testbereitschaft ist fast immer ein Zeichen von Faulheit oder Unfähigkeit (oder beidem) und beides ist keine Eigenschaft, die man bei einem erfahrenen Entwickler finden sollte.

Das einzige Szenario, das ich mir vorstellen kann, in dem es für einen leitenden Entwickler angemessen wäre, jemand anderen seine Unit-Tests schreiben zu lassen, wäre der Fall, in dem ein neuer Junior-Mitarbeiter auf den neuesten Stand gebracht wird.Es könnte eine gute Aufgabe sein, beim Schreiben von Code erste Erfahrungen zu sammeln.

Einer der größten Vorteile von Unit-Tests ist das unmittelbare Feedback, das Ihnen sagt, wie gut Sie abschneiden.Wenn Sie die Implementierung Ihrer Tests auslagern, erhalten Sie keine Rückmeldung, ob Ihr Design funktioniert oder nicht.Und die Leute, die mit einem schlechten Design zu kämpfen haben, haben keine Möglichkeit, es zu korrigieren.

Wenn Sie ein leitender Entwickler sind, liegt das zum Teil daran, dass Sie genug Erfahrung haben, um zu wissen, dass Unit-Tests eine großartige Entwicklungspraxis sind, die hilfreich ist Du bessere Software produzieren

Ich schließe mich nicht der TDD-Religion an, aber ich sehe einen großen Wert in Unit-/usw.-Tests und mache sie oft, während ich programmiere.

Der Punkt ist jedoch: Niemand Wirklich Der Benutzer weiß, was der Code bewirken soll, außer der Person, die ihn geschrieben hat, und oft weiß er es auch nicht einmal.

Vor diesem Hintergrund werden Sie keinen großen Nutzen daraus ziehen, wenn „Lakaien“ die Tests schreiben, weil

  1. Sie verfügen nicht über ein umfassendes Verständnis aller subtilen Eckfälle
  2. Der Code wird ihnen egal sein, weil sie nichts in ihn investiert haben
  3. Sie werden das Gefühl haben, wie Idioten behandelt zu werden.

Selbst wenn sie Idioten SIND, möchte niemand wie einer behandelt werden.Wenn Sie möchten, dass Ihre Mitarbeiter kündigen, ist dies eine gute Möglichkeit, sie zu ermutigen.

Niemand sollte davon ausgenommen werden, Unit-Tests zu schreiben.Alle Entwickler müssen in der Lage sein, sie zu schreiben, und auch Komponententests sollten im Rahmen Ihres Codeüberprüfungsprozesses überprüft werden.Die Komplexität der Unit-Tests hängt normalerweise von den Fähigkeiten des Entwicklers ab – wobei der komplexere Code an erfahrenere Entwickler geht und daher auch die komplexere und größere Anzahl von Unit-Tests an sie geht.

Wenn Sie einen oder mehrere Entwickler haben, die nicht in der Lage sind, sich anzupassen, sollten Sie versuchen, ihnen persönliche Unterstützung zu geben und die Komponententests gemeinsam mit den Entwicklern durchzuführen, bis er oder sie anfängt, den Dreh raus zu bekommen.Es gibt nichts, was technisch so komplex ist, dass jemand, der Code schreiben kann, nicht in der Lage wäre, Unit-Tests durchzuführen.Wenn dies der Fall zu sein scheint, ist dies wahrscheinlich ein Vorbote eines größeren Problems mit den Fähigkeiten dieser Person.

Ich persönlich denke, dass es für Tester auch hilfreich ist, zumindest die Unit-Tests zu verstehen, die Teil des Projekts sind.Die Zusammenarbeit zwischen Entwicklern und Testern ist für die korrekte Diagnose und Behebung von Fehlern sehr wichtig.Ich würde nicht erwarten, dass sie sie schreiben müssen, aber sie sollten in der Lage sein, mit einem Entwickler zusammenzusitzen und das Konzept zu besprechen, warum/wie ein Test fehlschlägt oder nicht.

Nun, ich würde ja sagen, aber nur, wenn der Lakai dann die Behebung gefundener Fehler dem Senior überlassen darf.Das wird ihn lehren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top