私は常に、物事を関連情報のグループに分割するのが好きです。たとえば、ユーザー クラスがある場合、それをいくつかの小さなクラス (LoginCredentials、ProfileInfo、Settings など) に分割することがありますが、通常は、これらのサブ クラスを含むトップ レベルの User クラスを保持します。
私が確実にお勧めすることの 1 つは、これらの個々の関数すべてではなく、1 つの FillForm 関数にオブジェクトを渡すことです。このアプローチを使用すると、いくつかの大きな利点があります。1 つは、多くのテスト ケースで使用する「共通の」事前構成済みオブジェクトをいくつか用意できることです。例えば:
public class FormInfo
{
string Domain;
string Name;
string Category;
// etc...
public FormInfo(string domain, string name, string category)
{
Domain = domain;
Name = name;
Category = category;
// etc...
}
}
// Somewhere in your initialization code
public static FormInfo Info1 = new FormInfo("myDomain1", "myName1", "myCategory1");
public static FormInfo Info2 = new FormInfo("myDomain2", "myName2", "myCategory2");
You can still update one of your common merchants if you need to do something one-off:
// In your test case:
Info1.Category = "blah";
FormPage.FillForm(Info1);
または、必要に応じて、特定のテスト ケース用に新しいマーチャント オブジェクトを作成することもできます。これらのオブジェクトを使用してフィールド検証などを行うこともできます。または、私が通常行うことは、特定のフィールド検証のためにページ オブジェクト パターンを壊すことです。そのため、マーチャント ドメイン フィールドを検証する場合は、次のようにします。
Info1.Domain = null; //This should make the FillForm function skip doing anything with this field.
FormPage.FillForm(Info1);
FormPage.DomainTextBox.Text = "field validation string";
このアプローチのもう 1 つの重要な利点は、フィールドを追加、削除、または変更するためにページが更新された場合、FormInfo オブジェクトと FillForm 関数を更新するだけで済み、FillForm 関数を呼び出す特定のテスト ケースを変更する必要がないことです。一般的な FormInfo オブジェクトの 1 つを使用していると仮定します。より多くのカバレッジを取得する別の可能性は、共通の FormInfo オブジェクトの 1 つを設定して、最小/最大長に準拠し、許可されているすべての異なる文字間を循環する各フィールドのランダム文字列を生成することです。これにより、同じ一連のテストから追加のテストを取得できますが、特定の文字列からのみ失敗の結果を取得し始めるとノイズが追加される可能性があるため、注意してください。