2016-12-02 15 views
0

より柔軟なシナリオを構築するためのメカニズムを探しています。データベース内のレコードの存在をテストするこれら2つの非常に類似したシナリオの例ガーキンのシナリオの柔軟性。

Scenario Outline: Testing query with 1 attribute with these 2 record in and another 2 out of result 
    Given I'm connected to <db> database 
    When I select <query> from database 
    Then Result should contain fields: 
    | <row> | 
    | <yes1> | 
    | <yes2> | 
    And Result should not contain fields: 
    | <row> | 
    | <no1> | 
    | <no2> | 

    Examples: 
    | db | row | yes1 | yes2 | no1 | no2 | query               | 
    | 1 | model | 1013 | 1006 | 1012 | 1007 | "SELECT model FROM pc WHERE speed >= 3.0;"      | 
    | 1 | maker | E | A | C | H | "SELECT maker FROM product NATURAL JOIN laptop WHERE hd >= 100;" | 

Scenario Outline: Testing query with 2 attributes with these 2 record in and another 2 out of result 
    Given I'm connected to <db> database 
    When I select <query> from database 
    Then Result should contain fields: 
    | <rowA> | <rowB> | 
    | <yes1A> | <yes1B> | 
    | <yes2A> | <yes2B> | 
    And Result should not contain fields: 
    | <rowA> | <rowB> | 
    | <no1A> | <no1B> | 
    | <no2A> | <no2B> | 
    Examples: 
    | db | rowA | rowB | yes1A | yes1B | yes2A | yes2B | no1A | no1B | no2A | no2B | query        | 
    | 1 | model | price | 1004 | 649 | 2007 | 1429 | 2004 | 1150 | 3007 | 200 | "SELECT model,price FROM product" | 
    | 2 | name | country | Yamato | Japan | North | USA | Repulse | Brit | Cal | USA | "SELECT name, country FROM clases" | 

私は、属性の一般的な数の1つのシナリオを書くことができるようにしたいと思います。テストされた行の数も決まっていなければ素晴らしいでしょう。

ガーキンでこれを行うにはどのように
Testing query with N attribute with these M record in and another L out of result 

私の夢は一つだけの一般的なシナリオを書くことですか?どんなハックでも可能ですか?

答えて

4

短い答えは、いいえ.Gherkinは柔軟性についてではありません、Gherkinは具体的な例についてです。具体的な例は、柔軟性を除くすべてです。

長い答えは:

あなたは、テストツールとしてガーキンの使用方法を説明しています。しかし、ガーキンの目的は、物事をテストすることではありません。ガーキンの目的は、特定の行動を望む開発とステークホルダーとのコミュニケーションを促進することです。

何かをテストしたい場合、あなたが望むものを正確にサポートする他のツールがあります。どんなテストフレームワークも使えるでしょう。 JUnitの私の個人的な選択は、主にJavaで作業しているからです。

ツールを決定するためのリトマステストは、誰がこれを理解できなければなりませんか?

回答が非技術者の場合、私はおそらく非常に具体的な例では、ガーキンを使用します。具体的な例は、データベース内のものを比較しない可能性が最も高いです。具体的な例は、システムの外部の観測可能な動作を記述する傾向があります。

答えが開発者の場合は、おそらくプログラミング言語にアクセスできるテストフレームワークを使用します。これはあなたが求めている柔軟性を可能にします。

あなたの場合、プログラミング言語を求めています。ガーキンとキュウリはあなたの場合には適切なツールではありません。

2

あなたはハックすることなくそれを行うことができますが、少なくとも1つの行にシナリオ全体ではないと思っています。
BDDの構造に従うことをお勧めします。

あなたは持っているなどの構造に従う必要があります。あなたがいないに.ITは悪い習慣になります分割し、初期コンテキスト、アクション(複数可)と結果との間の区切りを持っている必要があり

Given 
When 
Then 

をこれらの間には限界があります。

明確な区切りは、再利用性と可読性を向上させ、デバッグにも多く役立つことにも注意してください。

自動化されたシナリオのコードレビューに役立つBDDのベストプラクティスを備えたチェックリストがあれば、BDDの意味とその役立つことを調べてください。

関連する問題