Ich beschäftige mich mit Scrum und TDD und ich glaube, ich habe einige Verwirrung, über die ich gerne Ihr Feedback erhalten würde. Nehmen wir an, ich habe eine User-Story in meinem Backlog, damit ich sie als Teil von TDD entwickeln kann. Ich muss Anforderungen haben, oder?
Stimmt es, dass der Produktmanager und die Qualitätssicherung dafür verantwortlich sein sollten, die User Story in Akzeptanztests zu zerlegen?
Ich denke, dass das oben Gesagte zutrifft, da die Abnahmetests formal sein müssen, damit sie als Tests verwendet werden können, aber auch für den Menschen lesbar sind, damit das Produkt bestätigen kann, dass sie den Anforderungen entsprechen, oder?
Stimmt es auch, dass ich diese Abnahmetests später mache und sie als meine Anforderungen verwende, dh es handelt sich um eine Reihe von Anwendungsfällen, die ich (über TDD) implementiere? Ich hoffe, ich mache nicht zu viel Chaos, aber das ist der aktuelle Fluss, an den ich gerade denke.
Update
Ich denke, meine anfänglichen Absichten waren unklar, also werde ich versuchen, sie neu zu formulieren. Ich möchte mehr Details über den Scrum-Flow erfahren, mit dem eine User Story bei Verwendung von TDD in Code umgewandelt wird.
Der Ausgangspunkt liegt auf der Hand: Ein Benutzer zeigt ein Bedürfnis (oder den Vertreter des Benutzers als Produkt) an, bei dem es sich um eine kurze Beschreibung mit 1-2 Zeilen im bekannten Format handelt, die dem Produkt-Backlog hinzugefügt wird.
Bei einem Frühjahrsplanungsmeeting werden User Stories aus dem Backlog entnommen und den Entwicklern zugewiesen.
Damit ein Entwickler Code schreiben kann, benötigt er Anforderungen (insbesondere in TDD, da die Anforderungen die Anforderungen sind, aus denen die Tests abgeleitet werden).
Wann, von wem und in welchem Format werden die Anforderungen zusammengestellt?
Was ich im Sinn hatte, war, dass das Produkt und die Qualitätssicherung die Anforderungen über Abnahmetests definieren (ich denke an die automatische Verwendung von FitNesse oder der Sorte, aber das ist nicht der Kern, den ich denke), die dazu beitragen, zwei Zwecken gleichzeitig zu dienen:
- Sie definieren "Fertig" richtig.
- Sie geben einem Entwickler etwas, von dem er Tests ableiten kann.
Ich war mir nicht sicher, wann diese geschrieben wurden (vor dem Sprint, den sie ausgewählt haben, könnte dies eine Verschwendung sein, da zusätzliche Informationen eintreffen oder die Geschichte nicht ausgewählt wird. Während der Iteration könnte der Entwickler stecken bleiben und auf sie warten. ..)
Antworten:
Meistens. Sie schreiben möglicherweise nicht den tatsächlichen Abnahmetest. Sie können etwas genehmigen, das Sie geschrieben haben. Aber sie genehmigen die Abnahmetests. Ja.
Irrelevant. Sie können als automatisierte Tests formalisiert werden. Oder sie können informell sein und es kann Ihre Aufgabe sein, automatisierte Tests aus den informellen Abnahmetestkriterien zu erstellen.
Ebenfalls. Die "Anforderungen" sind die User Story. Es besteht keine wirkliche Notwendigkeit, eine weitere Version der Geschichte mit dem Namen "Anforderungen" zu erstellen. Einige Leute möchten die Geschichte gerne näher erläutern, bevor sie codieren. Sie können diese Anforderungen nennen, aber "Design" ist ein besseres Wort. "Ausarbeitung" ist das beste Wort.
Ja. Die Geschichte führt zu Abnahmetests. Die Geschichte ist erforderliches Verhalten (dh "Anforderungen"). Die Geschichte führt zu Tests, die das Design und die Entwicklung von Software vorantreiben.
Es gibt nicht wirklich viel "Fluss" dazu.
Story -> Abnahmetests.
Story -> Ausarbeitung ("Design", "Anforderungen") -> Unit-Tests -> Code.
Story -> Benutzer kann etwas Wertvolles tun.
Story -> Story-Punkte -> Geschwindigkeitsberechnung.
Beachten Sie das Muster. Die Geschichte treibt weitgehend alles an.
Zuerst. Definieren Sie "Anforderungen". Wie unterscheiden sich die von der Geschichte selbst?
Nicht gewöhnlich.
Falsch. Der Entwickler kann (und tut dies oft) beim Schreiben helfen. Das ist der Punkt der "Entwicklung": Entwickeln Sie die Geschichte zu einem genau definierten "Fertig".
Nochmal. Wenn Sie Zweifel oder Fragen haben, müssen Sie das Agile Manifest tatsächlich lesen. Das Manifest ist ganz klar: Entwickler müssen mit Produktbesitzern, Benutzern, der Qualitätssicherung und allen anderen Beteiligten sprechen. Die Interaktion ist eigentlich das Wichtigste, was passieren kann.
quelle
Ich werde Ihnen aus der Sicht von Extreme Programming (XP) bezüglich der Abnahmetests antworten.
Als ich zum ersten Mal in die Bücher einstieg (und sie las), las ich, dass es wirklich die Rolle des Entwicklers ist, mit dem Kunden / Benutzer zusammenzuarbeiten, um die Abnahmetests zu entwickeln / zu dokumentieren. Eines der Ziele von XP ist die Verbesserung der direkten Kommunikation zwischen Benutzer / Client und Entwickler. Dies ist häufig ideal, da dadurch die Möglichkeit von Codierungsfehlern aufgrund einer Fehlkommunikation der Anforderungen verringert wird.
Ich mache TDD seit ungefähr 8 Jahren und verfolge den obigen Ansatz. Ich denke, es hat die Entwicklungsgeschwindigkeit und die Zufriedenheit mit dem System verbessert, da Kunden / Benutzer sehen, wie sie die Entwicklung der Anwendung direkt beeinflussen.
Die Hauptschwierigkeit, auf die ich (bei kleineren Kunden) gestoßen bin, besteht darin, dass es sehr schwierig ist, sie dazu zu bringen, an der Festlegung von Abnahmetests teilzunehmen. (Normalerweise muss ich es für sie tun und zur Überprüfung an sie senden.) Die größeren Kunden, mit denen ich zusammengearbeitet habe, hatten normalerweise diese Einstellung, sodass sie bereit waren, spezifische Abnahmetests durchzuführen.
Nach dem, was ich über Scrum gelesen habe, bin ich mir nicht sicher, ob es definiert, welche Rolle für das Definieren / Schreiben von Abnahmetests verantwortlich ist. Ich gehe davon aus, dass es von Team zu Team unterschiedlich sein kann.
Mein Rat ist, dass Sie als Entwickler so viel wie möglich am Testdefinitionsprozess teilnehmen sollten. Und das Ziel ist es, die Ergebnisse des Sprints so schnell wie möglich vor die Benutzer zu bringen, damit sie Ihnen so schnell wie möglich alles erzählen können, woran sie vergessen haben (oder was sie Ihnen fälschlicherweise gesagt haben).
quelle
User Story ist nicht "Als User will ich XXX so dass JJJ" ! User Story ist ein Versprechen für die zukünftige Kommunikation mit PO. Das löst Ihr Problem mit mehr Details. Sie müssen während des Sprints mit PO kommunizieren, um alle benötigten Informationen zu erhalten.
User Story hat auch mehr Funktionen als der kurze Satz, der die Kommunikation verspricht. Notwendiger Teil der User Story sind Akzeptanzkriterien. Akzeptanzkriterien müssen vor dem Festschreiben der User Story bekannt sein (sie sollten vor dem Schätzen der User Story bekannt sein). Akzeptanzkriterien sind die Eingabe für Abnahmetests = Abnahmetests sollten Akzeptanzkriterien testen.
Wenn Sie also mit der Arbeit an User Storys mit TDD-Ansatz beginnen, sollten Sie (nicht die Qualitätssicherung) zunächst einen automatisierten Abnahmetest basierend auf Akzeptanzkriterien erstellen, um einen fehlgeschlagenen Test dafür zu erhalten. Sie werden mit der Implementierung des erforderlichen Codes mithilfe von TDD fortfahren, bevor der Abnahmetest bestanden wurde. Sie werden mit dem nächsten Abnahmetest fortfahren. Ich habe darüber auch in einer anderen Frage geschrieben .
quelle