マクロ
マクロは、あるタスクを実行する関数の集合体です。 マクロは、ロケーター(パス)と関数を組み合わせて、ユーザーがテスト対象のシステムで実行する連携をスクリプト化するものです。 ボタンのクリック、ナビゲーションの実行、情報のアサーション、さらにはテストのセットアップ速度を向上させるためのAPIコールの送信など、あらゆることをマクロレイヤーでスクリプト化できます。
マクロファイルを使用するメリット
再利用性の促進 : マクロの再利用は、複数のテストにまたがって繰り返される一連の連携を最も効率的に使用する方法です。 例えば、ブログの投稿、ドキュメント、Webコンテンツなどのタイトルを編集するための3つのテストを記述するとします。 編集する連携がパネルを展開して編集ボタンをクリックする必要がある場合、 Assets.macro
ファイルに次のようなマクロを作成します。
macro edit {
Panel.expandPanel(locator1 = Panel#COLLAPSED_MENU);
AssertClick(
locator1 = "Button#EDIT",
value1 = "Edit");
AssertElementPresent(locator1 = Title#EDITABLE);
}
Assets.edit ();
を呼び出すだけで、上記のマクロを3つのテスト(ブログ、ドキュメント、Webコンテンツ)で使用できます。
テストメンテナンスのコスト削減 : 機能の連携方法が変更された場合、各テストではなく単一のマクロを変更する方が、すべてのテストファイルを変更するよりも効率的です。 アセットを編集する上記の同じ例で、ボタンがパネル内になく、ページ上で容易にクリックできるように連携が変更された場合、3つのテストを編集する代わりに、マクロを以下のように編集するだけでよいのです。
macro edit {
AssertClick(
locator1 = "Button#EDIT",
value1 = "Edit");
AssertElementPresent(locator1 = Title#EDITABLE);
}
ベストプラクティス
マクロコマンドのモジュール化 :各マクロコマンドは、特定の目的のためのアクションを1セット包含している必要があります。 これにより、必要になるたびに特定のアクションをすべて再入力するのではなく、マクロコマンドを再利用できるようになります。 より大きいマクロコマンドは、毎回同じ順序で使用される小さなマクロコマンドをいくつかつなぎ合わせて作ることができます。
動的な値のハードコーディングの回避 :ユーザー名やブログエントリーのタイトルなどの動的な値をハードコーディングすると、マクロの再利用が難しくなり、機能が制限されます。 このため、マクロを再利用することも困難です。 マクロを再利用可能かつ特定のものにするためには、 変数を参照してください。
マクロコマンド名を具体的で直感的なものにする :マクロを記述していない他の人がマクロコマンド名を読み、その名前とどのマクロファイルに属しているかを元に、そのコマンドが何をするのかが分かるようにする必要があります。 名前については、動詞を小文字で始め、単語を増やすごとにキャメルケースを使用します。 動詞だけでよくわからない場合は、必要に応じて名詞や形容詞、修飾子を追加します。