イメージ バリデーション(勘所)#3

前回の投稿記事(イメージ バリデーション(使用)#2)では、ContainsImage と、CompareImage による画像比較の使用方法について説明しました。本記事では、イメージ バリデーションを使用する上での 勘所 として以下について説明したいと思います。

  • 類似度と差分結果のレポート
  • イメージ バリデーションで指定するオブジェクト
  • 期待する画像の置換

類似度と差分結果のレポート

イメージ バリデーションの実行アクション(Validation)にて、プロパティの設定を変更せずに実行し、失敗すると下図のようなエラーがレポートされます。

(ContainsImageのレポート)
(CompareImageのレポート結果)

レポートには、類似度、および画像の何処が一致しなかったかの差分に関する差分結果の情報が含まれません。これらの情報をレポートに含めるためには、プロパティに対して、過去の記事(イメージ バリデーション機能 – 拡張レポート機能の有効化の設定を行います。

この設定により、下図の様に類似度、および 差分結果の情報 がレポートに含まれます。

(ContainsImageのレポート)
(CompareImageのレポート結果)

※最新の国内リリース版であるRanorex バージョン9 (v9.1.2) では、ContainsImage のレポート結果として、差分結果の情報(Difference images)を含めることができません。

類似度、および 差分結果の情報を含めたレポート結果の見方については、過去の記事(イメージ バリデーション機能 – テスト実行結果)を参照ください。

イメージ バリデーションで指定するオブジェクト

テスト対象アプリケーションにおいて、1つの画面内に複数のチェック項目があるため、なるべくテスト作成に工数を掛けたくないなど理由により、画面全体を画像として比較しようとするケースがあります。しかしながら、この方法は、以下のケースによって、逆に工数が掛かる結果となる可能性があります。

  • 画面内に動的な情報が表示されることで、意図しない箇所においてエラーが検知される。(ノイズが発生する)
  • Ranorexでは、 デスクトップに表示されている画面範囲に対してのみ比較が可能であり、デスクトップに表示されていない画面に対して比較できないことから、画面によっては、テストに失敗する場合がある。
  • 検証範囲が広いため、複数の箇所において一致しない場合に、問題箇所を確認するのに時間が掛かってしまう。

このような状況を避けるためにも、画面全体ではなく、画面をある程度の小さなブロック(フォーム・コントール、オブジェクト)に分けることをお勧めします。画像を比較する範囲を小さくすることで、運用・管理がし易くなります。

(Ranorex デモアプリ)

期待する画像の置換

テスト対象のアプリケーションのバージョンアップなどにより、期待する画像(画像比較において正となる画像)を更新する必要があります。この場合、各オブジェクトのスクリーンショットを設定し直す必要があり、複数のアクション(Validation)を設定している場合、すべてのアクションを修正するためには、多くの工数が掛かります。

作業工数を短縮するために、Replace expected image を使用する方法があります。

1.テスト対象アプリケーションにおいて、期待する画像が表示されるテスト環境を用意し、対象テストケースを実行します。対象アクション(Validation)で指定しているスクリーンショットは、期待する画像ではないため、すべての画像比較のアクションにおいて、画像が一致せずにエラーがレポートされるはずです。

2.エラーのレポートには、期待する画像(Expected image)と、実際の画像(Actual image)が表示されます。このテストでは、実際の画像が 期待する画像 になります。

(イメージバリデーションのレポート結果)

3.実際の画像(Actual image)のレポート(右上)にあるツールチップから、Replace expected image を選択します。

(イメージバリデーションのレポート結果)

4.表示される 期待画像の置換 画面にて、OKをクリックします。このタイミングで、リポジトリの対象リポジトリアイテム配下に新しくスクリーンショットが生成されます。

(期待画像の置換)

5.表示されるイメージバリデーションの編集 画面にて表示される画像が期待する画像であることを確認し、OKをクリックします。特定の範囲のみを検証したい場合は、範囲を指定後、OKをクリックします。

(イメージバリデーションの編集)

6.期待する画像 が置換されたこを通知するダイアログが表示されます。

(期待する画像が置換されたことを通知するダイアログ)

本記事では、イメージ バリデーションを使用するための勘所として、幾つかのノウハウについて説明しました。また次リリース予定の国内版のRanorexでは、イメージ バリデーションに関して、以下の拡張が予定されており、これまで以上に、利便性の高い機能となるはずです。詳細については、国内版のRanorexのリリース後に、本Blogにて紹介したいと思います。

  • 比較画像のフィルタリング:期待する画像において、選択(矩形選択)された範囲を比較対象から除外することができます。選択は複数指定できます。
  • ContainsImage のレポートに差分結果を含めることができます。
  • 類似度や、差分結果などのレポート情報を各アクションのプロパティからではなく、Ranorexの 設定 で指定できるようになります。
  • 期待する画像(Expected image)と、実際の画像(Actual image)をレポートするかを レポートレベル を条件に、プロパティで設定できるようになります。