2011-01-24 8 views
2

私は、Webアプリケーション上でBDDを使い、SpecFlowとWatiNを使ってブラウザを使って物事を自動化しています。私の小動物についての混乱 - ウェブページ間のナビゲーション

私はテストからすべてを運転しようとしていますが、TDD方式では、テストをパスする必要がなければ何も書きません。 (私は詳細を駆動するための単体テストも行っていますが、この質問はそれに関するものではありません)。私が混乱していることの1つは、ページ間のナビゲーションと、これを仕様で定義するかどうかです。

最初のテストでは、いくつかの詳細を入力し、それらがリストに表示されるようにします。

シナリオ:私の最初の試みは、このような何かを行く私は「
「詳細を追加」そして、私は入るジョン・スミスをクリックすると、私は、「ホーム」ページに
思いを考えると1

詳細オプションを追加します。 「Nameフィールド
で私がクリックして 『保存』
を次に 『ジョン・スミスは、』しかし、これは間を移動する必要リスト

に表示されます。いくつかのページがあるので、明示的にする必要があるかどうかはわかりません。そうでなければ、私は正しいページにいると仮定しなければなりません。 'Add Details'をクリックすると)、アサーションがあり、私が現在いるページを確認できます。

このシナリオで明示的な手順でページを確認していますか?

シナリオ:詳細オプションを追加2

私は
は私が
を「詳細を追加」をクリックすると、「ホーム」ページにいると私は、「詳細を追加」ページ
を日午前考えますそして、私は名前フィールド
に「ジョン・スミス」と入力し、私は、「保存」
をクリックして、私は「ホーム」ページに
ていますその後、 "John Smith"がリストに表示されます

または、明示的には言及していないオプション1の手順で行いますか?

たとえば、[詳細の追加]をクリックすると、正しいページが表示されますか?

public void WhenIClickAddDetils{ 
    // syntax probably wrong, not important 
    Assert.That(IE.Button("AddDetails").exists); 
    IE.Button("AddDetails").click(); 

    Assert.That(IE.PageTitle = "Add Details")); // do we check this here? 
} 

詳細を入力する前に正しいページにあることを確認する必要がありますか?

public void WhenIEnterDetils{ 
    Assert.That(IE.PageTitle = "Add Details")); // do we check this here? 

    IE.TextField("Name").value = "John Smith"; 
    // etc 
} 

代わりに、我々は、私は、「詳細を追加」ページ

の午前そして、ちょうどそのステップは、ホームページから始まると 'をクリック含ん作る考える

で開始することができます「詳細を追加」ボタンをクリックしてそのページにアクセスします。これは、[保存]をクリックした後もホームページに戻るのと同じ問題が残ります。

どのような考えですか?

答えて

3

このシナリオでは、確認する必要はありません。基本的に、テストはGiven-When-Then(arrange-act-assert)です。And I am on the "Add Details" pageは実際には(アサート)When(アクト)の中にあります。

私の直感では、それが代わりに次のようになりますということです。

Scenario: Add Details directs to "Add Details" page 

Given I am on the "Home" page 
When I click "Add Details" 
Then I am on "Add Details" page 


Scenario: "Add Details" adds person to the list 

Given I am on the "Add Details" page 
And I enter "John Smith" in the Name field 
And I click "Save" 
Then I am on the "Home" page 
And "John Smith" appears in the list 
+1

はい、私はそれについて考えていたが、私は最初のシナリオがあまりにもきめ細かなと思っていました。ページ間を移動するためだけのシナリオを追加することについてはわかりませんでした。しかし、それは私の例よりも読みやすいので、正しいかもしれません。 –

関連する問題