Ranorex + diff-pdf 連携によるPDF比較

今回は、Ranorexとreg-cli(reg-suit)の連携によるPDFファイル比較の検証について紹介します。
Ranorex単体でも、画像比較を使用するこで、PDFファイルを画像として比較することが可能であり、どの方法を使用するかはテスト内容や環境に合わせて選択することができます。

diff-pdfとは?

diff-pdfは、 PDFファイルを視覚的に比較するためのツール(OSS)です。
Windows用に、バイナリとして提供されており、コマンドラインで使用できます。
diff-pdfは、以下のサイトから入手可能です。

https://vslavik.github.io/diff-pdf/

※本記事では、Ranorex v11.3.3 を使用しています。

コマンドライン上でdiff-pdfを実行することで、パラメータとして指定した比較元となるPDFファイルと、比較対象となるPDFファイルの比較を行うことができます。

diff-pdf --output-diff={比較結果レポート}.pdf {比較元となるPDFファイル}.pdf {比較対象となるPDFファイル}.pdf

diff-pdfの実行時に以下のパラメータ、オプションを使用することができます。

  • -v, –verbose:差分結果をコマンドライン上に出力する。
  • -s, –skip-identical:比較結果の差分のみを出力する。(※–output-diffオプションと併用)
  • -m, –mark-differences: 出力した差分結果において、差分がある行を左端に表示する 。
  • -g, –grayscale:色の違いのみを比較する。差分が無い場合は、灰色で表示される。
  • –output-diff=<str>:差分結果をPDFファイルに出力する。
  • –channel-tolerance=<num>:差分を判定する基準値(閾値)の範囲を0~255の範囲で指定する。(※初期値は0で設定されており、完全一致となる)
  • –per-page-pixel-tolerance=<num>:ページ単位で差分が許容されるピクセル数。
  • –dpi=<num>:ラスタライズ解像度。(初期値:300dpi)
  • –view:差分結果をウィンドウ上に表示する。

以下にRanorex+diff-pdf連携によるpdfの比較について解説します。

テストの流れ

Ranorex StudioのUIテスト実行時にアプリから出力されたPDFファイルを使用し、diff-pdfで比較して結果を出力する流れになります。

テストの準備

1. テストの作成

Ranorexを使用して、比較するPDFファイルを出力する操作のテストケースを作成します。

2. diff-pdfの設定

新規に用意したレコーディングモジュールにて、Run applicationアクションを使用して、diff-pdf(diff-pdf.exe)を実行するように設定します。Run applicationアクションのArguments項目には、diff-pdfのパラメーターを指定します。

※diff-pdfに渡すパラメーターは、Arguments項目を変数化し、Ranorexのデータソースパラメーターの機能を使用することで可変にすることができます。また、ユーザーコードの機能を使用することで、更に複雑な指定方法も可能です。

テストスイートにて、テストの最後に、設定したレコーディングモジュールを追加します。
下図は、”PDF比較“のテストケースに、上記の設定を行った”diff_pdfの実行“のレコーディングモジュールを指定した例になります。テストを実行すると初めにUIテストをおこない比較するPDFファイルが出力され、最後にPDFファイルの比較を実行します。

実行結果

PDFファイルの比較結果は、diff-pdfで出力されたHTMLレポートにて確認できます。
下図は差分結果になり、差分のない個所は灰色で表示され、差分がある個所には色が付きます。

比較したPDFファイル:

PDF比較用サンプル1.pdf
PDF比較用サンプル2.pdf

まとめ

Ranorexにも画像比較をおこなうためのValidationアクション(ContainsImageCompareImage)や、Ranorex APIが用意されており、これらを使用することによりPDFファイルの比較を実施することも可能です。また、今回、紹介した様な他ツールと連携することでもPDFファイルの比較をおこなうことができ、開発プロジェクトに合わせたテスト方法を選択し、柔軟に対応することが可能です。