システム変更時にともなう現新比較で使用されるテスト手法の1つにビジュアルリグレッションテスト(VRT:Visual Regression Testing)があります。
このテスト手法では、テスト対象アプリのオブジェクトに対して視覚的な変化がないかを確認します。
方法としては、期待するオブジェクトの画像をスクリーンショットとして取得しておき、テスト実行時に表示される対象オブジェクトの画像と比較し、差異が無いかを確認します。確認には画像比較をおこなえるテストツールを使用するのが一般的です。
ビジュアルリグレッションテストを使用することで、部分的な要素のアサーションではなく、アプリの画面全体をカバーすることができるためUIの予期せぬ変更やレイアウト崩れを見つけることができます。
テストツールを選定する場合は、以下の課題に対応したツールを選定することをお勧めします。UIテスト自動化ツールのRanorexでは、ビジュアルリグレッションテストに対応しており、これらの課題に対応した機能が実装されています。
- 動的な個所がノイズとして検出される
- 比較の精度が高すぎて、人目には判断できないような差分が検出される
動的な個所がノイズとして検出される
画面内に広告などの動的なUI要素が含まれる場合、そのUI要素はノイズとして検出され、テストが失敗になります。
テストツールにマスク機能があると、比較したくない箇所にマスクをかけられるため、ノイズが無くなり、正しいテスト結果を得ることができます。
Ranorexでは、画像を比較するアサーションに、比較したくない箇所をマスクする機能や逆に比較したい個所だけをマスクする機能が実装されています。
比較の精度が高すぎて、人目には判断できないような差分が検出される
画像の比較では、1pxの微差でも差異が認められることにより、テストに失敗することがあります。この場合、差異がある個所を人目では判断できないことから、結果レポートからも差異を見つけるのが難しいものとなります。また、人目では判断できないような微差に関してはテストとして成功にしたい場合もあります。
テストツールに画像を比較した際の類似度を変更できる機能や、画像の比較方法を選択できるような機能があると、テスト環境に合わせて画像の比較の仕方を変えられるため、期待するテスト結果を得ることができます。
Ranorexでは、類似度の変更や比較する画像に対してフィルターをかける機能が実装されています。
まとめ
前述したように、ビジュアルリグレッションテストは、アプリの画面全体をカバーすることができるためUIの予期せぬ変更やレイアウト崩れを見つけることができ、部分的な要素のアサーションをおこなうよりも、簡単に実装できますが、テストツールがレポートするテスト結果によっては、逆に扱いづらいものとなってしまいます。そのため、利用するツールの機能をよく調べて選択することをお勧めします。