ATF Test Generatorの基本設定

# **ServiceNow ATF Test Generatorの基本設定**

ServiceNowのATF（Automated Test Framework）は、テスト自動化を実現する強力なツールです。この記事では、ATFを自動生成するATF Test Generatorの実践的な設定方法や成功のコツを詳しく解説します。

---

## **1. ATF Test Generatorとは？**
ATFはServiceNowでテストの自動化を行うためのモジュールです。そして、**ATF Test Generator**は、直近のユーザーの操作を解析してATFのテストを自動的に生成するツールです。
ただし、初回の設定では100%うまくいかないです。そこで私が人柱となり30時間以上かけて見つけた成功率の高まる設定を書き残したいと思います。

---

### **参考URL**

https://www.servicenow.com/docs/ja-JP/bundle/utah-servicenow-platform/page/administer/atf-test-generator-cloud-runner/concept/atf-tg-cr-landing.html

https://qiita.com/oichan00/items/17d9b63e0e125b18e109

https://qiita.com/oichan00/items/1d98fe6531029c2eaad0

---

## **2. ATF Test Generatorのセットアップ**

ATFはデフォルトでインストールされていますが、ATF Test Generatorはストアアプリから追加でインストールする必要があります。まず、「Auto-generate Tests」からストア画面へ飛びます。ちなみに、このメニューはアプリをインストールしたら消えて別の名前になりますのでお気に入りに入れないでください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/b54adbf1-3075-d953-d2fb-1407c1fdc112.png)

Getします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/6ac3b028-f111-d9c5-45eb-933e69901941.png)

Plugin画面から「ATF Test Generator」で検索しモジュールをインストールします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/1f3aad34-8b1c-c8b1-d666-8d6f17d50717.png)


## **3. 操作を便利にするためのお気に入り登録**

プラグインのインストールが終わったら、以下の名前で検索をして名前を短くして登録しておきます。このメニューを延々と繰り返し使いますので必ず登録しておきましょう。順番も大切です。

- Test Generator
- Browser Orchestration Queur
- Suites
- Tests
- ATF - Properties

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/8f39d309-5320-4f42-2ab4-52fdd214cef4.png)


## **4. ATF Test Generatorの準備**

まずは、「インシデントを作成してクローズするまで」という簡単なシナリオでATFを自動生成してみます。

Test Generatorをクリックします
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/51cfa6be-8c4a-fac8-09f1-6cc691f457fd.png)


Advancedにチェックをいれて、いくつかのパラメーターを設定します。
（チェックを入れずにそのまま実行すると、不要なテストが2000個くらいできてしまいます。意味ないです。）
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/8834e735-db76-f6ef-7c03-f0d225e48007.png)

### **パラメーターの意味**
- **Maximum Test Count**: テスト生成の全体数を指定。
- **Maximum test count per table**: 各テーブルごとの最大生成数。
- **Maximum test count per catalog item**: 各カタログアイテムの最大生成数。
- **Email**: 生成完了時に通知を受け取るメールアドレス。

説明を見ると上記のように書いているのですがピンとこなかったので私なりの理解を以下に書きます。

#### 私の理解 
- **Maximum Test Count**: Test Steps（xxx）の最大値とイコールです（前述の図参考）
- **Maximum test count per table**: ServiceNow側のサーバーで行うランダムテストの最大数
- **Maximum test count per catalog item**: ServiceNow側のサーバーで行うカタログアイテムのランダムテストの最大数
- **Email**: 生成完了時に通知を受け取るメールアドレス

こんな感じです。


### **Presets（プリセット）の活用**
Test Generatorを実行するとその時の設定を見直すことはできないので、まめにスクリーンショットを取っておくか試行錯誤用に１つプリセットを決めて毎回Saveしてしておくのがいいです。うまくいった設定の再実施もダメな設定の後に変化をつけるときも共に必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/6360fd11-dae8-9c14-181e-f39ea1cdd94b.png)


---

## **5. フィルタ設定：Users、Tables、Service Catalog**

### **Usersタブ**
- **役割**: どのユーザーを対象とするテストを生成するかを指定します。
- **おすすめ設定**:  
  - 必要最小限のユーザー（1～5名）に絞ることで、テストの対象を明確化します。
  - ユーザー数を増やしすぎると、まったく指定していないテーブルの不要なテストが増加するため注意が必要です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/88bfea9a-ae7a-1ceb-465b-0f629525c3bc.png)

### **Tablesタブ**
- **役割**: テスト生成の対象となるテーブルを指定します。
- **おすすめ設定**:  
  - テーブルの数を2～3個程度に制限することで、無駄なテストを減らせます。
  - 必要に応じてタスクテーブルや承認テーブルも忘れずに指定してください。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/d42dac7a-dcf9-9dcb-6abf-b922f58eff79.png)


