2017-05-25 7 views
0

私は検索フィルターのキュウリテストを書く必要があるオートメーションプロジェクトに取り組んでいます。検索フィルタは、パラメータがネストされている場所で動的に動作します。次のパラメータは、以前のパラメータに基づいて設定されます。 "Subscribers"を選択すると、ドロップダウンの次のパラメータは "Name"、 "City"、 "Network"です。同様に、「Service Desk」を選択すると、その後のドロップダウンのパラメータは「Status」、「Ticket no。」、「Assignee」となります。私は以下のようにScenario Outlineを使用しています:キュウリの複雑なシナリオを最適化する

Scenario Outline: As a user, I can search records 
    Given I am on search page 
    When I search on "<category>" and "<nestedfilter>" 
    Then I see records having "<category>" category 

Examples: 
|category |nestedfilter| 
|Subscribers |Name  | 
|Subscribers |City  | 
|Subscribers |Network  | 
|Service Desk|Status  | 
|Service Desk|Ticket no. | 
|Service Desk|Assignee | 

フィルタは、以前のネストされたフィルタに基づいてより多くのネストされたフィルタがあるかもしれないとして、より複雑である可能性があります。

すべて私はこの問題を処理するためのより効率的な方法があるかどうかを知る必要がありますか?たとえば、データテーブルをstep_definitionに渡して、私はそれほど確信が持てません。

おかげ

答えて

1

あなたは本当に代わりに、シナリオのアウトラインのデータテーブルを使用して、あなたの項目の順序を保存する必要がある場合。

シナリオの概要は、複数のシナリオの略記です。各シナリオの実行は保証されません。少なくとも、特定の実行命令を引き受けるのは間違いでしょう。 Listを引数として使用すると、データテーブル内の項目の順序は変更されないため、ケースではより安全です。

+0

フィードバックをいただきありがとうございます。実行の順序は重要ではありませんが、私は確かに行の整合性について妥協することはできません。 –

+0

私はdatatableを試してみます。 –

0

キュウリのよくある間違いは、シナリオアウトラインとサンプルテーブルを使用して、ある種の半徹底的なテストを行うことです。これは、開発中の機能について多くの面白いことを隠す傾向があります。

私はあなたが働いている検索のための単一の機能を書いて、それらの検索が何であるか、なぜそれらが重要であるのかを調べ始めるでしょう。我々は我々が得るあなたの最初の1で始まる場合...

注ので:以下のすべてが背景ステップGiven I am searching

When I search on subscribers and name 
Then I should see records for subscribers 

2つ目

When I search on subscribers and city 
Then I should see records for subscribers 

とを前提として今ではなりました両方のシナリオが同じ結果を探しているので、これらのシナリオに重大な欠陥があることを明確にしてください。

  1. 加入者の検索が加入者を返す必要があり、加入者の検索は、あなたがリファクタリングと

    を得ることができます今すぐ

結果

  • 名前と都市のフィルタを持っていることを

    だから、あなたが実際にテストしていることです

    When I do a subscriber search 
    Then I should see city, name, network filters 
    
    When I do a subscriber search 
    Then I should only see subscriber results 
    

    注:これは既にシナリオ数を3から2に減らし、検索回数を3から1に減らした方がはるかに効率的です。

    これがあなたのやりたいことであるかどうかはわかりませんが、これはあなたの現在のシナリオがやっていることです。ただし、アウトラインとサンプルの表を使用しているため、これは表示されません。

  • +0

    あなたは私が取り組もうとしている問題を抱えていないようです。私は、以前の値に基づいてフィルタドロップダウンに入力する異なる検索パラメータの組み合わせを使用する複雑なフィルタを持っています。サブスクライバを選択すると、その後の検索フィルタのドロップダウンで名前、都市、ネットワークが表示されます。この組み合わせを選択することで、私は検索を実行することができ、検索記録ではカテゴリを確認する必要があります。トーマスのデータテーブル使用の解決にもっと同意します。あなたの入力をありがとう –

    +0

    私はおおよそあなたがやろうとしていることを理解しました。キュウリを使用して、キュウリをうまく使用できないフィルタの組み合わせを網羅的にテストしようとしているようです。キュウリをよりよく使用すると、フィルタの個々のパラメータの必要性が正当化され、個々のシナリオで最適なフィルタが必要な理由を調べることができます。徹底的に検索フィルタの組み合わせをテストするには、単体テストを書くか、おそらく検索ツールがすでに持っているテストを繰り返してください。 – diabolist

    0

    ドロップダウンフィルタとネストされたフィルタがあることは、実装の詳細であり、ユーザが達成したいことを達成する方法を説明しています。

    あなたは、テストではなくシステムの動作の例として、何をしようとしているのか考えてみると、より簡単かもしれません。あなたは網羅的な何かを探しているわけではありません。シナリオを具体的にして、現実的なデータと具体的な例を使ってシナリオを説明してください。通常、いくつかの典型的なデータを利用できる場合、それはバックグラウンドを使用して設定するのに最適です。

    ので、たとえば、私のようなシナリオを持っているかもしれません:フルシステムシナリオは何が起こっているか理解するだけで十分なはず

    Background: 
        Given I have subscribers 
        | Name | City | Network | Status | etc. 
        | Bob | Rome | ABC  | Alive | ... 
        | Sam | Berlin | ABC  | Dead | ... 
        | Sue | Berlin | DEF  | Dead | ... 
        | Ann | Berlin | DEF  | Alive | ... 
        | Jon | London | DEF  | Dead | ... 
    
    Scenario: First level search 
    
        Given I'm on the search page 
        When I search for Subscribers who are in Rome 
        Then I should see Bob 
        But not Sue or Jon. 
    
    Scenario: Second level search 
    
        Given I'm on the search page 
        When I search for Subscribers in Berlin on the ABC network 
        Then I should see Sam 
        But not Sue or Ann 
    
    etc. 
    

    を。回帰にBDDを使用しないでください。それを助けることができますが、すべてのケースをカバーしようとすると、シナリオは急速に遅くなり、維持不能になります。適切な場合には統合と単体テストに委任する(「テストピラミッド」を参照)。

    関連する問題