HintergrundWie erfassen Sie Anforderungen mit deklarativen Akzeptanztests?
Ich versuche, mein Team für ein neues Handy-App-Projekt zu helfen, organisieren. Wir haben beschlossen, BDD zu folgen (siehe auch BDD definition), um klare englische Anforderungen zu erfassen, die einen Vertrag zwischen Stakeholdern und Entwicklern für jede einzelne User Story bilden.
Wir verwenden die Abnahmetests, um die Anforderungen jeder User Story zu dokumentieren. Akzeptanztests werden vor der Sprintplanung geschrieben. Entwickler verfeinern und ergänzen die Tests während der Sprintplanung.
Wir definieren Kriterien Acceptance als eine Liste von Regeln (zB: Eingabevalidierung, Standardwerte, etc.) und Abnahmen als eine Liste von Gurken-Szenarien. Wir planen die Verwendung von Calabash für mobile Tests.
Ich glaube, dass Akzeptanzkriterien/Tests eine flexiblere und daher bessere Lösung für formalere Anforderungsdokumente sind.
Ich glaube, ich habe eine effektive Lösung gefunden, aber ich würde gerne verstehen, wie andere Anforderungen sammeln und Akzeptanztests schreiben.
Problem
Es gibt eine Debatte in der Gurke Gemeinschaft von imperative vs declarative Prüfschritte. Ich lehne mich dem Imperativ zu, denn ein Entwickler muss wissen, wie eine lieferbare User Story aussieht.
Ich glaube nicht, UI-Kopplung aka spröde Tests ist ein Problem. Es gibt Möglichkeiten, die UI vom Test zu entkoppeln (zB: page objects). Ich habe auch nicht das Gefühl, dass es für einen nicht technischen Stakeholder schwierig ist, detaillierte Schritte zu machen (es sei denn, sie wissen nicht, wie sie einen Webbrowser oder ein mobiles Gerät verwenden sollen, aber das ist ein separates Problem).
Ich kann den Begriff "Acceptance Test" unterschlagen. Bei mir ist ein Abnahmetest nicht auf dem gleichen Niveau wie ein Komponententest. Ich sehe einen Abnahmetest als eine hohe Ebene integration test.
Das Beispiel
- Als Gast
- I
- für den Zugriff auf App-Funktionalität
Imperative-Test
-
anmelden möchten
- Szenario: Gültig Login
- Da ich auf der "Login" -Bildschirm am
- Wenn ich „E-Mail @ domain eingeben.com“in "E-Mail"
- Und ich geben "password1" in "Passwort"
- Und ich tippen Sie auf "Login"
- Dann sehe ich, "Anmeldung erfolgreich"
deklarative-Test
- Sc enario: Gültig Login
- Gegeben Ich habe ein gültiges Konto
- Dann kann ich mich diese
beide können decken die gleiche Funktionalität und letztere ist kürzer, aber nicht sagen, ob anmelden kann sich mit einem Benutzernamen, E-Mail oder Facebook/Twitter/Google/etc-Konto anmelden. Es ist einfach genug, um nicht wirklich eine Lösung zu kodieren
Die Frage
Wie erfassen Sie die Anforderungen für ein Feature mit deklarativen Schritten?
Dan Norden (Schöpfer von BDD) hat einige schöne Gedanken zu diesem Thema zu lesen: http://dannorth.net/2011/01/31/whose- Domäne-ist-es-trotzdem /. Es sollte beachtet werden, dass ein Szenario nur zwei Domänen ansprechen sollte: der Benutzer des Features und der Entwickler, der es implementieren wird. Das Szenario sollte für beide Domains klarstellen, was geschehen soll (zB: "Benutzer meldet sich mit E-Mail und Passwort an", nicht "Benutzer meldet sich mit Benutzername und Passwort an", etc.) – Brenden
http://blog.cyrusinnovation.com/2013 /04/improve-your-ios-frank-cucumber-acceptance-tests.html besagt, dass Imperativ angebracht ist, wenn sich ein Interessenvertreter mit der Benutzererfahrung eines bestimmten Szenarios beschäftigt. Es ist sinnvoll, über deklarative Aussagen auf die Kürze zu zielen, während dies explizit erforderlich ist, wenn es erforderlich ist. – Brenden
Diese Frage scheint off-topic zu sein, da es sich um die Projektplanung handelt. Ich denke, es sollte zu programmers.stackexchange.com migriert werden. – Brenden