2016-08-17 9 views
0

私のチームはCucumber/Ruby on Railsを使用しています。私たちは、次のようないくつかのシナリオを持っている:テストのように一緒に1つのテストにグループ化するのは悪いですか?

Scenario: Create a Data Set 
Scenario: Update a Data Set 
Scenario: Invalid Data Set - Invalid Name 
Scenario: Invalid Data Set - Missing Source 
Scenario: Invalid Data Set - Invalid Rate 
... 

同僚は単一のシナリオに合わせて無効テストのすべてをそのIグループを求めています。彼の推論は、私たちが品質チームと一緒に座っているときには、すべてのシナリオを朗読しなければならず、多くの代わりに1つを読むだけで時間を節約できるからです。

Scenario: Create a Data Set 
Scenario: Update a Data Set 
Scenario: Invalid Data Set 
    # Steps for invalid name 
    # Steps for missing source 
    # Steps for invalid rate 

私はテストが完全に分離されるべきだと感じているので、私はこれに同意するとは思わない。新しい無効なシナリオを追加したい場合は、グループ化されていれば必要以上に多くのコードを実行する必要があります。誰かがもっと正式な答えを持っているかどうかを知りたかったのです。

テストと同じようにまとめてグループ化するのは悪いですか?

答えて

2

一般的に一括テストは悪いことです。アサーション間のセットアップ/ティアダウンフェーズをスキップすると、以前のテストによってテストが失敗/失敗するという問題が発生する可能性があります。

しかし、レコードが有効ではないはずであり、ユーザがエラーに関するフィードバックを得るべきであることを単にテストしているのであれば、実際には1つのシナリオで複数のアサーションがあることが理にかなっています。特に、それぞれの要求サイクル全体を実行していないため、処理時間が大幅に短縮される可能性があります。

Scenario: Creating a thing with invalid data 
    When I create a thing without filling in the required fields 
    Then I should see "Invalid Name" 
    Then I should see "Missing Source" 
    Then I should see "Invalid Rate" 
3

私はまた、テストの分離を信じているが、私はあなたには、いくつかのより深い考えは単一のテストで一緒にそれらの特定のアサーションをひとまとめにすることは罰金であることを考えるように私をリードケースを見つけたと思います。私の経験則は懸念の分離を中心にしている傾向があります。これは、それらを別々の懸念事項として扱うことを意味するのではなく、無効なフィードバックをテストすることが一つの懸案事項であるということです。

もちろんこれには問題があります。あなたが法律としてその分離を受け入れるならば、あなたは同じテストでアサーションのトンを入れて見つけることができます。

もう一つは、@maxが彼の答え(それは良いものです)に言及しているパフォーマンスの問題です。

最後に、これらのテストを分離しないと、すべて一緒にテストすることができないことがあります。最初のテストの失敗は、それ以上の失敗が明らかにされるのを防ぐかもしれません。キュウリでは、コードの失敗時にアサーションを実行せずに視覚的な出力をチェックしているので、これは問題になりません。

具体的な例では、テストで無効な条件をテストするとかなりグループ化可能なようです。

ボトムライン:あなたの頭は適切な場所にあり、決して壊れてはいけない世界では非常に難しくて速いルールがほとんどないということを心に留めておく必要があります。

関連する問題