テストのエビデンスとしてスクリーンショットを取得する

今回の記事では、Ranorexを使用し、テスト実行中にスクリーンショットを取得する方法についてご紹介します。

方法① 特定の実行アクション後にスクリーンショットを取得する

特定の実行アクションの後に、スクリーンショットを取得したい場合には、Ranorex で用意されている”スクリーンショットのキャプチャ(Capture Screenshot)”アクションを使用することで対応できます。この場合、スクリーンショットの取得が必要な部分に、手動で”スクリーンショットのキャプチャ(Capture Screenshot)”アクションを追加していきます。

操作手順としては、以下となります。

1.Ranorex Studioにて対象のプロジェクトを開き、レコーディングモジュールを表示します。

2.アクションテーブル左上にある、”新しいアクションの追加”をクリックし、”スクリーンショットのキャプチャ(Capture Screenshot)”を選択します。

3.”Report Screenshot”アクションが追加されます。

これにより、特定の実行アクション後の画面に対し、スクリーンショットを取得することができます。

上記の設定方法の場合、”Report Screenshot”アクションの”Repository Item”の欄は”(No item)”として追加されます。”Repository Item”の欄が、”(No item)”の場合、テストを実行しているマシンのデスクトップ全体が取得されます。

一方で、スクリーンショットとして取得したい範囲が、デスクトップ全体ではなく、ある特定の範囲に絞り込みたい場合には、”Repository Item”の欄に対し、取得したいオブジェクトを割り当てます。これにより、このオブジェクトのみのスクリーンショットを取得できます。
たとえば、下図のリポジトリに登録されている”ApplicationUnderTest”オブジェクトは、アプリケーション画面全体を指すため、このオブジェクトを”Report Screenshot”アクションに割り当てることにより、Webブラウザー上に表示されているアプリケーション画面全体のスクリーンショットを取得できます。

上記設定により、任意の箇所に”スクリーンショットのキャプチャ(Capture Screenshot)”アクションを追加することで、スクリーンショットを取得することができます。

Ranorexで提供されるアクションについては、「レコーディングモジュールのアクション機能について」のBlog記事をご参照ください 。

方法② バリデーションの成功・失敗時にスクリーンショットを取得する

バリデーションの結果に合わせて、スクリーンショットを取得したい場合には、対象のValidateアクションのプロパティから設定できます。

操作手順としては、以下となります。

1.Ranorex Studioにて対象のプロジェクトを開き、レコーディングモジュールを表示します。

2.対象のValidateアクションを選択の上、右クリックを行い、ショートカットメニューから「プロパティ」を選択します。

3.プロパティ画面の”Report Screenshot”オプションから、対象のValidateアクションにおけるスクリーンショットの取得可否を設定できます。

“Report Screenshot”オプションは、以下4種類となります。

  • Never:バリデーション実行時、常にスクリーンショットを取得しません
  • OnFail:バリデーションが失敗した時のみ、スクリーンショットを取得しま
  • OnSuccess:バリデーションが成功した時のみ、スクリーンショットを取得します。
  • Always:バリデーション実行時、常にスクリーンショットを取得します。

方法③ すべてのアクションに対し、スクリーンショットを取得する

方法①②のように、特定のアクションを実行した後や、バリデーションの結果に合わせてスクリーンショットを取得するのではなく、すべての操作(アクション)に対し、自動でスクリーンショットを取得したい場合、特定のコードを追加することで、対応できます。

操作手順としては、以下となります。

1.Ranorex Studioにて、対象のプロジェクトを開きます。

2.左側のプロジェクトビューから、”Program.cs”を選択し、ファイルを開きます。

3.Program.csファイルの中に、以下のコードを追加します。

追加コード:

TestReport.TracingScreenshotCountLocal = int.MaxValue;
ActivityStack.Instance.UpdateActivity += delegate { TestReport.SaveLocalScreenshotBuffer(); } ;

4.テストスイート画面の「RUN」ボタンから、テストを実行します。
テスト実行後、生成されるレポート上には、下図のようにすべてのアクションに対してスクリーンショットが取得されます。

上記3つの方法で取得したスクリーンショットは、特定のフォルダー配下に画像ファイルとして保存されているため、エビデンスとして使用できます。ぜひお試しください。