[ServiceNow] 「Using the Automated Test Framework」をやってみた

## 概要

ServiceNow Developerサイトに用意してある学習コンテンツ「Using the Automated Test Framework」をやってみた。
本書はその内容に関しての簡単なまとめを記す。

※コンテンツは以下
https://developer.servicenow.com/dev.do#!/learn/courses/rome/app_store_learnv2_atf_rome_automated_test_framework/app_store_learnv2_atf_rome_using_the_automated_test_framework/app_store_learnv2_atf_rome_automated_test_framework_objectives

## Automated Test Framework(ATF)

ATFはServiceNow上でテストを自動化するためのアプリケーション。

インスタンスのバージョンアップや構成変更、アプリケーションの追加や修正を行うたびリグレッションテストを行う必要があり、毎回同じテスト項目を行うことも多々あるはずである。
そういったテスト項目をあらかじめATFで設定しておくことで、テストを自動化することが可能となる。

テストの成功/失敗にかかわらず、最後にロールバックまで実施してくれるため、ATFの実施によってインスタンスにダミーデータが残ることはない。
ただし、少なからず既存のデータに影響を与える可能性もあるため、ATFは非本番環境でのみ実施することが推奨されている。

## ATFの構成

ATFはざっくりと以下のような形で構成している。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/0bc47f4d-f90b-2d5a-9b8a-2da1b84950aa.png)

### Test

テスト項目こと。(名前の通り)
Testのなかに、テストに必要なStepを設定する。

ex) admin権限を持つユーザーが、ユーザー一覧を表示できること

### Step

テスト項目を確認するために必要な1つ1つの作業と、その処理に必要なテストデータの設定。

ex) 「admin権限を持つユーザーが、ユーザー一覧を表示できること」を確認するために以下の流れで作業が必要
1. admin権限を持つユーザーに切り替える
2. ユーザー一覧を開く
3. 一覧上で必要な項目が見えていることを確認する

上記1つ1つがstepのイメージ

### Test Suite

複数のTestやTest Suiteを束ねるもの。

ex) 以下の構成でATFを検討(★がTest Suiteのイメージ)
* 権限毎の機能確認 ★
    * admin権限 ★
        * ユーザー一覧の表示
        * ユーザーの作成
    * user権限 ★
        * ユーザー一覧の表示

## ATFの設定(お試し)

### ATFの有効化

デフォルトでは、ATFが無効化されている。

[Automated Test Framework (ATF)]→[Administration]→[Properties]を開き、以下の2項目にチェックを入れる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/42843fca-99d9-b380-1fd1-53c495f926bf.png)

### Testの作成

[Automated Test Framework (ATF)]→[Tests]を開き、[New]をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/c510c904-6a3b-db5c-9759-a066e16e94d0.png)

適当に入力してSave。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/d143e4fb-5d5c-bb94-2a90-9314d604b997.png)

### Stepの追加

作成したTestにStepを設定する。 
今回は以下のような処理の流れでStepを設定する。
1. 管理者権限を持ったユーザーの作成
2. 作成したユーザーでインシデントの一覧を表示 

関連リスト[Test Steps]の[Add Test Step]をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/541e2b04-b688-62d4-29a9-05349404954b.png)

ServiceNowで用意されているStepの一覧から設定するものを選ぶ。
左側に大まかなカテゴリ、右側に選択したStepの詳細が表示されている。

まずは「1. 管理者権限を持ったユーザーの作成」を行うため、「Create a User」を選択する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/bcde9244-0d79-05a6-c927-23c09ffadb67.png)

Stepの実施に必要なパラメータを設定してSubmit。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/6528c1ca-8f72-2803-5109-afba7f72c092.png)

関連リスト[Test Steps]から、Stepが追加されていることが確認できる。
同様の流れで「2. 作成したユーザーでインシデントの一覧を表示」まで追加した状態が下図である。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/f3b8155e-f674-4439-5094-c4dbafbee929.png)

### Testの実行

実施するTestレコードを開き、[Run Test]をクリック。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/d0f9d540-4a65-aa39-829d-7fd049449376.png)

実行する環境(ブラウザ)を選択する。
※

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/76446e7e-44fc-248e-3cc6-25982b07193d.png)

「Client Test Runner」画面では、実際にテストを行っている様子を確認することができる。
以下から、そのStepの「実行ユーザー(Currently executiong as)」や「実行結果/画面」を見ることができる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/935b4ff0-606c-9eea-b30a-9d7432a0369f.png)

UI画面に戻ると、テスト結果が表示されている。
以下からもテストの最後にロールバックが行われていることが確認できる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/8f6552be-470f-c64d-231a-cda2d0c8f329.png)

[Go to Result]をクリックすると、各ステップの結果など、テスト結果の詳細を確認することが可能。
スクリーンショットも添付ファイルとして残されている。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/358025/21c54b0d-e412-53f6-8251-9eee64108942.png)

### Test Suiteの設定

※後日記載