2010-12-13 8 views
5

Nehmen wir an, Sie haben ein Formular, das einen neuen Benutzer erstellt. Wie schreiben Sie Ihr Gurken-Szenario?Die besten BDD-Praktiken zum Entwerfen von Gurkenszenarien für Formulare

1.)

Given I am logged in as admin 
When I create a new user 
Then I should see "Successfully created user" 

2.)

Given I am logged in as admin 
When I go to Create new user 
And I fill in "Name" with "Name111" 
And I fill in "Password" with "Password111" 
And I press "Create new user" 
Then I should see "Successfully created user" 

Wenn Sie 1 wählen), wo Sie die Anforderungen für einen Benutzer dokumentieren Sie (A Benutzer einen Namen und ein Passwort haben sollte) . Ich sehe, dass es bei BDD um Verhalten geht, aber irgendwann müssen Sie und der Stakeholder angeben, welche Eigenschaften ein Benutzer haben sollte, oder nicht?

Ich bin sehr neu zu BDD so schätze ich jede Beratung ...

Antwort

1

Entweder man arbeitet. Mit # 1 erstellen Sie einen Schritt, um das Formular auszufüllen. Ich ziehe es eine Mischung aus # 1 und # 2, weil ich Scenario verwenden Outlines alot zum Beispiel:

Background: 
Given the following users exist: 
    | email    | password  | 
    | [email protected] | testpassword23 | 
    | [email protected] | notthistime  | 
    | [email protected] | welcomeback  | 

    @login @authentication 
    Scenario Outline: Authentication 
    Given I am on the new user session page 
    When I login with "<s_email>" and "<s_password>" 
    And I press "Login" 
    Then I should see "<s_message>" 

    Examples: 
    | s_email   | s_password  | s_message      | 
    | [email protected] | testpassword23 | Signed in successfully   | 
    | [email protected] | itriedreallyhard | Invalid email or password.  | 
    | [email protected] | testpassword23 | Invalid email or password.  | 
2

Die Szenarien, die Sie geschrieben haben, recht niedriges Niveau ist. Sofern Sie nicht gerade sichere Login-Funktionen für den Verkauf erstellen, würde ich mich an den Happy Case und den Unit/Manual-Test halten, den Rest. Wenn Sie dies nicht tun, erstellen Sie so viele Szenarien, dass es sich um einen Wartungsalarm handelt.

Finden Sie heraus, was unterscheidet das Produkt, das Sie von allen ähnlichen Produkten erstellen, dann zielen Sie als Wert des Szenarios. Dann wird es wie folgt aussehen:

Given Fred is logged in 
When Fred <does something> 
Then Fred should <get some really differentiating value> 
And <something else happens> 

-Stick auf die wirklich High-Level-Funktionen, statt mit Low-Level-formularbasierte Schritte. Zum Beispiel:

Given there is already a question on BDD and Cucumber 
Given Peyote is logged in 
When Peyote proposes a question on BDD and Cucumber 
Then Peyote should see other questions on BDD and Cucumber. 

Es gibt ein Konzept namens „Seite Paradigm“, in dem Sie eine Klasse mit allen Low-Level-Schritten erstellen, dass die Seite oder Bildschirm durchführen kann. Sie können diese Low-Level-Schritte auf der Seite von den höheren Cucumber-Step-Fixtures aus aufrufen.

Ihr Unternehmen wird mit solchen Szenarien viel mehr beschäftigt sein. Der Hauptzweck von BDD besteht nicht darin, automatisierte Tests zu erstellen, sondern Gespräche über die Szenarios zu führen, damit Sie herausfinden können, wo Sie falsch liegen und welche anderen Optionen Sie in Betracht ziehen sollten, bevor Sie den Code implementieren. Automatisierte Tests sind ein nettes Nebenprodukt.

Die Gespräche und das Lernen, das Sie durch das Sprechen bekommen, unterscheiden BDD von ATDD (Acceptance Test Driven Development). Deshalb verwenden wir Sprache wie Beispiel, Szenario, Gegeben, Wann, Kontext, Ereignis, Ergebnis anstelle von Test, SetUp, TearDown, Act, Anordnen, Assert - so können wir über diese mit Business, BAs und Tester in der gleichen Sprache.

Siehe Dan North's article on Deliberate Discovery und den Rest seines Blogs für mehr und viel Glück mit dem BDD!

Verwandte Themen