2

私はWebプロジェクトでBDDを使い始めたばかりで、SpecFlowとWatiNを使用してブラウザーを介して自動化していますが、手順の記述方法がよくわかりません。

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

最初のテストでは、いくつかの詳細を入力し、それらがリストに表示されることを確認します。私の最初の試みは次のようになります。

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

[ホームページ]を表示している
場合、[詳細を追加]をクリック
し、[名前]フィールドに「JohnSmith」と入力して
[保存]をクリック
すると、リストに「JohnSmith」が表示されます。

ただし、これには2、3ページ間を移動する必要があるため、明示的にする必要があるかどうかはわかりません。そうでない場合は、正しいページにいる、または明らかにどのページに関係していないステップであると想定する必要があります。 m on(たとえば、[詳細の追加]をクリックすると)には、現在表示しているページを確認するためのアサーションがあります。

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

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

[ホーム]ページ
にいる場合[詳細を追加]をクリックして[詳細を追加]
ページ
に移動 し、[名前]フィールドに「
JohnSmith」と入力して[保存]をクリックすると、[
ホーム]に移動します「ページ」
次に「ジョン・スミス」がリストに表示されます

それとも、明示的に言及せずに、オプション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
}

または、

「詳細の追加」ページを表示している場合

そして、そのステップに、ホームページから始めて、そのページにアクセスするために[詳細の追加]ボタンをクリックすることを含めるだけです。これでも、[保存]をクリックした後にホームページに戻る場合と同じ問題が残ります。

何かご意見は?

4

1 に答える 1

3

このシナリオでは、チェックする必要はありません。基本的に、テストはGiven-When-Then(arrange-act-assert)であり、And I am on the "Add Details" page実際には(act)Then内の(assert)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
于 2011-01-24T10:28:46.483 に答える