2017-06-18 9 views
1

シナリオシナリオの概要からhereまでの違いを知っています。キュウリの「シナリオ」より「シナリオ」のメリットは何ですか?

Scenario statesより抽象的な方法でテストの一般的な点。一方、 scenario outlineは、いくつかの例でシナリオを実行することを容易にします。

したがって、通常は次のようにfeature fileと書いています。 scenarioで始まり、scenario outlineで完了します。

特集:あなたの機能 のタイトルは、私は私の機能ファイル

Scenario: Eating 
    Given I have "N" cucumbers 
    When I eat "K" ones of them 
    Then I will have "N-K" ones 

Scenario Outline: eating 
    Given there are <start> cucumbers 
    When I eat <eat> cucumbers 
    Then I should have <left> cucumbers 

    Examples: 
    | start | eat | left | 
    | 12 | 5 | 7 | 
    | 20 | 5 | 15 | 

ために、このテンプレートを使用したい。しかし、それは私のためにそのあまり意味がありません。シナリオの概要を理解しやすいと思うので、シナリオでテストの一般的な見地を表現する必要はありません。

私に同意しますか?

つまり、シナリオはどのようなものですか、シナリオの概要はできませんか?

私はそれがエラーにつながる知っているが、私はキュウリのチームは完全にシナリオの概念を削除し、代わりにシナリオの概要をサポートしている場合、それは良いことだと思う単純な1

Scenario Outline: eating 
    Given there are <start> cucumbers 
    When I eat <eat> cucumbers 
    Then I should have <left> cucumbers 

    Examples: 
    | start | eat | left | 
    | 12 | 5 | 7 | 
    | 20 | 5 | 15 | 

で行くことをお勧めもっと。

答えて

0

これは、できるだけ簡単でわかりやすいシナリオを作ることです。

その後のシナリオとシナリオの概要で使用することができるステップがある場合は、あくまでも一例がある場合は、それを簡素化し、例の表を使用していない、それは、それが簡単に

0

考えるを読んで理解することができます同じように。

一方、シナリオは、トランザクション方式でステップを実行するために導入され、一度だけ実行されます。ただし、DataTableが提供されている場合は、Javaコードを使用してそれに応じてデータを処理できます。

シナリオアウトラインでは、Gherkinベースのフィーチャーファイルからのループを柔軟に実行できます。

その他の相違点- シナリオのアウトライン(類似のデータトレースの場合)は、例として提供されるデータに応じて複数回実行できますが、1回の実行でシナリオが1回だけ実行されます。 - シナリオ概要では、同様の種類のシナリオを繰り返し記述するのではなく、機能ファイルを小さくして読みやすくするためのよりクリーンなアプローチが提供されています。

また、追加のループ機能を提供するだけであるため、シナリオの置き換えとしてシナリオアウトラインを使用しても問題はありません。

注:ステップ数が増えると、テストケースの実行に時間がかかります。

0

シナリオのシナリオの利点。

  1. 例セクションは必要ありません。アウトラインを使用する場合は、 のパラメータを使用していない場合でも、表のサンプルセクションを使用することが必須です( )。
  2. いくつかのシナリオでは、入力としてテーブル全体を渡す必要があります。アウトラインを使用している間は、テーブル全体を入力として渡すことは容易ではありません。
  3. パラメータ名を定義し、同じパラメータとその値をテーブルに保持する必要はありません。
  4. 1つのストーリーと出力テーブルの入力テーブルを定義するのは、少し難しく、時間がかかり、混乱します。
1

あなたは間違ったことはできません。

ステップ定義をより簡潔にするために、アンチパターンに従ってください。これを行うには、あなたは

1)劇的にあなたのランタイム(例えば、テーブルは、多くの例を実行している奨励を増やす)の定義は を通信するステップ情報の量を減らす。あなたのテーブルでは、正確に行う2つの行を持っています同じこと)

3)シナリオの今後のすべての実行でメンテナンスの問題を作成します。

キュウリとサンプルテーブルを使用する唯一の理由は、利害関係者との共同作業をより簡単にするためです。ここでは、特定の分野で達成したいことの概要を示す概要と例を使用します。これらを取得したら、個々のシナリオを抽出して、それぞれの例が表す特定のルールとポリシーを調べて文書化する必要があります。我々は

user   | password | result 
not_registered | goodpass | user not found 
registered  | badpass | bad password 
registered  | goodpass | logged in 

より良い例テーブルを取るので、もし実装プロセスの一環として、あなたはより良い品質、個々のシナリオに

をアウトラインシナリオを改善しているし、我々は物事を維持するよりも、個々のシナリオにこれを破るオフにはるかに優れています非常に多くの理由からテーブルの中にあります。

まず、各ポリシーについて詳しく説明します。私たちは、不正なパスワードの例登録badpassを取るならば、我々は今、私たちが悪いパスワードエラーを示すことを決めるかもしれません

Scenario: Login with bad password 
    Given I am registered 
    When I login with a bad password 
    Then I should see a bad password error 

を持つことができ、それは、人々が登録したアカウントが存在することを確認することで、アカウントをハックできますので、良いアイデアではありません。だから我々はあまりにも

Scenario: Login with bad password (show login error only to prevent account identification) 
    Given I am registered 
    When I login with a bad password 
    Then I should see a bad login error 

このシナリオを改善する個々のシナリオは、ドキュメントを追加すると、別のステップを使用する機会を提供します。例えば、テーブルを更新する(あなたが悪いパスワードが不正ログインになった理由を推測する必要が)はるかに少ない通信の例のテーブルを使用しないように

registered  | badpass | bad login 

他の理由が

  1. ステップの定義ははるかに書くのは難しいされています。
  2. ステップの定義を表
  3. 値の例は、私は23に24を変更した場合、私はタイプミスを修正または
  4. 例値はほぼ常に値の繰り返しである基本的なビジネス・ルールを変更し、エラー傾向がある再使用がはるかに困難ですコードベースが

を変更したときにコードベースに

  • 値の例は、更新必要5.

    で簡単に見を持っています私たちは弱いパスワード「12345」を持っていると言うとtrongパスワードre432uee8l。

    サンプルテーブルを使用すると、テーブルにハードコードされたパスワードが表示されます。我々は強力なパスワードはそれでシンボルを持っていなければならないことを言うために私たちのビジネスルールを変更した場合

    registered | re432uee8l | logged in 
    

    は今、私たちは、機能の私達のセット内のすべての強力なパスワードの例を変更する必要があります。

    私は強く

    実装シナリオ(|ビルド| deploy`は何の例、および無輪郭を持つべきではないあなたは、すべての「プッシュした後に実行されているはずのもの)ことをお勧めします当初からキュウリを使用しました。アウトラインとサンプルを実行している場合、完了していないシナリオが実行されています。

  • 関連する問題