イメージ バリデーション機能

このブログ記事では、イメージ バリデーション機能をテストオートメーションプロジェクトで使用する方法を説明します。Ranorexのイメージ バリデーション機能は、2つの画像に違いがあるかどうかだけでなく、画像の類似性や差分画像も記録できます。

イメージ バリデーション機能は、テストの自動化においてさまざまな目的で利用できます。たとえば、Webサイトの繰り返し実行する自動テストに、ヘッダー領域に正しいロゴが表示されているかを確認するテストを追加するなどです。

この記事では、サンプルを使用してイメージ バリデーションの仕組みについて説明します。

  • 前提条件
  • Ranorexプロジェクトのセットアップ
  • 拡張レポート機能の有効化
  • テスト実行結果
  • まとめ

前提条件

RanorexのWebサイトのロゴを違うバージョンのロゴと比較するというテストを行うことにします。より具体的な例で理解できるよう、2つの画像を用意しました。

次の画像は正しいヘッダーロゴです。

次の画像は違うバージョンのロゴです。

比べて見ると、とくにRanorexマークの影の付け方が異なっています。目的は、テストケースのレポートに画像の厳密な違いを記録することです。さらに、違っている部分の詳細を示す画面ショットも取得します。

Ranorexプロジェクトのセットアップ

テストプロジェクトの基本的な構造は次のとおりです。

テストケースのSETUPセクションでは、ブラウザーを開きます。ヘッダー画像が表示されているか確認するため、EnsureVisible() Invoke Actionを呼び出します。

TEARDOWN セクションでは、比較のために開かれたブラウザーウィンドウを閉じます。

次の図は、CheckHeaderImagesレコーディングです。

Screenshot Nameセクションでは、違うバージョンのロゴ画像が選択されています。Repository Itemは検証対象のリポジトリアイテムにリンクされています。ここでは、新しい(正しい)ヘッダー画像にリンクされています。

RanorexのWebサイトでは、画像は実際にはリンクです。しかし、これは必須ではありません。アイテムの画面ショットを使用して比較が行われるため、任意の種類のリポジトリアイテムを選択できます。

画面ショットのサイズは、リポジトリアイテムのサイズと同じでなければなりません。同じでない場合、検証は失敗します。

拡張レポート機能の有効化

デフォルトでは、類似性はレポートされません。プロパティペインで類似性のレポートを有効化できます。検証アクションの上でマウスの左ボタンをクリックするか、F4キーを押すと、プロパティ画面が開きます(デフォルトでは、ウィンドウの右側にプロパティペインが開きます)。

2つの画像の厳密な類似性をレポートに記録するには、[Report Similarity]オプションを有効にします。[Always]に設定すると、検証の結果にかかわらず、テストが実行されるたびにレポートされます。

[Report Difference Images]オプションが有効な場合、実際の画像と期待される画像の差異を表す画像が記録されます。今回は、[OnFail]に変更します。こうすると、検証が失敗したときにだけ差異の画像がレポートされます。

テスト実行結果

テストケースを実行すると、比較される画像が異なっているため、生成されたレポートには期待どおり失敗したモジュールが表示されます。

ログを詳細に分析してみましょう。

まず、検証が失敗したことを示すエラーメッセージがあります。失敗の理由は、リポジトリアイテムの画面ショットが、指定されたヘッダー画像の画面ショットと異なっていることです。

エラーメッセージには、2つの画像の類似性も示されています(括弧内)。類似性1(100%を意味します)が期待されていますが、実際の類似性は約99.39%しかありません。

次の2つのログエントリには、比較された2つの画像が表示されています。

差分画像は最後のログメッセージに表示されています。

左側の画像は、2値(モノクロ画像)での差異を表しています。黒は、その領域では、比較された画像に差がないことを表しています。白のピクセルは、比較された画像がその部分で異なっていることを表します。

右側の画像は、比較された画像の量的な差異を視覚化したものです。色は、2つの画像の色の値を減算し、差分を灰色の画像に適用することで計算されています。比較された画像の色の違いが大きいほど差分の画像に色が付き、灰色の領域は差分がないことを示します。

差分の画像により、実際の違いがどこにあるかを確認できます。

まとめ

このブログ記事では、Ranorexの高度なイメージ バリデーション機能の一部を使用する方法について説明しました。アクションのプロパティを変更することで、さまざまな記録オプションを有効にできます。

2つの画像の類似性をレポートできるのは、多くの場面で便利な機能です。たとえば、イメージ バリデーションの類似性の値を微調整する場合などに使用できます。