mablでは、出力ログやスクリーンショットなどを通じて、失敗したブラウザーテストを簡単にデバッグできます。この記事では、失敗したブラウザーテストのテスト出力を確認して問題を切り分けるためのアプローチを示します。
スクリーンショットから始める
テストが失敗すると、すぐにmablはスクリーンショットを取得します。テスト出力ページで、以下の内容が強調表示されます。
- 失敗したステップ
- 失敗したステップのアプリケーションのスクリーンショット
- 失敗に関する簡単な説明
失敗したステップの前のネットワークログの確認
スクリーンショットには、失敗の診断を開始するために必要な、次のような情報が表示されます。
- ネットワークエラーがあるかどうか
- ページ上のエレメントが読み込まれたかどうか
- 予期しないポップアップが表示されたかどうか
- 失敗したステップに [visual change] というラベルがある場合、現在のスクリーンショットとベースラインのスクリーンショット (横並びに表示される)
- mablがアプリケーションに接続できなかったかどうか
失敗したステップにスクリーンショットがない場合や、アプリケーションが何らかのアクションを処理中の場合もあります。この場合、[Capture state of application after the test] というラベルのテストステップに関連付けられたスクリーンショットを確認すると、テスト失敗時のアプリケーションの状態を把握できます。
ログの確認
[ログ] タブをクリックして、ステップ中に発生した事象についての詳細を確認します。[mablアクティビティ]、[ネットワーク]、[DOM]、[コンソールログ] など、[ログ] セクションのタブをクリックすると、テスト失敗時に発生した事象について詳しく理解することができます。
失敗したステップの前のネットワークログの確認
テスト出力ログの詳細については、ブラウザーテスト出力に関する記事を参照してください。
mablがターゲットエレメントを見つけられない場合
mablは、アプリケーション内のエレメントを見つける柔軟なテストステップを作成するために、多くのインテリジェントな検索ストラテジーを使用します。mablがテストステップ中にエレメントを見つけられない場合、テスト出力とmablトレーナーで問題に関する詳細情報を収集できます。
テスト出力
まず、ステップのスクリーンショットを確認します。
- エレメントがない場合、このステップより前のステップを調査します。この問題は、テストの初期段階で発生していた可能性があります。
- エレメントがあるにもかかわらずステップが失敗した場合、最近のクラウド実行が成功したかどうかを確認します。失敗したステップと成功したステップを比較すると、問題の原因になったと思われる相違点が見つけやすくなります。
[ログ] タブをクリックして、ステップ中に発生した事象についての詳細を確認します。
- mablアクティビティ: これらのログは、ターゲットエレメントの属性と、mablによるエレメントの検索方法を示します。
- 要素の履歴: mablはネイティブに記録されたステップのために要素の履歴を追跡します。ターゲット要素の現在のプロパティを表示するには、要素の履歴をクリックします。要素の詳細や要素の履歴が誤った要素をターゲットにしている場合は、ステップを再トレーニングしてください。
- DOM: mablは、DOMに存在するエレメントに対してのみステップを記録できます。mablがステップを実行したときのアプリケーションのDOMスナップショットを確認するには、[DOM] タブをクリックします。
[mabl Activity] ログの確認
Chrome DevToolsの使用
DOM内にターゲットエレメントがあるかどうかは、Chrome DevToolsでも確認できます。
- [アクション] ⇒ [Download DOM snapshot] をクリックします。
- DOMスナップショットをChromeブラウザーのウィンドウで開きます。
- Chrome DevToolsを `右クリック > [Inspect]` で開きます。
- Chrome DevToolsの [Elements] タブをクリックして、ページのHTMLを表示し、検索します。
Trainerでテストを開く
テスト出力を確認するだけでなく、mablトレーナーで検索ステップをトラブルシューティングすることもできます。
- ステップに関する情報の入手: 問題のステップの [More actions] メニューをクリックします。[ステップの情報を表示] を選択すると、エレメントタグ、innerText、XPathなど、ターゲットエレメントの詳細が表示されます。
Show step info (ステップの情報を表示)
- ステップの再生: トラブルシューティングするステップの [More actions] メニューをクリックし、[ここまで実行] を選択します。このステップより前の段階で逸脱が始まった場合、逸脱が発生したステップを見つけ、そのステップを代わりにトラブルシューティングします。
Play through here (ここまで実行)
- ステップでエレメントが見えることを確認: エレメントが別のエレメントによって隠れる場合、ビューポート幅の変更を試します。エレメントが見える場合は、Configure Findの追加を試みます。ステップですでにConfigure Findが使用されている場合、Configure Findの属性がターゲットエレメントと一致することを確認します。
上流の調査
mablが失敗したステップが、問題の原因となったステップであるとは限りません。以前のステップのスクリーンショットを調査すると、期待した動作を逸脱し始めた時点が失敗したステップより前かどうかを確認でき、問題を切り分けることができます。
たとえば、ドロップダウンを操作するステップに「最初のエレメントを見つける」という設定が行われている場合を考えてみます。そのドロップダウンの前に新しいドロップダウンが追加された場合、このステップは意図されたエレメントではなく、新しいドロップダウンを見つけます。この場合、mablはそのままそのエレメントプロパティを操作しますが、存在しないドロップダウンオプションをクリックしようとすると失敗します。
見つけるべきものがわからない場合は、以前のステップのうち、次のラベルが付いたものを調査してみてください。
- 警告付き合格: このラベルは、実行中に問題が発生したが、成功したステップを示します。後続のステップのスクリーンショットをチェックして、[警告付き合格] のステップが、期待されたアクションを実際に完了したかどうかを確認してください。
- 自動修復: ターゲットエレメントを見つけることができない場合、mablはターゲットエレメントに関する既知の内容に高い確度で一致するものを探します。ステップを完了させるためにmablが誤ったエレメントを使用した場合、テストは後続のステップで失敗する可能性があります。自動修復の詳細については、こちらを参照してください。
最後に成功したテストの表示
失敗したテストが以前は成功している場合、成功した最新のテストを見つけ、2つの実行の違いを比較します。
複数回または複数のブラウザで実行されたテストについては、テスト出力ページのブラウザおよび実行日時セクションのドロップダウンをクリックして、異なる実行を確認してください。
異なるブラウザテスト実行間の切り替え
まず、成功した実行と失敗した実行の間で、テスト出力情報の概要を比較します。たとえば、成功した実行と失敗した実行の間で、環境、プラン、実行時間のいずれかが常に異なる場合、この情報に基づいて問題を切り分けることができます。
mablトレーナーでの再生
mablが基本認証などのブラウザーポップアップに遭遇した場合など、スクリーンショットや出力ログだけでは失敗の原因を特定できないことがあります。テストがどのように実行されているかをライブで確認する場合、mablトレーナーでテストを再生することが最適な方法の1つです。
mablトレーナーでテストを再生するには、次の手順を実行します。
- テスト出力ページで、[テストを編集] ボタンをクリックします。
- ドロップダウンで [起動して失敗したステップをリプレイ] を選択します。
失敗したステップまでmablトレーナーで再生
mablトレーナーでテストを再生する間、Chrome DevToolsを開いてコンソールからのすべてのメッセージを表示すると、それらがテストに影響があるかどうかを判断できます。コンソールエラーに加えて、テストの実行が特に遅い場合は、[ネットワーク] タブも役に立ちます。
タイミングの問題の確認
待機時間は、アプリケーションとテスト環境によってかなり異なります。特定のテストまたはステップが断続的に失敗する場合、テスト環境で待機時間の急増が断続的に生じていないかどうかを確認してください。パフォーマンスの問題を調査する手順には、以下のようなものがあります。
- スピードインデックス、つまりアプリケーションで認識された読み込み速度をチェックして、アプリケーションの読み込み時間が増えていないかどうかを確認します。
- ステップトレースをダウンロードし、mablがステップを記録したときのステップのタイムラインを確認します。
- wait untilステップを失敗したステップの前に追加して、待機時間の急増に対処します。
テスト環境にmablの負荷に耐える処理能力があることを確認
デフォルトでは、mablはプラン内のすべてのテストを並列に実行します。多くの同時ユーザーの処理を想定していないインフラストラクチャーにテスト環境がデプロイされている場合、あるいは予想外の失敗が発生した場合、次のトラブルシューティング手順をお勧めします。
- テストをアドホックでトリガーする
- テストを順次実行するようにプランを変更する
テストの実行時間が予想より長い場合
ブラウザーテストの実行時間が予想より長い場合、テストパフォーマンスの最適化の指示に従って、問題をトラブルシューティングしてください。
mablチームへの連絡
上記を試しても失敗の原因を特定できない場合など、不明な点がある場合は、いつでもmablサポートチームまで (アプリケーション内から、またはメールにて) ご連絡ください。mablチームがサポートいたします。