### **Service Catalogタブ**
- **役割**: カタログアイテムのテストを生成するかどうかを管理します。
- **おすすめ設定**:  
  - カタログアイテムのテストを生成しない場合は、**フィルタ条件が0件になるよう設定**してください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/0aa69a59-00bf-1d10-5eac-066c48c290b5.png)

  - 特定のカタログアイテムだけを対象にする場合は、正確なNameを入力し、該当アイテムを絞り込みます。うまく設定できた場合は、右側のカテゴリなどが引用されます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/df516760-e2c1-5f74-91b9-899b24fb6276.png)

---

## **6. テスト生成の開始**

1. 必要な設定をすべて完了後、「**Start Test Generation**」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/5ff6463d-07bd-74a4-2c64-cc8d1c4a380a.png)


2. **Browser Orchestration Queues**で進捗を確認します。「Completed」になるまで待機してください。このときに、対象ユーザーにImpersonateして自動生成したいテストを操作しておくと成功率が高くなりそうです。（推測です）。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/de1b8604-7f90-5495-e596-cc1fef9869be.png)


テストは**ServiceNow社が管理するクラウドサーバーでランダムに試行されそこで合格したものだけが返されます。** つまり、パラメーターで設定したテストパターンが少なければランダムテストは失敗してテストは作成されません。反対に指定するユーザーやテーブルを増やしすぎると簡単にテストは自動生成されますが、まったく関係のないテーブルのテストが作成されてしまい使い物になりません。おそらく、直近のユーザーの行動でそのテーブルを触ったものやテーブルの拡張関係にあるテストがランダムで実施されるようです。



---

## **7. 自動生成されたテストの確認**

### **結果のメール確認**
パラメーター設定時にメールアドレスを指定しておくと完了時にメールが届きます。ノンプロインスタンスでメールを切っていたとしてもServiceNow側のサーバーからメールが送られてくるのでメールは届きます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/66f64a80-0762-b458-3490-e7f62266ea4e.png)


### **生成されたテストスイートの確認**
ステータスがCompleteになると、以下のようにテストスイートが作成されます。テストが1つも作成されなくてもテストスイートは作成されます。良くできたテストスイートは名前を変えたりタグを設定しておくといいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/6ab42810-769f-8eff-ccb1-3ea50664a6d0.png)


### **生成されたテストの確認**
- テストスイートを見るとその中にテストが複数作成されます。慣れないうちは思った通りのテストが作成されません。こちらもよくできたテストは名前を変えたりタグを設定して不要なテストは削除して必要なものを残してください。

以下のようにテストが作成されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/415befc3-24fc-1339-a6e5-28ad753051d6.png)

中を見るとテストステップが作成されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/9152e565-1401-6175-742d-ff0414733d0c.png)


以下のように、まだテストを1度もRunしていないのに合格したテストが１つあるのは、おそらくServiceNow側のサーバーでランダムにテストを行い、ほとんどのものが失敗し削除され合格したものだけがインスタンスに返される。というのを示している証拠だと思います。まるで**蜘蛛の糸のような仕組み**のようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/938500ef-2bfa-7abf-031b-59f1f3d4ccb9.png)

  
- **後続のクローズまでの操作が不足する場合**  
  前述のServiceNowのサーバー側でのテスト作成の理屈を考えれば納得できることですが、ランダムなテストでうまく行くのがサブミットまでであることが多く、後続のワークフローを回す操作はその過程で失敗し私たちの手元には届かないので、後続のフローは手で追加せざるを得ません。とはいえITSMツールで面倒なのは開始時のサブミットまでだったりするのでそれが自動化されるだけでも十分助かりますね。

---

- **出来上がったテストは操作が1つずつのレコードに分けられている**  

ServiceNow側でランダムに作られたテストは、フィールドの入力も値の確認も1フィールドずつ1レコードに分けられています。この点も編集しづらく見づらい点です。そしてvalidationのレコードが非常に多いです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/d53d77d5-a230-9cbf-6d30-f9fd26ce3359.png)

## **8. 最後に**

以上がATF Test Generatorの基本的な設定です。何もわからないところから読んだ方は大まかな流れが理解できたのではないでしょうか。

ATF Test Generatorはまだまだ発展途上の機能なようで、一長一短あると思います。
実務で使うための仕上げまでを考えると、もしかしたら手で作ったほうがよっぽと正確で早いかもしれないです。それでも必ず成功するTestが作れるので、「初回作成時のガワづくり」として考えれば十分効率化が期待できる機能なのではないでしょうか。