私は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
}
または、
「詳細の追加」ページを表示している場合
そして、そのステップに、ホームページから始めて、そのページにアクセスするために[詳細の追加]ボタンをクリックすることを含めるだけです。これでも、[保存]をクリックした後にホームページに戻る場合と同じ問題が残ります。
何かご意見は?