一般に、テスト対象のソフトウェアは定期的に変更されます。一部の変更は重要であり、以前のテストを作成し直す必要があります。しかし、変更の多くは、ボタンのラベル変更やレイアウト調整などの軽微なものです。気づかれることもないようなこうした変更でも、自動テストがたやすく中断される可能性があります。
こうした変更に適応するのがmablの自動修復です。避けられない変更がある場合でも、ブラウザーテストの実行を続けることができます。
仕組み
ページ上のエレメントを操作するテストステップが記録されると、mablは属性を収集し、その属性に基づいてエレメントを検索し、時間経過に伴う変化を追跡します。この情報がステップのエレメント履歴の基礎となります。テストがクラウドで実行される場合、目的のエレメントに関するmablの把握内容に高確度で一致するエレメントがなければ、mablはステップの自動修復を試みます。
次の2種類のステップは、ページのエレメントを操作しますが、自動修復は使用しません。
- カスタム検索ステップ: ユーザーがエレメント検索のためにCSSセレクターまたはXPathクエリを指定した場合、目的のエレメントをユーザーがどのように識別したいかがmablに正確に通知されるため、自動修復は行われません。
- Configure Findステップのうち、[Disable auto-heal] が有効なもの
エレメントを識別して潜在的に修復する一般的なプロセスは次のとおりです。
- エレメント候補を検索する
- 高確度の一致を見つける
- 高確度の一致が見つからない場合、自動修復を試みる
エレメント候補の検索
mablは、追跡された属性に一致するエレメントと、そのエレメントおよび類似エレメントの検索履歴を検索します。
- エレメントに対して祖先が記録されている場合、mablはこのプロセスをまず祖先に対して実行します。次に祖先内のターゲットエレメントの候補を識別し、最適なものを選択します。
- ステップでConfigure Findが使用されている場合、mablは指定された条件に一致するエレメントのみを検討します。
高確度の一致の検索
mablは、過去の実行のデータに基づき、エレメントがページ上に実行可能な状態でいつ表示されるかを判断します。次に、過去の実行から学習したエレメントモデルと高確度で一致するものを探します。
- 高確度の一致がある場合、mablはターゲットエレメントでステップのアクションを最後まで実行します。
- エレメントが実行可能な状態で表示されることが見込まれるにもかかわらず、高確度の一致が見つからない場合、mablは自動修復を試みます。
- ステップが比較的新しく、プラン実行がまだほとんど成功していない場合、mablはページ操作速度に基づき、アプリケーションのエレメントの完全一致または高確度の一致を待機する時間を判断します。
- プラン実行が何度か成功した後は、mablはインテリジェント待機を使用して、完全一致または高確度の一致を待機する時間を判断します。
Configure Findを使用するステップでは、高確度の一致を見つけるプロセスは少し異なります。mablはまず、選択されたタイムアウトが経過するまで、特定の条件で高確度の一致を探します。
- 高確度の一致がある場合、mablはターゲットエレメントでステップのアクションを最後まで実行し、必要に応じてエレメントに軽微な更新を行います。
- 選択されたタイムアウトまでに高確度の一致が見つからない場合、その次のフェーズは、ステップに選択されたオプションによって異なります。
- "Auto-heal": mablは自動修復を試みます。
- "Disable auto-heal": mablはステップを失敗と判定し、正しいエレメントが見つからなかったことを通知します。
自動修復の試み
エレメントの変更度合いが大きく、見つけたエレメントが正しいかどうかを確信できない場合、mablは次のように自動修復を試みます。
- 標準的な自動修復: mablはエレメントモデルと最も一致するものを探します。このプロセスでは、ページ上の利用可能なエレメントを対象にしたモデルとの部分一致の比較が行われます。
- 高度な自動修復: 標準的な自動修復で適切な一致が見つからない場合、mablは高度な自動修復を試みます。高度な自動修復では、生成AIを用いて新しいテキストや意味のある属性値との意味的な類似性を識別し、適切な一致を見つけます。最適な一致の信頼度が低い場合、一致の信頼度が低いエレメントへの自動修復は行われず、このテストステップは失敗します。
ステップが自動修復された場合、次のいずれかの結果になります。
- テストが最終的に成功し、テストがプラン実行の一部である場合、mablはエレメント履歴のエレメントの記述を更新し、自動修復インサイトを記録します。
- テストが最終的に失敗するか、テストがアドホック実行の一部である場合、mablは試みた自動修復を出力ログに書き込みますが、エレメント履歴の更新やインサイトの記録は行われません。
テストステップのエレメント履歴は、テストが実行される環境ごとに追跡および更新されます。
たとえば、プランが2つあり、一方のプランではQA環境に対して、他方のプランでは本番環境に対してテストを実行する場合、これら2つの環境で別々にエレメント属性が追跡されます。
QA環境で何らかの変更が行われ、その結果自動修復が行われても、本番環境に対して実行されている同じテストの動作には影響しません。
ローカル実行と自動修復
ローカル実行の場合、mablは最新のクラウド実行のモデルを使用して正しいエレメントを見つけます。ローカル実行で確度の高い一致が見つからない場合、標準的な自動修復を使用します。テスト実行が成功した場合でも、ローカル実行での自動修復の試みは自動修復インサイトとして保存されず、エレメント履歴への影響はありません。
高度な自動修復はクラウドのみの機能です。
アドホッククラウド実行と自動修復
アドホッククラウド実行は、プランまたはデプロイイベントでのテスト実行と同じ実行環境を使用し、全体的な統計、メトリック、インサイトに影響を与えることなく、テストの編集を検証できるようにすることを目的としています。そのため、アドホック実行はプランまたはデプロイイベントでのテスト実行と同じ検索ストラテジーを使用しますが、アドホック実行で適応に成功しても、エレメント履歴に自動修復として保存されません。