テストパフォーマンスの最適化

テストの実行にかかる合計時間は、テスト環境の待機時間や処理能力から、個々のステップの戦略や意図に至るまで、幅広い要素に左右されます。実行時間の傾向を把握することで、実行時間の長いテスト、パフォーマンスのリグレッション、テストスイートの実行時間を認識できます。

このガイドでは、テストとフローの全体的な実行時間を短縮できるいくつかのステップを簡単に説明します。テストパフォーマンスを最適化すると、以下のような状況で特にメリットがあります。

  • アプリケーションのリリースサイクルの短縮: mablテストをCI/CDパイプラインの一部として実行している場合は、実行時間を短縮することでワークフローが速くなります。
  • 個別のテスト検証の迅速化: 更新やトラブルシューティングのステップを検証するためにテストをアドホックに実行している場合は、パフォーマンスの最適化によって、更新が期待どおりに機能するかどうかを検証するための待機時間が短縮されます。

ベースラインの理解

まず、トレンドをモニタリングします。テストの詳細ページとフローの詳細ページには、以下の情報を含む、[Performance] タブがあります。

  1. アプリケーションの1日の平均読み込み時間: このグラフは、テストの各ステップ間でアプリケーションの読み込みにかかる合計時間を計測します。エンドユーザーは、このユーザー手順を手動で完了する際に、この合計時間をアプリケーションのパフォーマンスとして感じることになります。これは、テストの実行時間とは別であり、常にテストの実行時間より短くなります。
  2. テスト/フローの実行時間: このセクションは、Chromeでテストまたはフローの実行にかかった最短時間、平均時間、最長時間を日別の平均で表示します。
  3. 1日の平均実行時間: このグラフは、Chromeでのテストとフローの実行時間の90日間にわたる傾向を表示します。

このガイドでは、実行時間を最適化できるステップを取り上げます。

10541054

[Performance] ページには、アプリケーションの読み込み時間と、テスト/フローの実行時間の1日の平均が表示されます。

以下のような点を考察すると、分析に役立ちます。

  • 結果は一貫しているか、それとも大きく変化しているか?
  • 傾向は改善しているか、悪化しているか?

実行時間が全体的に増加している場合でも、時々急増する場合でも、原因を特定して対処することで、実行時間を短縮し、予測しやすくすることができます。

改善機会の特定

時々か常にかを問わず、テストやフローの実行が目標の時間よりも遅い場合は、パフォーマンスを最適化するために、以下のアドバイスが参考になります。このセクションでは、全体に関わる改善策から詳細な対処法の順にアイデアを列記しています。最大限の効果を得るには、個別のステップに取り組む前に、より包括的な対策を講じることをお勧めします。

アプリケーションパフォーマンスの確認

[Performance] タブの Daily average app load グラフを確認して、アプリケーションのベースラインとなるパフォーマンスを理解します。アプリケーションの読み込み時間が増加している場合、パフォーマンスの低下を示している可能性があります。アプリケーションの読み込み時間が常に一定の時間に急増する場合は、テスト環境にmablテストを実行するだけの処理能力があるかどうかを確認します。

Runnerの確認

テストとプランが、Legacy Runnerで実行されるように設定されている場合、実行速度を上げるためにテストとプランをUnified Runnerへ移行することを検討してください。

テストまたはフローの戦略の理解

場合によっては、テストの戦略全体の見直しが必要になるかもしれません。最適化の方法には、以下のようなものがあります。

  • プランでAPIテストを利用して、ログインフローの速度を高める
  • 最終的な目的を検証しないステップを削除する: すべてのクリックとアサーションが必要であるか、テスト対象のページに速く移動する方法がないかを検討します。
  • フローをカスタマイズする: 多くのテストが実行時間の長い同じフローを使用している場合、そのフローを最適化すると大きな効果が得られます。たとえば、ターゲットを絞った小さなフローを複数作成したり、フロー内の時間がかかるステップを特定して最適化したりします。
  • プランの並列実行で最も時間がかかるテストを特定する: すべてのテストを並列に実行するプランで、他のテストより大幅に時間がかかるテストがある場合、そのテストの実行時間を最適化することでプラン全体の実行時間を速められます。

個々のテストの検査

[Test/Flow run time] セクションを使用して、最長時間の実行を特定します。[Slowest] をクリックすると、そのテスト実行の [Test Output] ページが表示され、ステップのタイムラインを使用して、実行に時間がかかっているステップを特定できます。実行時間を短縮するために試せる方法をいくつか紹介します。

  • [Configure Find(https://help.mabl.com/docs/configuring-find-steps-ja)] を使用して遅いステップにコンテキストを追加する: ステップの実行時間が長い理由として、mablにエレメントを見つけるための情報がほとんどないというケースが挙げられます。mablアクティビティログから、特定のエレメントの検索に常に時間がかかっていることがわかる場合は、[Configure Find] を使用してコンテキストを追加することを検討してください。テストステップにコンテキストを追加する方法の詳細については、エレメントを正しく見つけるを参照してください。
  • [Configure Find] の値を更新する: [Configure Find] をすでに使用していて、ステップに時間がかかる場合は、[Configure Find] の値が最新であるかどうかを確認します。たとえば、特定のテキストを使用してエレメントを検索するようにステップを設定している場合、このエレメントのテキストが変更されていると、エレメントを最新版に自動修復するために待機時間が発生する可能性があります。[Configure Find] の値を想定されている最新の値に変更することで、ステップの完了にかかる時間を短縮できます。
  • waitステップを変更または削除する: waitステップは、アプリケーションを確実に操作可能な状態にしたい場合に便利な方法です。テストにwaitステップが多く含まれる場合は、waitステップが存在する理由を把握してください。その理由によっては、waitステップを削除して、インテリジェント待機を利用し、waitステップをwait untilステップに置き換えるか、合計待機時間を削減することができる可能性があります。
  • 不要なホバーを削除する: ホバーを記録すると、mablは非表示のデータとステップを大量に収集するため、プランの実行が遅くなる可能性があります。テストの実行速度を上げるには、不要なホバーアクションを削除します (ホバーの削除を参照)。

テストとフローの最適化は、協力して進め、結果を考察する作業です。このプロセス中に、チームのワークスペースの一部に改善の余地があることが明らかになるかもしれません。一般的なテストの実践方法については、mablでのチーム作業を参照してください。