10

次のようなシナリオ アウトラインを作成しています (これは単純化されたバージョンですが、私の問題をよく示しています)。

Given I have a valid operator such as 'MyOperatorName'
    When I provide a valid phone number for the operator 
    And I provide an '<amount>' that is of the following '<type>'
    And I send a request 
    Then the following validation message will be displayed: 'The Format of Amount is not valid'
    And the following Status Code will be received: 'AmountFormatIsInvalid'

Examples:
    | type      | description                     | amount |
    | Negative  | An amount that is negative      | -1.0   |
    | Zero      | An amount that is equal to zero |  0     |
    | ......... | ..........                      | ....   |

Examples テーブルは必要なテスト データを提供しますが、異なるオペレーターのテストを複製するために、(MyOperatorName ではなく) オペレーターの名前だけを含む別の Examples テーブルを追加します。

Examples: 
   | operator  |
   | op_numb_1 |
   | op_numb_2 |
   | op_numb_3 |

同じシナリオの概要を 3 回繰り返さないようにするため。これが不可能であることはわかっていますが、オペレーター名を除いてかなり同じである機能内の 3 つの異なるシナリオのアウトラインを使用しないようにするための最善のアプローチは何か疑問に思っています。同じステップ定義を再利用できることはわかっていますが、あまりにも類似したシナリオで機能が乱雑になるのを防ぐためのベスト プラクティスがあるかどうかを理解しようとしています。

4

1 に答える 1

11

これが不可能であることを知ってうれしいです...では、どのようなオプションがありますか? 以下の5つがあるようです。

a: すべてのオプションで表を作成します (外積)

Examples:

 | type      | description                     | amount | operator  |
 | Negative  | An amount that is negative      | -1.0   | op_numb_1 |
 | Zero      | An amount that is equal to zero |  0     | op_numb_1 |
 | Negative  | An amount that is negative      | -1.0   | op_numb_2 |
 | Zero      | An amount that is equal to zero |  0     | op_numb_2 |
 | ......... | ..........                      | ....   | ...       | 

b. 入力行のテーブルを使用して、各演算子についてシナリオを繰り返しますが、これを行いたくないと言っていました。

c. 演算子のテーブルを使用して、入力行ごとにシナリオを繰り返します。各ルールが個別のテストであるため、このオプションが気に入っています。「オペレーター」戦略のすべての異なる実装が同じ検証シナリオで成功したり失敗したりすることを本当に確実にしたい場合は、各検証シナリオを単一のシナリオアウトラインとして記述しないでください:

Scenario Outline: Operators should fail on Negative inputs
Given I have a valid operator such as 'MyOperatorName'
When I provide a valid phone number for the operator 
And I send a request with the amount "-1.0"
Then the following validation message will be displayed: 'The Format of Amount is not valid'
And the following Status Code will be received: 'AmountFormatIsInvalid'

Scenario Outline: Operators should fail on Zero inputs
...etc...

d. Specflow の使用方法を再考してください。機能を説明するために主要な例のみが必要な場合 (Gojko Adzic による Specification by Example で説明されているように)、すべての組み合わせをチェックすることはやり過ぎです。ただし、specflow を使用して統合テストの完全なスイートを自動化する場合、シナリオは適切かもしれませんが、e.

e. 「オペレーター」検証ロジックが 1 か所にのみ適用されるという考えに基づいて、統合/単体テストを記述します。検証が各オペレーターで同じである場合、それを一度テストしてから、すべてのオペレーターが同じバリデータークラスから継承するか、構成に含めるようにしないでください。

于 2013-10-31T17:10:09.313 に答える