Question

Comment gérez-vous les histoires d'utilisateur / tests d'acceptation qui ont de longues chaînes comme celui-ci, où le Then / Quand se mêlent ensemble? Est-il préférable de diviser cela en un test d'acceptation séparée où on teste que la boîte de dialogue apparaît, puis le second teste le comportement après la boîte de dialogue a été montré?

Feature: Confirmation before removing products from cart
  In order to avoid accidentally removing an item from my cart
  As a Customer
  I want a confirmation dialog to ask me if I'm sure I want to remove an item

  Scenario: I want to remove an item from my cart
    Given I have added item "xyz" to my cart
    When I click "Remove"
    Then a confirmation dialog pops up
    And it asks "Are you sure you want to remove this from your cart"
    When I click "Yes"
    Then item "xyz" should be removed from my cart
Était-ce utile?

La solution

Votre scénario semble un peu long, et il est assez fortement lié à l'IUG. Que se passerait-il si vous égalisèrent aux capacités du système au lieu?

Scenario: I want to remove an item from my cart
  Given I have a cart containing "xyz"
  When I remove "xyz" from my cart
  Then my cart should be empty.

Le scénario décrit maintenant des choses qui est utile à l'utilisateur, et il est plus facile de refactoring.

J'aime BDD autant que je fais parce que j'avais une situation beaucoup comme ça. Nous avons eu 120 tests d'acceptation et ils étaient pour la plupart défaillantes. Quelqu'un avait mis une boîte de dialogue de confirmation dans un peu comme celui que vous décrivez, et instantanément cassé plus de 80 tests d'acceptation. En les transformant en des scénarios avec de haut niveau, à deux pas réutilisables à la place, nous pouvons facilement factoriser et garder les essais de travail, même si les mécanismes que nous utilisons pour mettre en œuvre les capacités du changement du système. Le cliquetis des boutons et qui se passe dans ces étapes réutilisables, et il est normal d'avoir plus d'une action de l'interface utilisateur par étape.

J'ai écrit un scénario ici qui fait cela si elle est utile (c'est un DSL plutôt que l'anglais, mais vous devriez avoir l'idée):

http://code.google .com / p / wipflash / source / browse / Example.PetShop.Scenarios / PetRegistrationAndPurchase.cs

Autres conseils

La question est vraiment l'un de ce que les « branches » sont.

S'il y a plusieurs étapes il doit y avoir des choix de l'utilisateur à chaque étape. Il devrait y avoir plusieurs « Quand » est. Cela devrait former un arbre riche avec beaucoup d'alternatives choisies par l'utilisateur à chaque branche. Chaque résultat possible devrait avoir son propre test pour faire les différents choix et arriver à ce résultat.

Une séquence en trois étapes avec deux choix de l'utilisateur est de 8 chemins possibles. Plusieurs chemins différents peuvent arriver au même résultat (ou non). Mais vous devriez avoir plusieurs chemins à travers cela.

Si c'est juste séquentiel (parce que quelqu'un avait envie d'écrire étapes successives) et l'utilisateur n'a pas de choix, il est pas vraiment tirée par l'étude du comportement de l'utilisateur, est-il?

Je ne vois pas les choix. Aucun choix == mauvaise odeur. Mais facile à tester car il n'y a qu'un seul résultat avec une séquence d'étapes captives où l'utilisateur a peu ou pas de choix.

Si vous travaillez les choix correctement, chaque étape a plusieurs résultats et chaque étape doit être testé indépendamment.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top