自動修復の仕組み

mablがアプリケーションの変更にどのように適応するかについて説明します。

一般に、テスト対象のソフトウェアは定期的に変更されます。一部の変更は重要であり、以前のテストを作成し直す必要があります。しかし、変更の多くは、ボタンのラベル変更やレイアウト調整などの軽微なものです。気づかれることもないようなこうした変更でも、自動テストがたやすく中断される可能性があります。

こうした変更に適応するのがmablの自動修復です。避けられない変更がある場合でも、ブラウザーテストの実行を続けることができます。

仕組み

ページ上のエレメントを操作するテストステップが記録されると、mablは属性を収集し、その属性に基づいてエレメントを検索し、時間経過に伴う変化を追跡します。この情報がステップのエレメント履歴の基礎となります。テストがクラウドで実行される場合、目的のエレメントに関するmablの把握内容に高確度で一致するエレメントがなければ、mablはステップの自動修復を試みます。

📘

自動修復が行われないステップ

次の2種類のステップは、ページのエレメントを操作しますが、自動修復は使用しません。
(1) カスタム検索ステップ: ユーザーがエレメント検索のためにCSSセレクターまたはXPathクエリを指定した場合、目的のエレメントをユーザーがどのように識別したいかがmablに正確に通知されるため、自動修復は行われません。
(2) Configure Findステップのうち、[Disable auto-heal] が有効なもの

エレメントを識別して潜在的に修復する一般的なプロセスは次のとおりです。
1. エレメント候補を検索する
2. 高確度の一致を見つける
3. 高確度の一致が見つからない場合、自動修復を試みる

エレメント候補の検索

mablは、追跡された属性に一致するエレメントと、そのエレメントおよび類似エレメントの検索履歴を検索します。

  • エレメントに対して祖先が記録されている場合、mablはこのプロセスをまず祖先に対して実行します。次に祖先内のターゲットエレメントの候補を識別し、最適なものを選択します。
  • ステップでConfigure Findが使用されている場合、mablは指定された条件に一致するエレメントのみを検討します。

高確度の一致の検索

mablは、過去の実行のデータに基づき、エレメントがページ上に実行可能な状態でいつ表示されるかを判断します。次に、過去の実行から学習したエレメントモデルと高確度で一致するものを探します。

  • 高確度の一致がある場合、mablはターゲットエレメントでステップのアクションを最後まで実行します。
  • エレメントが実行可能な状態で表示されることが見込まれるにもかかわらず、高確度の一致が見つからない場合、mablは自動修復を試みます。

📘

Unified Runnerによる実行での待機時間の判断

  • ステップが比較的新しく、プラン実行がまだほとんど成功していない場合、mablはページ操作速度に基づき、アプリケーションのエレメントの完全一致または高確度の一致を待機する時間を判断します。
  • プラン実行が何度か成功した後は、mablはインテリジェント待機を使用して、完全一致または高確度の一致を待機する時間を判断します。

Configure Findを使用するステップでは、高確度の一致を見つけるプロセスは少し異なります。mablはまず、選択されたタイムアウトが経過するまで、特定の条件で高確度の一致を探します。

  • 高確度の一致がある場合、mablはターゲットエレメントでステップのアクションを最後まで実行し、必要に応じてエレメントに軽微な更新を行います。
  • 選択されたタイムアウトまでに高確度の一致が見つからない場合、その次のフェーズは、ステップに選択されたオプションによって異なります。
    • "Auto-heal": mablは自動修復を試みます。
    • "Disable auto-heal": mablはステップを失敗と判定し、正しいエレメントが見つからなかったことを通知します。

自動修復の試み

エレメントの変更度合いが大きく、見つけたエレメントが正しいかどうかを確信できない場合、mablは自動修復を試み、最適なエレメント候補を使用してテストステップを実行します。自動修復プロセスの結果は、次の2つのいずれかです。

  1. テストが最終的に成功し、かつ、プラン実行の一部である場合、mablはエレメント履歴内の記述を更新し、自動修復インサイトを記録します。
  2. テストが最終的に失敗するか、アドホック実行の一部である場合、mablは試みた自動修復をmablアクティビティログに記録しますが、エレメント履歴の更新やインサイトの記録は行いません。

📘

自動修復は環境単位で行われる

テストステップのエレメント履歴は、テストが実行される環境ごとに追跡および更新されます。

たとえば、プランが2つあり、一方のプランではQA環境に対して、他方のプランでは本番環境に対してテストを実行する場合、これら2つの環境で別々にエレメント属性が追跡されます。
QA環境で何らかの変更が行われ、その結果自動修復が行われても、本番環境に対して実行されている同じテストの動作には影響しません。

アドホック実行と自動修復

アドホック実行は、プランのテスト実行やデプロイメントイベントと同じ環境を使用し、全体的な統計、メトリック、インサイトに影響を与えることなく、テストの編集内容を検証できるようにすることを目的としています。そのため、アドホック実行はプランのテスト実行やデプロイメントイベントと同じ検索方法を使用しますが、アドホック実行で変更への適応に成功しても、それがエレメント履歴に自動修復として保存されることはありません。


Related resources