2010-12-13 86 views
5

Disons que vous avez un formulaire qui crée un nouvel utilisateur. Comment écrivez-vous votre scénario de concombre?Meilleures pratiques BDD pour la conception de scénarios de concombre pour les formulaires

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" 

Si vous choisissez 1.) où le document vous les exigences pour un utilisateur (Un utilisateur doit avoir un nom et un mot de passe) . Je vois que BDD est sur le comportement mais à un moment donné vous et l'acteur devez spécifier quelles propriétés un utilisateur devrait avoir, n'est-ce pas?

Je suis très nouveau pour BDD donc je vous remercie de tout conseiller ...

Répondre

1

Ou bien on va travailler. AveC# 1, vous créez une étape pour remplir le formulaire. Je préfère un hybride de # 1 et # 2 parce que j'utilise le scénario Outlines beaucoup par exemple:

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

Les scénarios que vous avez écrit sont assez bas niveau. À moins que vous ne produisiez une fonctionnalité de connexion sécurisée à vendre, je m'en tiendrai au cas heureux et au test de l'unité/manuel pour le reste. Si vous ne le faites pas, vous créerez tellement de scénarios que ce sera un cauchemar de maintenance.

Découvrez ce qui différencie le produit que vous créez de tous les produits similaires, puis ciblez-le comme valeur du scénario. Ensuite, il ressemblera à ceci:

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

bâton aux capacités vraiment de haut niveau, plutôt que des mesures basées sur des formulaires bas niveau. Par exemple:

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. 

Il y a un concept appelé « page paradigme », dans lequel vous créez une classe avec toutes les étapes de bas niveau que la page ou de l'écran peuvent effectuer. Vous pouvez ensuite appeler ces étapes de bas niveau sur la page depuis les appareils d'étape du concombre de niveau supérieur.

Votre entreprise sera beaucoup plus engagée avec des scénarios comme celui-ci. L'objectif principal de BDD n'est pas de produire des tests automatisés, mais d'avoir des conversations autour des scénarios afin de savoir où vous allez mal et quelles autres options vous pourriez envisager avant de vous lancer dans la mise en œuvre du code. Les tests automatisés sont un bon sous-produit. Les conversations et l'apprentissage que vous obtenez en discutant avec eux sont les éléments qui différencient BDD de ATDD (Acceptance Test Driven Development). C'est pourquoi nous utilisons un langage comme Exemple, Scénario, Donné, Quand, Alors, Contexte, Événement, Résultat au lieu de Test, SetUp, TearDown, Agir, Réorganiser, Affirmer - pour que nous puissions parler de ces choses avec les affaires, BA et testeurs dans la même langue. Voir Dan North's article on Deliberate Discovery et le reste de son blog pour plus, et bonne chance avec le BDD!