5

こんにちは、SOAP と REST (xml と JSON) を介して利用できる Web サービスを開発しています。私たちの specflow 機能はほとんど同じです。

Scenario: There are at least 3 radio Channels 
Given The test server is up and running 
And The previously obtained channel list is reset
When I request a list of radio channels
Then the resulting deliveryPackage contains a list of  at least 3 items

これらの機能はすべて、SOAP インターフェース、REST/Xml インターフェース、および REST/JSON インターフェースについてテストする必要があります。

cucumber では、-R を使用して機能を実行し、ステップ ファイルの場所を指示することができますが、SpecFlow では、ステップ ファイルを回避する方法がまだ見つかっていないため、同じ機能で異なるステップを実行できます。

使用するステップの実装を変更するために、各シナリオを 3 回記述する必要はありません。

そこで、2 つの質問があります: 1) まったく同じシナリオを想定している 3 つの異なるインターフェイスに対して機能を 3 回実行するにはどうすればよいですか? 2) 毎回正しいステップ ファイルを選択するにはどうすればよいですか?

(1)を解けばおそらく(2)も解けます。

4

4 に答える 4

11

私の同僚は私たちにうまく機能する解決策を与えました:シナリオの概要:

Scenario Outline: Channels on different protocols
Given The test server is up and running
And The previously obtained channel list is reset
When I request a list of radio channels for the <protocol> and <binding>
Then the resulting deliveryPackage contains a list of  at least 3 items
Scenarios: 
| protocol | binding                          |
| XML      | BasicHttpBinding_IProgramService |
| JSON     | BasicHttpBinding_IProgramService |
| SOAP     | CustomBinding_IProgramService    |

舞台裏では、テストケースは2つのパラメーターを受け取る関数です。1つはのパラメーターで、もう1つはのパラメーターです。

このシナリオを実行すると、3つの単体テストが生成されます。これは私が求めていたものです。

詳細はこちら:関連するシナリオのグループの管理

于 2011-05-30T11:21:34.810 に答える
1

私の頭に浮かぶ唯一のことは、シナリオのファミリーを定義できるシナリオのアウトラインを使用し、テーブルにさまざまなパラメーターを指定してそのバリエーションを実行することです。

しかし、インフラストラクチャのセットアップではなく、主に入力のバリエーションを対象とするシナリオ アウトラインの使用が正当化されるかどうかはわかりません。

SpecFlow がそのようなステップを構成するのに適切な場所であるかどうかの別の質問です。これらの詳細は別のレベル (インフラストラクチャ統合テストとコンポーネントの単体テスト) でテストされるべきではないため、Gherkin はエンド ツー エンドのユース ケース受け入れテストにのみ使用されます。 . しばらく前に、SpecFlow はそのようなテストには不適切なツールであると主張しましたが、Gherkin はすべてのレベルでうまく使用されていることがわかりました。したがって、おそらくあなたの質問は、この種のテストを可能にするために SpecFlow (および Gherkin) をどのように採用できるかについての良い点を提起します。コードを繰り返さずにテストできます。

于 2011-05-21T11:24:25.487 に答える
0

SpecFlowは、タグ付けと呼ばれる概念を備えています。ステップをタグで飾ることができます。

残念ながら、シナリオは3回フィーチャーする必要がありますが、@タグは異なります。

次にStepScopeAttribute、メソッドまたはクラスにを設定して、このメソッド/クラスが特定の機能/シナリオ/タグにスコープされていることを示します。著者からのサンプルプロジェクトがここにあります:

https://github.com/techtalk/SpecFlow/tree/master/Tests/FeatureTests/ScopedSteps

于 2011-05-20T11:09:29.477 に答える
0

次のように言うのはどうですか:

When I request a list of radio channels for JSON, XML and SOAP
Then the corresponding resulting deliveryPackages contains a list of  at least 3 items

各ステップ定義には、3 つの個別のインターフェースを含めることができます。

ただし、あなたのアプローチが賢明かどうかは疑問です。別々のインターフェースが同じビジネス ロジックを共有すると仮定すると、実際には 3 つのうちの 1 つだけが失敗する可能性が高いでしょうか? すべてのインターフェイスで少数の主要なメソッドをテストし、大部分のメソッドについては、テスト対象のインターフェイスを 1 つだけ選択する方がよいでしょうか?

于 2011-05-21T00:15:11.830 に答える