テスト実行時間を短くするための方法について説明します。
1.ブラウザとモバイルアプリ共通
- 待機コマンドの変更 「秒間待つ」コマンドで長時間待機している箇所が多ければ、「UI要素が存在するまで待つ」などの条件で待機するコマンドに変更します。※コマンド一覧
- 初期化
- 「ログインしていなければログインする」「既存データがあれば削除する」など必要がある時だけ初期化します(テスト間の依存性が高まる可能性があるので注意が必要です)。
- 既存データの削除など、検証したいことと直接関係ない事前・事後処理については、画面から実施するのではなくサーバ側でテスト用Web APIを用意してそちらを利用します。メンテナンス性も高まります。
- 並列実行 テスト間の依存関係がなければ、ラベルとブラウザパターン・端末パターンを併用する https://speakerdeck.com/nozomiito/magic-podwomotutohuo-yong-surutameni?slide=41 の方法を使い、テストを並列に実行します。
2.モバイルアプリのみ
- ロケータの変更
- xpathロケータは低速になりがちなので、できるだけaccessibility idやios class chainロケータを使用します(MagicPodが標準で提案するロケータはそうなっています)。
- accessibility idの付与(iOS) を参考に、アプリ側でできるだけ多くの要素にidentifierを付与し、MagicPod上でaccessibility idロケータを使えるようにします。accessibility idロケータが使えないと、より低速なxpath等を使わざるを得なくなります。
- 要素の数 テスト対象要素を探す速度は、UIツリー上に存在する要素の数に概ね比例します(見た目上非表示でもツリー上に存在してしまうと遅くなります)。アプリの実装を工夫し、余計な要素を生成しない、裏側に非表示要素やダミー要素を大量に持たない、などすると、テスト実行速度が改善する場合があります。