Ich bin ein bisschen ein Befürworter der Behavior Driven Development-Methodik (auch bekannt als BDD). Ich wende BDD seit einigen Jahren an und habe StoryQ als mein bevorzugtes Framework bei der Entwicklung von DotNet-Anwendungen übernommen. Obwohl ich seit vielen Jahren Unit-Tests durchführe und zuvor zu einem Test-First-Ansatz übergegangen bin, habe ich festgestellt, dass die Verwendung eines BDD-Frameworks viel mehr Wert bringt, da meine Tests die Absicht der Anforderungen relativ gut erfassen Klares Englisch in meinem Code und weil meine Tests mehrere Zusicherungen ausführen können, ohne den Test zur Hälfte zu beenden - das heißt, ich kann auf einen Blick sehen, welche spezifischen Zusicherungen bestanden / nicht bestanden wurden, ohne zu debuggen, um dies zu beweisen.
Dies war wirklich die Spitze des Eisbergs für mich, da ich auch festgestellt habe, dass ich sowohl Test- als auch Implementierungscode gezielter debuggen kann, was dazu führt, dass meine Produktivität erheblich gestiegen ist und ich mehr kann Stellen Sie leicht fest, wo ein Fehler auftritt, wenn ein Problem aufgrund der Ausgabe, die in die Build-Protokolle gelangt, bis zum Integrations-Build reicht. Darüber hinaus verfügt die StoryQ-API über eine schöne, flüssige Syntax, die leicht zu erlernen ist und auf außerordentlich viele Arten angewendet werden kann, ohne dass externe Abhängigkeiten erforderlich sind, um sie zu verwenden.
Mit all diesen Vorteilen würden Sie es für einfach halten, das Konzept dem Rest des Teams vorzustellen. Leider zögern die anderen Teammitglieder, sich StoryQ überhaupt anzusehen, um es richtig zu bewerten (geschweige denn die Idee, BDD anzuwenden), und haben sich gegenseitig davon überzeugt, zu versuchen, eine Reihe von StoryQ-Elementen sogar aus unserem eigenen Kerntest-Framework zu entfernen obwohl sie ursprünglich die Verwendung von StoryQ unterstützten und obwohl der Code, den sie entfernen möchten, keinen Einfluss auf einen anderen Teil unseres Testsystems hat. Dies würde meine Arbeitsbelastung insgesamt erheblich erhöhen und widerspricht wirklich dem Strich, da ich durch praktische Erfahrung davon überzeugt bin, dass es eine bessere Möglichkeit ist, in unserer speziellen Arbeitsumgebung auf Test-First-Weise zu arbeiten, und nur zu einer höheren führen kann Verbesserungen in der Qualität unserer Software, wenn ich ' Wir fanden es einfacher, zuerst mit BDD am Test festzuhalten. Um dies weiter zu verdeutlichen, sind die meisten Unit-Tests, die wir durchgeführt haben, in der Regel ziemlich spröde und schwer zu warten. Dies ist ein Überbleibsel aus Jahren schlecht angewandter Tests, in denen Entwickler aufgrund ihrer Zurückhaltung, sich an einen testgetriebenen Prozess zu halten, auf alte Gewohnheiten zurückgreifen und Führen Sie alle Tests am Ende des Projekts durch (dieselben Personen behaupten, agil zu sein!).
Die Frage lautet also wirklich:
- Mit welchen Argumenten kann ich wirklich klar machen, dass es für dieses Team besser wäre, StoryQ zu verwenden oder zumindest die BDD-Methodik zu übernehmen?
- Können Sie mich auf anekdotische Beweise hinweisen, die ich verwenden kann, um mein Argument zu unterstützen, BDD als unsere Standardmethode der Wahl zu übernehmen?
- Welche Gegenargumente, die Sie sich vorstellen können, könnten darauf hindeuten, dass mein Wunsch, das Team zur Einführung von BDD zu ermutigen, falsch sein könnte? Ja, ich bin froh, dass ich mich als falsch erwiesen habe, vorausgesetzt, das Argument ist stichhaltig.
HINWEIS : Ich befürworte nicht, dass wir unsere Tests vollständig umschreiben, sondern einfach damit beginnen, für alle zukünftigen Testarbeiten auf eine andere Art und Weise zu arbeiten, und vorzugsweise in der Art und Weise, wie wir unsere Kunden einbeziehen.
Und für diejenigen unter Ihnen, die mehr über BDD erfahren möchten, können die folgenden Links hilfreich sein:
- http://dannorth.net/introducing-bdd/
- http://en.wikipedia.org/wiki/Behaviour_driven_development
- http://behaviour-driven.org/Introduction
Für diejenigen, die an weiteren Details interessiert sind, sind wir ein kleines 4-köpfiges Team, das an ungefähr 5 großen Projekten arbeitet. Der "Pilotversuch" für BDD dauerte zunächst etwa zwei Monate, gefolgt von einem weiteren Zeitraum von etwa vier Monaten. Das Team akzeptierte, dass ich weiterhin so arbeiten sollte und ihre eigenen Versuche machen sollte. Ich bin seit ungefähr 2 Jahren BDD-ing, seit der Prozess beendet ist, während die anderen sehr gut darin geworden sind, das Problem zu lösen. Anstatt eine "Konfrontation" über das Thema zu erzwingen, suche ich nach Möglichkeiten, das Team sanft davon zu überzeugen, sich von seinen kollektiven Hintergründen zu lösen und sich die Zeit zu nehmen, ihren Beitrag zu leisten.
quelle
Antworten:
"Der Kunde will es."
IMO möchten Sie BDD mindestens genauso viel an Ihre Kunden / Domain-Experten wie an das Entwicklungsteam verkaufen.
BDD ist ein kollaborativer Outside-In-Prozess, an dem mehrere Stakeholder beteiligt sind. Die Vorteile von BDD bestehen nicht nur darin, dass Entwickler ihren Testcode automatisch aus Abnahmetests ableiten, sondern auch in der kreativen Zusammenarbeit zwischen Technikern und Geschäftsleuten, um wertvolle, genau definierte Spezifikationen für das beabsichtigte Verhalten des Systems zu erstellen.
Kunden / Geschäftsanalysten Zugriff auf eine Schnittstelle zu gewähren, über die sie jede ausführbare Spezifikation ausführen, ihren Status kontrollieren und den Fortschritt ihrer Implementierung verfolgen können, wird im Allgemeinen ebenfalls sehr geschätzt.
Es gibt eine Präsentation von Dan North darüber, wie Sie BDD an das Unternehmen verkaufen können: http://skillsmatter.com/podcast/java-jee/how-to-sell-bdd-to-the-business
quelle
Ich denke, das Beste, was Sie tun können, ist, sie davon zu überzeugen , es zu versuchen ("Rauchtest", "Trockenlauf", "Pilotprojekt") - insbesondere, wenn Sie klarstellen, dass Sie die Idee fallen lassen, wenn Sie Testergebnisse erzielen sind negativ.
Keines davon ist besonders konstruktiv, insbesondere aus der Sicht eines "Change Advocate", aber leider müssen Sie sich wahrscheinlich mit genau dieser Art von Rhetorik ( BTDTGTTS ) auseinandersetzen:
Nach meiner Erfahrung bestand die am wenigsten schmerzhafte Möglichkeit, Gegenargumente wie oben aufgeführt anzusprechen, darin, einen begrenzten kontrollierten Testlauf für eine vorgeschlagene Änderung durchzuführen .
Der Status "Eingeschränktes Testen" macht im Wesentlichen drei der vier oben genannten Argumente ungültig, mit Ausnahme eines über "seriöser Anbieter", dem durch die Bereitstellung anekdotischer Beweise für die Erfolgsgeschichte entgegengewirkt werden könnte (anekdotische Beweise funktionieren wahrscheinlich nicht für eine "Urknalländerung", aber für begrenzte Tests ist gut genug).
Wenn sich die Änderung tatsächlich lohnt und der Testlauf ordnungsgemäß organisiert ist, werden Sie eine positive Veränderung in der Team- und Managementhaltung feststellen, die den Übergang zu einer umfassenden Änderung reibungslos und schmerzlos macht.
Ein weiterer Vorteil des begrenzten Testlaufs besteht darin, dass Sie die Details des Zielprozesses klären und anpassen können, ohne zu viel Ärger zu verursachen und das Risiko eines "Reputationsschadens" für die Idee zu verringern. Jedes Mal, wenn ich an solchen Testläufen teilnahm , war ich angenehm überrascht, als ich herausfand, wie reibungslos es war, auf eine vollständige Übernahme umzusteigen, bei der die wichtigsten Details im Testlauf festgelegt und geklärt wurden.
quelle
Es kann Zeit sein, das Management zu rekrutieren. Wenn Sie versucht haben, solide Ergebnisse zu erzielen, das Team jedoch zurückschreckt, muss sich das Management möglicherweise engagieren.
Dies gilt insbesondere dann, wenn sie das produktivste Teammitglied des Unternehmens verletzen. Seien Sie auf das Spiel vorbereitet. Sie können sich zunächst an das Management wenden und versuchen, dass das Team Sie nicht mehr unterbietet, indem Sie Ihre Testfälle herausnehmen.
quelle