Ranorex の便利機能 - Validateアクション

# はじめに
テスト対象アプリに対してUIテストを実施する場合、特定の操作をおこなった後、期待の文字列が表示されているか、期待の画面遷移がおこなわれているか、などの検証が必要になります。
手動でテストを実施する場合には、目視で検証項目の確認をおこないます。また、必要に応じてスクリーンショットを取得し、Excel表にスクリーンショットを張り付けてエビデンスとして残す、といった作業が発生し、大変手間がかかります。

UIテスト自動化ツール のRanorex（※）でテストを実施する場合は、Validate アクションを使用することで、自動で検証を実施することができます。

※Ranorex は、「UIテスト自動化ツール」です。デスクトップ/Web/モバイルアプリに対応しています。テスト対象アプリに対し、Ranorexでキーボードやマウスの操作をおこなうことでテストの作成/実行がおこなえるツールです。
・Ranorex
https://ranorex.techmatrix.jp/

# Validateアクションとは？
Validate アクションでは、設定した期待値と実際に表示された値が一致しているかを検証できます。
検証結果 （成功、失敗）は、レポートに出力されます。

# Validateアクションの種類
Ranorex の Validate アクションでは、以下の種類が用意されています。
* Exists/NotExists：対象のオブジェクトが存在しているか/していないかをチェックします
* AttributeEqual：属性が特定の値と等しいかチェックします
* AttributeRegEx：正規表現を利用し、特定の属性の照合値が一致しているかチェックします
* AttributeContains/AttributeNotContains：特定の属性に照合値が含まれているか/含まれていないかチェックします
* ContainsImage：表示された画面内に期待値としたイメージ図が含まれているかチェックします
* CompareImage：表示された画面内に期待値としたイメージ図と一致しているかチェックします

# 使用例① 
特定の値を入力した後、アプリケーション画面に表示された文字列が正しいかをチェックする場合には Validate AttributeEquel アクションを使用します。

たとえば、テスト対象アプリの画面に対してログイン操作を行った後、表示されている氏名が正しいかをチェックします。
![Validate AttributeEquel.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/b159a399-93de-d28a-2f9f-7b020aaec648.png)

Ranorex でレコーディングを行っている際に、右下に表示されている Ranorex Recorder 内の Validate ボタンをクリックすると、検証モードになります。
![Ranorex Recorder .png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/1f709781-2e6c-17a9-32dd-22d36cb316ca.png)

検証したいオブジェクトを選択すると、オブジェクトが持つ要素や属性情報が表示されます。
今回は、文字列の検証をおこないたいため、InnterText 属性にチェックを入れて設定します。
![バリデーション.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/795e426d-1e46-f413-ff2a-cdddd30bdf7a.png)

レコーディングを停止すると、Validate AttributeEquel アクションが追加されています。
本アクションにて、表示されている文字列が正しいかを確認できます。
![バリデーション2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/b0beaffa-a109-7664-0676-fdd613d1ac55.png)

# 使用例②
テスト対象アプリ上の見た目が期待の画像と一致しているかチェックする場合には、Validate CompareImage アクションを使用します。

使用例①と同様に、Ranorex Recorder 内の Validate ボタンをクリックし、検証モードとします。
Validate CompareImageアクションを追加したい場合には、バリデーション画面にて イメージ タブを選択し、Compare にチェックを入れます。
![Validate CompareImage.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/584a6e1e-eed5-b2fb-b878-7b171be9eb5a.png)

レコーディングを停止すると、Validate CompareImage アクションが追加されています。
Screenshot name 欄に登録されている画像が期待値となり、期待の画像と実際の画面が見た目上一致しているかを確認できます。
![ValidateCompareImage2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/52d985aa-5b21-1652-30e6-471d3c31e83c.png)

イメージバリデーションについては、以下のBlog記事で紹介されています。
・イメージ バリデーション（概要）#1
https://ranorex.techmatrix.jp/blog/2020/02/21/image-validation-summary/

# プロパティの設定とテスト結果の確認
各アクションに対し、プロパティを設定できます。
たとえば、Validate アクションの Report Screenshot プロパティでは、Validate アクションを実行した際に、レポート上へのスクリーンショットの取得有無を設定できます。Always に設定すると、成功・失敗にかかわらずスクリーンショットが取得されます。
![プロパティ.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/e224f963-89c8-7b62-be20-6d843737bbe8.png)

テストを実行すると、自動的にレポートが生成されます。
今回は成功しており、Report Screenshot プロパティを Always にしたことで、Validate アクションの際にスクリーンショットが取得されています。
![成功.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/a8a2d935-d1f2-f125-9fd0-08caa25003f9.png)

このように、必要に応じてスクリーンショットを取得することも可能です。

なお、バリデーションのプロパティ設定については、毎回Validateアクションのプロパティから変更しなくとも、Ranorex の全体設定から事前に設定することも可能です。
Report Screenshot プロパティを変更したい場合には、下図のRanorex の設定画面にある スクリーンショットのレポート オプションを変更します。
![全体の設定.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3826211/79c12ab9-ef9a-5ba2-2102-41b69f924fa7.png)

上記画面で設定したオプションは、今後新たに追加されたアクションに反映されます。


# まとめ
Ranorex ではさまざまな種類の Validate アクションが用意されていることから、テスト内容に合った Validate アクションを使用できます。
レコーディング中に Validate アクションを追加できるため、容易に検証項目を設定できます。
また、プロパティを変更することで Validate アクション実行時にスクリーンショットも取得でき、レポートをそのままエビデンスとしても使用できるため、とても便利です。

Ranorex を使用する際には、ぜひ Validate アクションをお試しください。