9

BDDを採用し、SpecFlowを使用して開発(ATDD)を推進しています。

私たちのQAチームは、(Gherkin / SpecFlowで)独自のエンドツーエンド回帰テストを定義し、すでに定義したステップを再利用したいと考えています。

(注意してください-これは良い例ではありませんが、十分な詳細を提供するはずです)

テストには以下が含まれる場合があります。

  1. ログイン
  2. 製品を検索する
  3. 購入する製品を選択してください
  4. 注文を作成する
  5. 配信オプションを選択します。
  6. 注文を送信します。
  7. 注文を取り消す。

これは、次のようなシナリオを示唆します。

ログインしている
場合、商品を検索し、
購入する商品を選択し
、注文を作成し、
配送オプションを選択
し、注文を送信して、注文
をキャンセルします
か?? !!

各ステップで出力をチェックしていないため、これは明らかに間違っています。

したがって、これは一連のシナリオとして解決される可能性があります。

シナリオ1:
ログインして
いる場合、製品を検索すると、製品
のリストが表示されます

シナリオ2:
購入する製品を選択すると
、注文を作成できます

シナリオ3:
注文を作成し、
配送オプションを選択すると
、注文を送信できます

などなど

これに関する主な問題は、シナリオが実行される順序/シーケンスを指定する方法がないように見えることです(nUnitの特性?)。シナリオ間には依存関係があるため(開始点がわかっているように設定されていないため)、順番に実行する必要があります。

私の質問は次のとおりです。

a)丸い穴に四角いペグをはめ込もうとしていますか?!

b)SpecFlow / Gherkinをこのように使用する方法があるかどうか誰かが知っていますか?

c)または、他にどのような選択肢があるか知っている人はいますか?

どうもありがとう!

4

1 に答える 1

12

私はあなたが間違った抽象化レベルであなたのシナリオを書いていると言うでしょう。しかし、それはあなたがそれらを何のために使いたいかによります。

テストスクリプトを書きたい場合は、正しい方向に進んでいます...しかし、それを維持するのは悪夢です。最初のケース(長いスクリプト)は非常に脆弱で、2番目のケース(いくつかのシナリオ)は必要です。特定の実行順序を確保するため。どちらも推奨されておらず、アンチパターンと見なされています。

作成しているATDDテストをマージし、テスト部門に相談して問題についての見解を入手し、システムが完全にテストされていることを確認するために必要なテストケースを含めることをお勧めします。誰が知っていますか?あなたはお互いから何かを学ぶかもしれません:P

そして、あなたがそれらの「仕様」を書くとき(私はむしろそれらを呼んでいます)、あなたはそれらをより高いレベルで書きます。したがって、書く代わりに:

Given I am logged in
When I Search for a product
  And I Select a product to buy
  And I Create an order
  And I Select delivery option
  And I Submit the order

あなたは次のようなものを書きます

When I submit an order for product 'Canned beans'

そのステップの背後にあるステップ定義では、すべての自動化を実行します(ログイン、製品ページの参照、配信オプションの選択、注文の送信)。

これらすべては、保守可能なUI自動化テストの作成方法に関するこれらの優れた記事で読むことができます。

これがお役に立てば幸いです

于 2011-12-14T13:08:42.060 に答える