その後、bddのユーザーストーリー/受け入れテストでミキシング
-
29-09-2019 - |
質問
このような長いチェーンを持つユーザーストーリー/受け入れテストをどのように処理しますか?これを別の受け入れテストに分割するのが最善ですか?ダイアログが表示されることをテストし、2番目のテストがダイアログが表示された後に動作をテストしますか?
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
解決
あなたのシナリオは少し長いようで、それはGUIに非常に重く結びついています。代わりにシステムの機能に結び付けたらどうなりますか?
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.
シナリオでは、ユーザーにとって便利なものについて説明し、リファクタリングが簡単になります。
私はこのような状況があったので、私と同じようにBDDが大好きです。 120の受け入れテストがあり、ほとんど失敗していました。誰かがあなたが説明しているものとよく似た確認ダイアログボックスを入れて、すぐに80を超える受け入れテストを破りました。代わりに、高レベルの再利用可能な手順でそれらをシナリオに変えることにより、システム変更の機能を実装するために使用するメカニズムがあっても、テストを簡単にリファクタリングして動作させることができます。ボタンの実際のクリックは、これらの再利用可能な手順内で発生し、ステップごとに複数のUIアクションを使用しても構いません。
ここでシナリオを書きました。
他のヒント
問題は、本当に「枝」が何であるかの1つです。
複数のステップがある場合は、各ステップでユーザーの選択が必要です。 「 'の場合は複数の「」があるはずです。これにより、各ブランチに多くのユーザーが選択した代替品を備えた豊かな木が形成されるはずです。考えられる各結果は、さまざまな選択を行い、その結果に到達するために独自のテストを行う必要があります。
2つのユーザーの選択を備えた3つのステップシーケンスは、8つの可能なパスです。異なるパスは、同じ結果に到達する可能性があります(またはそうでない場合があります)。ただし、これを通して複数のパスが必要です。
それが単なるシーケンシャルである場合(誰かが連続した手順を書くように感じたため)、ユーザーに選択肢がない場合、ユーザーの動作を考慮することによって実際に駆動されるわけではありませんか?
選択肢が表示されません。選択肢はありません==悪臭。しかし、ユーザーが選択肢がほとんどないかまったくない一連の捕虜のステップを持つ結果が1つしかないため、テストは簡単です。
選択を適切に解決する場合、各ステップには複数の結果があり、各ステップを個別にテストする必要があります。