Von einer User Story zum Code gelangen, während TDD (Scrum) verwendet wird

8

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:

  1. Sie definieren "Fertig" richtig.
  2. 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. ..)

Ittai
quelle
1
Sie schreiben Tests, während Sie codieren. Akzeptanztests sind nicht die Tests, die Sie während der TDD schreiben.
CaffGeek
Ich weiß, aber ich schreibe TDD gegen einige Anforderungen, oder? In welcher Form sollen sie kommen?
Ittai
4
Ich bin anderer Meinung - Abnahmetests können Ihre Entwicklung sicherlich vorantreiben. Sie können eine Reihe von Tests (Einheit, Integration, System und Akzeptanz) definieren, um anzugeben, wann eine Anwendung funktioniert und akzeptabel ist. Sie können die Anwendung dann codieren, bis sie die Tests bestanden hat. Das ist sicherlich eine testgetriebene Entwicklung.
Matthew Flynn
1
@Ittai: Ich denke, was Chad zu sagen versucht, ist, dass TDD mit Unit-Tests beginnt, die der Entwickler selbst definiert. Während der Entwickler den Anwendungsfall / die Anforderungen in Code-Design auf niedrigerer Ebene übersetzt, arbeitet er jeweils an einer Klasse und schreibt Komponententests für diese Klasse. Auf dieser Ebene ist es "ad hoc", da der Entwickler die Tests nach Bedarf erstellt, um die Gültigkeit des Codes zu beweisen.
Sam Goldberg
1
"Woher leite ich die Anforderungen ab"? Geschichten. Es ist nicht klar, warum dies als Antwort nicht ausreicht. Können Sie erklären, warum sich Geschichten auf magische Weise von diesen "Anforderungen" unterscheiden, die Sie sehen möchten?
S.Lott

Antworten:

11

Stimmt es, dass der Produktmanager und die Qualitätssicherung dafür verantwortlich sein sollten, die User Story in Akzeptanztests zu zerlegen?

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.

Die Abnahmetests müssen formal sein, 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?

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.

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?

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.

Das ist der aktuelle Fluss, an den ich gerade denke.

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.


Wann, von wem und in welchem ​​Format werden die Anforderungen zusammengestellt?

Zuerst. Definieren Sie "Anforderungen". Wie unterscheiden sich die von der Geschichte selbst?

Ich dachte daran, dass das Produkt und die Qualitätssicherung die Anforderungen über Abnahmetests definieren

Nicht gewöhnlich.

Während der Iteration bleibt der Entwickler möglicherweise hängen und wartet auf sie.

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.

S.Lott
quelle
Danke, kannst du etwas näher auf die Story-> Ausarbeitungsphase eingehen? Ich hatte den Eindruck, dass eine Geschichte eher die Form hat: "Ich als Benutzer möchte mich auf der Website anmelden, um ein Produkt zu kaufen." Dies enthält nicht genügend Details, mit denen ich TDDing starten kann, da ich weitere Details benötige , mehr Anwendungsfälle. Mehr Wege, glücklich und unglücklich.
Ittai
"Ich brauche mehr Details, mehr Anwendungsfälle. Mehr Wege, glücklich und unglücklich." Gut. Ich verstehe nicht, was Sie mehr über die Ausarbeitung wissen müssen. Sie haben eine vollständige Beschreibung der Vorgänge bereitgestellt. Was willst du noch wissen? Wie kann ich um Informationen bitten?
S.Lott
Ich versuche zu verstehen, ob es zu Beginn des Sprints nur die kurze User Story gibt und der Entwickler dann die Informationen aus dem Produkt "ausgraben" muss. Weil ich den Eindruck hatte (vielleicht fälschlicherweise), dass der Entwickler zu Beginn des Sprints eine Reihe von Anforderungen hat, die nicht erfüllt sind, aber 80% betragen (sie stammen aus einer User-Story). Ich versuche einen Fluss zu sammeln. Wann erfolgt die Umwandlung von einer einzeiligen (von zweizeiligen) User-Story zu einem detaillierten Satz von Spezifikationen?
Ittai
1. Es gibt keinen "Fluss"; keine "Schritte". Es ist einfacher als das. Schreiben Sie Tests und Code. 2. Die Informationsquelle hängt von Ihrer Organisation ab. Die meisten Organisationen geben Entwicklern Geschichten zur Ausarbeitung. Einige werden versuchen, einen Teil der Ausarbeitung während der Pflege zu Beginn des Sprints vorzunehmen. 3. Lesen Sie das Agile Manifest. agilemanifesto.org . Es wird erwartet, dass Sie mit dem Product Owner interagieren. Tief. Häufig. Der Punkt ist, dass Sie die Daten sammeln, die Sie benötigen, damit Sie Code zur Unterstützung der Geschichte erstellen können.
S.Lott
1
"Wann erfolgt die Umwandlung von einer einzeiligen (von zweizeiligen) User-Story in einen detaillierten Satz von Spezifikationen?" Ständig. Wenn Sie Design machen möchten, können Sie gerne Design machen. Einige Leute schreiben ihr Design auf. Einige tun es nicht. Wenn Sie die Idee mögen, viele Spezifikationen zu schreiben, ist das in Ordnung. Übertreibe es nicht. Es geht darum, Tests und Code zu schreiben. Wenn Ihnen ein Design beim Fokussieren hilft, fühlen Sie sich frei. Viele Leute finden, dass das Schreiben der Tests ihnen hilft, sich zu konzentrieren. Wenn Sie ein großes, komplexes Spezifikationsdokument benötigen, ist Ihre Geschichte zu komplex.
S.Lott
2

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).

Sam Goldberg
quelle
1

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 .

Ladislav Mrnka
quelle