Parasoft Selenic は Selenium テストでのロケータの使用を分析し、テストの安定性を維持するためにロケータを更新するための修正候補を提供します。テストを実行して結果を処理した後に、Parasoft レポートや IDE に修正候補を表示します。

このセクションの内容:

IDE で修正候補を表示

Selenic 修正候補ビューは、Selenium テストの保守性を向上させるためのインターフェースです。これには、テストで使用される要素ロケータに関する情報と、ロケータの表示と更新を行うために実行できるアクションが含まれています。このセクションでは、Eclipse での修正候補の表示について説明しますが、IntelliJ でも同じ機能を利用できます。

Selenic は、Selenic 実行コンフィギュレーションでのテスト実行後に修正候補を生成して IDE にロードします。デフォルトでは、Selenic は失敗した要素ロケータの修正候補のみを生成しますが、WebDriver の設定 と Selenic 実行コンフィギュレーション 画面ですべてのロケータに対する修正候補を生成するように実行コンフィギュレーションを設定できます。

自動テスト実行によって生成されたレポートから修正候補をインポートすることもできます。[修正候補のインポート] リンクをクリックして、JSON レポートファイルの場所を指定します。

レポートが読み込まれたら、[ロケータに移動] アイコンをクリックして、Page Object ファイル内のロケータを確認できます。

テストが Page Object Model に従っていない場合は、[テスト メソッドに移動] アイコンをクリックして、ロケータによって識別されたテストファイル内のテストメソッドを開くことができます。

テストで Cucumber の Feature ファイルを実行する場合は、[ステップ定義に移動] アイコンをクリックして、ステップ定義を含むファイルを開くことができます。

手動アップデート

  1. Selenic 修正候補ビューの [ロケーターの修正候補を表示] リンクをクリックして、推奨するロケータにアクセスします。ロケータの理解については、ロケータの修正候補について を参照してください。
  2. 使用するロケータを選択し、クリップボードにコピーします。
  3. テストが Page Object Model に従っている場合は、この画面を閉じて、[ロケータに移動] アイコンをクリックできます。テストが Page Object Model に従っていない場合は、[メソッドに移動] アイコンをクリックして、ロケータによって識別されたテストファイル内のテストメソッドを開きます。
  4. ページまたはテストファイルが開いたら、推奨するロケータをファイルに貼り付けて更新できます。テストが Page Object Model に従っていない場合は、更新を行うために、テストメソッド内で壊れたロケータを手動で見つける必要があります。

クイックフィックス アップデート

Selenic 修正候補ビューの [ロケータの更新] リンクをクリックして、推奨するロケータにアクセスします。テストに最適なロケータを選択し、[更新] をクリックするだけで、テストを即座に更新できます。ロケータの理解については、ロケータの修正候補について を参照してください。

ロケータをクリップボードにコピーして、手動でテストに貼り付けることもできます。

レポートの表示

[実行後に HTML レポートを開く] オプションが有効になっている場合、IDE で Selenic を実行した後にレポートが開きます(WebDriver の設定 と Selenic 実行コンフィギュレーション を参照)。レポートの起動に失敗した場合は、<ECLIPSE_WORKSPACE>/.metadata/.plugins/etc ディレクトリから開くことができます。

セッション概要

[開始] フィールドは、分析を開始した時間を示します。

[要確認のテスト] リンクの値は、実行されたテストの総数あたりの実行中に失敗したテストの数を示します。リンクをクリックして、[詳細 - 要確認のテスト] セクションを開きます。

[実行概要] リンクをクリックして、[詳細 - 実行概要] セクションを表示します。実行概要セクションには、テスト名、実行時間、およびその他の詳細が含まれています。

概要 - 要確認のテスト

このセクションは、成功したテストと失敗したテストの概要、およびセルフヒーリング機能のオプションを有効にした時に解決(修復)された問題について説明してます。

チームが視覚テストに Applitools を使用している場合、視覚的な変更は [問題] に表示されます。Applitools との連携については、コマンドライン をご覧ください。

パフォーマンスベンチマーク機能を使用している場合、超過した実行時間は [問題] に表示されます。パフォーマンスベンチマークを有効にする方法については、Selenic 実行コンフィギュレーション( Selenic 実行コンフィギュレーション を参照)、またはコマンドライン( -performanceBenchmarking を参照)してください。  

詳細 - 要確認のテスト

このセクションは、失敗したテストの名前と、失敗の原因となった問題の説明を表示しています。

実行中に画面ショットオプションが有効になっている場合、失敗に関連する画面ショットへのリンクが利用可能になります。

失敗したテストをクリックして、テストの詳細ビューを開きます。以下の情報が表示されます:

  • 問題を修正するための修正候補
     
  • テスト失敗に関するスタックトレース
     
  • コンソールエラー(出力された場合のみ表示)

チームが視覚テストに Applitools を使用している場合、このセクションにはビジュアルの変更が表示されます。Applitools Web アプリケーションへのリンクも含まれます。Applitools との連携については、コマンドライン をご覧ください。

パフォーマンスベンチマーク機能を使用している場合、このセクションには、平均実行時間を超えたテストに関する情報も含まれます。パフォーマンスベンチマークを有効にする方法については、コマンドライン をご覧ください。

詳細 - 実行概要

このセクションは、実行中の各テストの成功/失敗に関する状態の詳細と、各テストの実行時間を表示しています。この情報は、テストやアプリケーションのパフォーマンスのベースラインを決定するのに役立つ事を目的としています。

[平均時間] 列には、最新の実行を除く、過去の成功したテスト実行の平均時間が表示されます。少なくとも1つのテストメソッドが失敗すると、テストクラス全体が失敗としてマークされます。

