テストの実行時間を短縮するための方法について説明します。
目次
1.ブラウザとモバイルアプリ共通
1-1.待機コマンドの変更
「秒間待つ」コマンドで長時間待機している箇所が多ければ、「UI要素が存在するまで待つ」などの条件で待機するコマンドに変更します。※コマンド一覧
1-2.初期化
「ログインしていなければログインする」「既存データがあれば削除する」など必要がある時だけ初期化します(テスト間の依存性が高まる可能性があるので注意が必要です)。
既存データの削除など、検証したいことと直接関係ない事前・事後処理については、画面から実施するのではなくサーバ側でテスト用Web APIを用意してそちらを利用します。メンテナンス性も高まります。
1-3.並列実行
テスト間の依存関係がなければ、ラベルとブラウザ/端末パターンを併用しテストを並列に実行します。
1.ラベルを作成する
プロジェクトページの 設定 > テストケースラベルより「追加」をクリックします。
好きな名前を入力して「作成」をクリックします。
2.ラベルをテストケースに付与する
付与したいテストケースの情報タブを開き、該当のラベルにチェックを入れて「更新」をクリックします。
付与されたラベルはテストケース一覧ページでも確認できます。
3.一括実行設定を編集する
一括実行詳細画面を開き、「追加」ボタンを押してパターンを追加します。
「詳細設定」タブにある、テストケースラベルの「設定」をクリックして
パターン「フローA」には、テストケースラベル「フローA」を「含む」にドラッグ&ドロップして設定します。
パターン「フローB」も同様に「フローB」を含むように設定します。
そして共通設定の実行方法を「並列に実行する」へ切り替えます。スタンダードプランの場合同時2並列が可能ですが、オプションを追加することによって最大10並列まで可能です。
ラベルではなくテストケース番号でも指定することができます。
参考: 特定のテストケースのみを一括実行したい - 1.テストケース番号を指定して一括実行
そして一括実行をすると、このようにフローAとフローBが並列に実行されます。
どのようにラベルを設定したかも確認できます。
ラベル内の実行順を指定したい場合は、並び替えすることで指定できます。
参考: 特定のテストケースのみを一括実行したい - 4.(ラベル内の実行順を指定する場合)
2.モバイルアプリのみ
2-1.ロケータの変更
xpathロケータは低速になりがちなので、できるだけaccessibility idやios class chainロケータを使用します(MagicPodが標準で提案するロケータはそうなっています)。
accessibility idの付与(iOS) を参考に、アプリ側でできるだけ多くの要素にidentifierを付与し、MagicPod上でaccessibility idロケータを使えるようにします。accessibility idロケータが使えないと、より低速なxpath等を使わざるを得なくなります。
2-2.要素の数を減らす
テスト対象要素を探す速度は、UIツリー上に存在する要素の数に概ね比例します(見た目上非表示でもツリー上に存在してしまうと遅くなります)。アプリの実装を工夫し、余計な要素を生成しない、裏側に非表示要素やダミー要素を大量に持たない、などすると、テスト実行速度が改善する場合があります。