Ist TDD in kollaborativen Open Source-Projekten realisierbar?

11

Angenommen, ich wollte ein Open-Source-Projekt starten, von dem ich hoffe / erwarte, dass viele Leute Patches einreichen und so weiter. Ist es möglich, einen strengen TDD-Ansatz zu verfolgen? Kann / sollte ich erwarten / vertrauen, dass Mitarbeiter Qualitätstests schreiben, wenn sie einen Patch einreichen?

Eine Sache, über die ich nachgedacht habe, ist das Schreiben von Testsuiten für einzelne Fehlerberichte und Feature-Anfragen und das Erfordernis, dass alle Patches / Pull-Anfragen die Tests bestehen, aber an diesem Punkt scheint es besser zu sein, nur das Feature / Bugfix zu schreiben mich selber.

Soweit ich das beurteilen kann, scheinen die meisten großen Open-Source-Projekte, die TDD verwenden (oder zumindest Tests schreiben), größtenteils nur von einer Einzelperson oder einem Team geschrieben worden zu sein, wobei es einfach ist, Praktiken wie TDD durchzusetzen.

DormoTheNord
quelle
Das Teilen Ihrer Forschung hilft allen. Sagen Sie uns, was Sie versucht haben und warum es Ihren Anforderungen nicht entsprach. Dies zeigt, dass Sie sich die Zeit genommen haben, um sich selbst zu helfen. Es erspart uns, offensichtliche Antworten zu wiederholen, und vor allem hilft es Ihnen, eine spezifischere und relevantere Antwort zu erhalten. Siehe auch Fragen
Mücke
@gnat Ich habe StackExchange durchsucht, und es gab einige Fragen, bei denen Leute Beispiele für Open-Source-Projekte mit Komponententests stellten, was nicht mit meiner Frage übereinstimmt. Gemäß Ihrer Anfrage habe ich einige weitere Informationen hinzugefügt.
DormoTheNord
1
DormoTheNord Ich glaube, @gnat bedeutete spezifische, zitierte Beispiele.
Haneefmubarak
"Es wäre besser, das Feature / den Bugfix selbst zu schreiben." Mit oder ohne Tests? Sind Sie ein TDD-Befürworter oder prüfen Sie nur, ob dies in diesem Zusammenhang möglich ist?
JeffO
Natürlich können / sollten Sie erwarten, dass Mitarbeiter Qualitätstests schreiben, wenn sie einen Patch einreichen. Das ist nicht nur von Vorteil - es ist heutzutage in großen Open-Source-Projekten äußerst verbreitet (ich kann Beispiele nennen, wenn Sie möchten).
Benjamin Gruenbaum

Antworten:

29

Sie können einen TDD-Ansatz (Test First) für ein Open Source-Projekt, bei dem Patches von der Öffentlichkeit eingereicht werden können, nicht wirklich durchsetzen.

Was Sie erzwingen können , ist, dass alle Patches eine Reihe von Testfällen für die im Patch enthaltenen Fixes enthalten müssen und dass diese Testfälle sowie alle vorhandenen Testfälle bestanden werden müssen. Sie können dies durchsetzen, indem Sie nur wenigen vertrauenswürdigen Entwicklern Commit-Rechte erteilen, von denen bekannt ist, dass sie die Richtlinien des Projekts verwenden und diesen zustimmen, und indem Sie öffentlich erklären, dass Übermittlungen / Pull-Anforderungen nur dann berücksichtigt werden, wenn sie Testfälle bestehen (mit ausreichende Abdeckung).

Dies stellt nicht sicher, dass der Test zuerst geschrieben wird, stellt jedoch sicher, dass der Test geschrieben wird .

Bart van Ingen Schenau
quelle
1
Sicherlich kann der Repository-Eigentümer ablehnen, Änderungen vorzunehmen, die nicht den Qualitätsstandards des Projekts entsprechen. Vielleicht würde die Qualität und Quantität der Beiträge darunter leiden, wenn die Mitwirkenden dies nicht mögen, aber das heißt nicht, dass Sie es nicht durchsetzen können. Sicherlich?
Tom W
2
@TomW: Wie würden Sie überprüfen, ob meine Einreichung gemäß den TDD-Praktiken erstellt wurde und nicht beispielsweise mit den Tests, die nach Abschluss der Implementierung geschrieben wurden?
Bart van Ingen Schenau
Ah, ich verstehe was du meinst. Ich nehme an, ein gewisser Verlust an Genauigkeit ist unvermeidlich, aber Sie können trotzdem überprüfen, ob der Code mit Tests geliefert wird, ob die Tests ausreichend detailliert sind und alles abdecken, was sie sollen. Ich bin mit git nicht so vertraut, aber ist es für eine bestimmte Pull-Anfrage möglich, die Reihenfolge der Commits für diesen Änderungssatz zu überprüfen, um festzustellen, ob der Entwickler einen geeigneten Prozess zur Erstellung befolgt hat?
Tom W
Mit anderen Worten, Sie können den internen Prozess nicht bestätigen, aber Sie können sicherstellen, dass die Ausgabe einem bestimmten Standard entspricht. Das Erfordernis von Tests und die Sicherstellung, dass das Design logisch ist, liegt in der Macht des Eigentümers.
Adrian Schneider
1

Sie können die Benutzer bitten, nur Test-Patches einzureichen, bevor sie an dem Code arbeiten dürfen. Dies würde eine zusätzliche Möglichkeit bieten, das geplante Design zu überprüfen, bevor der Code selbst geschrieben wird.

In der Praxis kann dies jede Begeisterung töten, die Menschen für einen Beitrag zum Projekt haben - oder es kann ein Feuer bei denen entzünden, die mit Ihrer Methodik einverstanden sind.

Die Rezensenten müssten jedoch sehr gut darin sein, die Design-Reviews schnell umzudrehen, um die Entwicklung nicht zu behindern.

Alex Feinman
quelle