Wir haben einen Punkt erreicht, wo wir haben erkannt, dass es zwei Optionen für die Testdaten angeben, wenn ein typisches CRUD Szenario definieren:Sollten BDD-Szenarien tatsächliche Testdaten enthalten oder einfach beschreiben?
Option 1: Die Daten zu verwenden Beschreiben Sie, und lassen Sie die Umsetzung der Definition Daten
Scenario: Create a region
Given I have navigated to the "Create Region" page
And I have typed in a valid name
And I have typed in a valid code
When I click the "Save" button
Then I should be on the "Regions" page
And the page should show the created region details
Option 2: explizit der Testdatenzustand
Scenario: Create a region
Given I have navigated to the "Create Region" page
And I have filled out the form as follows
| Label | Value |
| Name | Europe |
| Code | EUR |
When I click the "Save" button
Then I should be on the "Regions" page
And the page should show the following fields
| Name | Code |
| Europe | EUR |
In Bezug auf der bene zu verwenden passt und Nachteile, was wir festgestellt haben, ist, dass:
Option 1 deckt schön den Fall, wenn die Definition von sagen ein "gültiger Name" ändert. Dies könnte schwieriger sein, wenn wir mit Option 2 gehen würden, wo die Testdaten an mehreren Stellen sind. Option 1 beschreibt explizit, was bei den Daten für diesen Test wichtig ist, insbesondere wenn es sich um ein Szenario handelt, in dem wir etwas wie "hat eine ungültige Kreditkartennummer eingegeben" gesagt haben. Es fühlt sich auch irgendwie abstrakter und BDD an, da es sich mehr um eine Beschreibung als um eine Implementierung handelt.
Option 1 verwendet jedoch sehr spezifische Schritte, die nur schwer wiederverwendet werden können. Zum Beispiel "Die Seite sollte die erzeugten Regionsdetails anzeigen" wird wahrscheinlich nur von diesem Szenario verwendet. Umgekehrt könnten wir die Option 2 "Die Seite sollte die folgenden Felder anzeigen" so implementieren, dass sie in anderen Szenarien viele Male wiederverwendet werden kann.
Ich denke auch Option 2 scheint kundenfreundlicher, da sie durch Beispiel sehen können, was passiert, anstatt abstrakter Begriffe wie "gültig" zu interpretieren. Wäre Option 2 jedoch spröder? Das Refactoring des Modells könnte bedeuten, diese Tests zu unterbrechen, während, wenn die Testdaten im Code definiert sind, der Compiler uns bei Modelländerungen helfen wird.
Ich weiß es zu schätzen, dass es hier keine richtige oder falsche Antwort geben wird, aber ich würde gerne die Meinung der Leute hören, wie sie entscheiden würden, was sie verwenden sollen.
Danke!
Netter Blog Cheezy und eine großartige Idee, danke! –
FYI mein Arbeitgeber hat Ihre Website wegen eines vermeintlichen Sicherheitsrisikos blockiert. – onedaywhen