Als ich diese Antwort schrieb, wurde mir klar, dass es nicht um Tests geht, sondern um Dokumentation. Sie sollten zuerst das agile Manifest lesen :
[Wir schätzen] funktionierende Software gegenüber umfassender Dokumentation
Sie sollten Ihre Spezifikationen also ausführbar machen, dh als vollautomatische Testreihe schreiben.
Ist es eine gute Idee, Spezifikationen zu schreiben, die auf Geschichten basieren?
Ja, imho, das ist es. Es heißt "verhaltensgesteuerte Entwicklung" oder "Spezifikation durch Beispiel". In Ruby gibt es ein großes Werkzeug Gurke , die in diesem viel hilft.
Das Problem ist jetzt, dass, weil es so viele Geschichten gibt, für keinen Teil des Systems sofort klar ist, welche Geschichten sich darauf beziehen.
Warum soll es klar sein? Ich meine, brauchen Sie wirklich eine Rückverfolgbarkeitsmatrix "Test / Code"? Der Vorteil des Schreibens von Tests als Spezifikation besteht darin, dass Sie keine separate Rückverfolgbarkeit für "Anforderungen / Tests" benötigen, da Tests zu Anforderungen werden. Für Integrationstests sollten Sie Ihre Software als Ganzes und nicht als separate Teile behandeln.
Möglicherweise benötigen Sie ein Coverage-Tool, um festzustellen, ob "tote" Module vorhanden sind. Teile Ihres Systems werden von Ihren Spezifikationstests nicht abgedeckt. Aber es sollte Ihnen wirklich egal sein, welcher Spezifikation dieser bestimmte Code entspricht. Es sollte umgekehrt sein: Aus einer bestimmten Spezifikation sollten Sie wissen, welcher Teil des Systems ihm entspricht. Sie sollten sich keine Gedanken über Doppelarbeit in Ihren Spezifikationen machen. Und wenn Sie ein DRY- Prinzip auf Ihren Code anwenden, gibt es Dutzende von Spezifikationen, die denselben Code ausführen.
Es funktioniert zur Zeit der Entwickler. Bei jedem Sprint erhalten die Entwickler nur eine Spezifikation, in der dargelegt wird, was sie tun müssen und welche Änderungen sie vornehmen müssen. In Bezug auf die Pflege dieser Story-Liste und für Tests wird es jedoch sehr schwierig, Fehler zu verfolgen und im Allgemeinen nur die Spezifikationen beizubehalten, da eine der Funktionen auf dem Bildschirm möglicherweise an verschiedenen Stellen dokumentiert wurde nach Geschichte aufgeteilt.
Es ist nicht ungewöhnlich, dass Hunderte von Integrationstests durch eine kleine Änderung in einem kritischen Modul unterbrochen werden. Hier setzt der Unit-Test an.
Sie sollten Ihre Tests so strukturieren, dass Sie feststellen können, ob ein bestimmter Test eine hohe Anforderung oder nur ein subtiles Detail davon abdeckt. In letzterem Fall sollten Sie diesen Test von Ihrer Integrationstestsuite trennen. Der Zweck von Unit-Tests besteht darin, Fehler zu lokalisieren. Wenn Sie also einen Fehler einführen, tritt nur ein Testfehler auf.
Haben wir die Geschichten falsch geschrieben?
Ich denke, Sie müssen Ihre Geschichten nur in Epen organisieren, entweder nach Benutzer, z. B. "Kunde", "Assistent" oder nach Funktionen / Bildschirmen / Workflows ("Kauf", "Rückerstattung").
Auch hier sind Spezifikationstests kein Ersatz für Unit-Tests. Weiterlesen