パフォーマンスベンチマーク機能を使用している場合、このセクションには、平均実行時間を超えたテストに関する情報も含まれます。この情報は、テストやアプリケーションの潜在的な問題を診断するのに役立つ事を目的としています。パフォーマンスベンチマークを有効にする方法については、コマンドライン をご覧ください。少なくとも1つのテストメソッドが平均実行時間を超えている場合、テストクラス全体が平均実行時間を超えているとマークされます。

DTP で結果を表示

結果を DTP に送信するように Selenic を設定した場合、テストウィジェットを DTP ダッシュボードに追加してデータを表示できます。DTP へのデータの送信は、コマンドラインから Selenic アナライザーを実行する事によってサポートされます。結果を DTP に送信するように Selenic を設定する方法については、DTP で結果を公開 を参照してください。ダッシュボードを作成、構成、表示する方法については、Parasoft DTP のドキュメント を参照してください。

テストの失敗(例:アサーションの失敗、スローされた例外など)は、DTP で失敗としてマークされます。修復されたテストは未完了としてマークされます。

以下のテストウィジェットの例は、合計 11 件のテストを示しています。

2 件のテストが失敗し、成功した 9 件のテストのうち、1 件のテストは Selenic によって自動的に修復された事を示しています。ウィジェットをクリックすると、DTP テストエクスプローラービューが開き、テストに関する追加情報が表示され、テスト修正タスクに優先順位を付けるためのインターフェイスが提供されます。

 

DTP に Applitools の結果を送信

Applitools が視覚的な違いを報告した場合、テストの実行は DTP で不完全としてマークされます。テストが失敗した場合、Applitools の実行は中止され、テストは DTP で失敗としてマークされます。Applitools の失敗に関連する問題は、IDE の [修正候補] ビューにインポートされません。

ロケータの修正候補について

Selenic は、各ロケータに信頼度(confidence factor)、重み(weight)、および安定度(stability)を割り当てます。重み(weight)と安定度(stability)は、過去のテスト実行に基づいています。信頼度(confidence factor)は、重み(weight)と安定度(stability)から計算され、推奨するロケータを使用すべきであるという Selenic の信頼度を表します。このセクションは、Selenic が生成するロケータの修正候補を理解するための背景情報を提供しています。

ロケータの修正候補で用いるタイプ

Selenic アナライザーは、既存のロケータを修復または改善するために、さまざまなタイプのロケータを推奨します。各タイプのロケータは、テキスト、名前、ID、位置、クラス名、またはその他の条件に基づいて要素を照合します。行と列で隣接するテキストに基づいてテーブルセルを照合するテーブルロケータを含むいくつかの修正候補のタイプもこれらの条件を組み合わせます。ロケータの修正候補で用いるタイプに関する完全なリストは、Selenic インストールディレクトリの "locator_weights.properties" ファイルに記載されています。このファイルは、例を含む各タイプの説明を提供します。

各ロケータの修正候補で用いるタイプは、状況に応じて複数の表現を持つこともできます。例えば、Selenic は、テキストに基づいてハイパーリンクを見つけるロケータを推奨する場合があります。このロケータタイプには、リンクテキスト、部分リンクテキスト、XPath など、Selenium で複数の表現を持ちます。テキストが完全に一致する場合は、リンクテキストロケータを推奨します。部分的なテキストの一致には、部分的なリンクテキストまたは XPath ロケータのいずれかを推奨します。

ロケータの安定度(Stability)

安定度(stability)は、あるタイプのロケータの修正候補が過去のテスト実行の結果を踏まえ、将来どの程度うまく機能するかを予想するものです。テストの実行履歴を活用するには、テストが Selenic で実行されている必要があります。

例えば、Selenium テストにハイパーリンクで一致するロケータがあり、リンクのテキストのすべて、または一部が各テスト実行で一定である場合、Selenic は高い安定度(stability)の数値を持つリンクテキストの修正候補を生成します。ただし、各テスト実行でページ内のハイパーリンクの位置が移動した場合は、位置ベースのロケータの修正候補により、安定度(stability)が非常に低くレポートされます。

ロケータの信頼度(Confidence)と重み(Weight)

各修正候補には、ロケータの安定度(stability) と重み(weight)から計算される信頼度(confidence factor)があります。重み(weight)は、安定度(stability)が高い場合でも、特定のロケータの修正候補の信頼度(confidence factor)を低下させるために使用されます。例えば、各テスト実行でページ内の要素が移動しなかった場合、Selenic は位置ベースのロケータを推奨する場合があります。位置ベースのロケータは非常に高い安定度(stability)を持ちますが、位置ロケータは他のタイプのロケータよりも壊れやすいため、信頼性が非常に低い場合があります。その結果、総合的に信頼度(confidence factor)を低下させるために、位置ベースのロケータの重み(weight)を低くします。

ロケータの重み(Weight)の設定

各タイプのロケータの修正候補の重み(weight)は、"locator_weights.properties" ファイルで設定されています。値は 0 ~ 1 の間である必要があります。1 の値は、そのタイプのロケータの修正候補が、安定度(stability)の数値と同じ信頼度(confidence factor)を持つことを意味します。0 の値は、特定のタイプのロケータが推奨されないようにするために使用されます。

locator_weights.properties ファイルの重み(weight)の例
# Locates an element by its text content.  Builds a "link text" or
# "partial link text" locator for a hyperlink, otherwise builds an "xpath"
# locator.
# examples:
#     link text: click me
#     partial link text: click
#     xpath: descendant::div[normalize-space(.)="The quick brown fox"]
text_locator.link_text=.98
text_locator.partial_link_text=.98
text_locator.xpath=.98


  • No labels