自動修復の仕組み

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

堅牢なテスト

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

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

自動修復の仕組み

mablは、テストを実行してエレメントを操作するたびに、エレメントの属性を収集します。その属性を使用して、次回エレメントを検索し、時間経過に伴う変化を追跡します。mablは、テキスト、CSSクラス、data-test-id、およびページ上の場所やサイズなど、30を超える個別の属性を追跡します。

あるエレメントを見つけるとき、特定のテキストやその他の属性を持つ関連エレメントを探す方が方法として最適な場合があります。このような場合、mablは、エレメントの祖先エレメントの情報も収集し、その情報を利用して、操作する特定のエレメントを検索します。

エレメントを識別して潜在的に修復する一般的なプロセスでは、まず、追跡した属性との一致に基づいてエレメント候補を検索し、次に、各候補に一致する属性の組み合わせと、そのエレメントおよび類似エレメントの検索履歴に基づいて、最も一致するエレメントを選択します。エレメントに対して祖先が記録されている場合、mablはこのプロセスをまず祖先に対して実行し、次に祖先内のターゲットエレメントの候補を識別し、再び最適なものを選択します。

以前の実行に基づいて明確に一致するエレメントがない場合、mablは、一致するエレメントを選択するまでの待機時間を動的に増やし、まず、ページの大幅な変更が停止したときに識別を試みます。次に、ページ上に類似エレメントがあることや、一致する識別属性が減少したことが原因で最適な一致であることが不確実な場合、待機時間をさらに追加し、結果を再確認します。

エレメントの履歴に基づいて確度の高い一致がある場合、mablはエレメントの情報を新しいバージョンの情報に更新します。確度の高い一致がない場合でも、エレメントに関する一部の情報と一致する候補がある場合、mablは自動修復を試みます。

「試みます」と書いたのは、テストが正常終了するまで自動修復プロセスは完了していないためです。エレメントの変更度合いが大きく、見つけたエレメントが正しいかどうかを確信できない場合、mablは最適なエレメント候補を使用してテストステップの実行を試みます。テストがエラーなしで完了すると、mablはエレメントの記述を更新し、自動修復インサイトを記録します。テストが最終的に失敗した場合、mablは試みた自動修復を実行の出力ログに書き込みますが、記録は行いません。

自動修復の範囲

ページ上のエレメントを操作するすべてのテストステップは、カスタム (CSS/XPath) 検索を使用するものを除いて、自動修復が可能です。ユーザーがエレメント検索のためにCSSセレクターまたはXPathクエリを指定した場合、目的のエレメントをユーザーがどのように識別したいかがmablに正確に通知されるため、自動修復は行われません。それ以外の場合、目的のエレメントに関するmablの把握内容に高い確度で一致するエレメントがなければ、mablはステップの自動修復を試みます。また、ユーザーは、検索の設定を行うことにより、適切なエレメントの検索に関する詳細情報をmablに提供し、指定したタイムアウト後も自動修復を有効にすることができます。

テストステップのエレメントの属性は、テストが実行される環境ごとに追跡および更新されます。たとえば、プランが2つあり、一方のプランではQA環境に対して、他方のプランでは本番環境に対してテストを実行する場合、これら2つの環境で別々にエレメント属性が追跡されます。

つまり、自動修復をもたらすQAの変更は、本番環境に対して実行されている同じテストの動作には影響を与えません。

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

テスト詳細ページから起動するアドホック実行は、プランまたはデプロイイベントを介して実行されるテストと同じ実行環境を使用して、クラウドでテストを実行します。ただし、アドホックテストの実行は、全体的な統計、メトリック、インサイトに影響を与えることなく、テストの編集を検証できるようにすることを目的としています。したがって、アドホック実行は上記と同じ戦略を使用して変更に適応しますが、適応に成功しても、自動修復として保存されません。


Related resources
Did this page help you?