ServiceNow：ATFの超具体的な基本設定（設定画像付き）

## はじめに
ServiceNowのAutomated Test Framework (ATF) は、システムやプロセスのテストを効率化するための非常に強力なツールです。この記事では、ATFのテストプロセスを「Apple iPhone 13」のカタログアイテムを例に、基本的な構成ステップを順を追って解説します。


ATFのことがよくわからない方は、先にこちらもご覧ください

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

---

## 1. ユーザーを指定する（Impersonate）
最初にテストを実行するユーザーを指定します。このステップでは、特定の役割や権限を持つユーザーをシミュレートします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/87cf2812-ed08-7bd8-acd5-d92603ed156a.png)


### 設定内容
- **選択するユーザー**: System Administrator（例）
- **注意点**: 必要に応じて、Create a Userステップを利用して新規ユーザーを作成することも可能です。ただし、既存のユーザーをインパーソネートする方が本来のユーザーの問題点を発見しやすいかもしれないです。該当ユーザーのロールを事前確認するのは必須です。

---

## 2. カタログアイテムを開く（Open a Catalog Item）
次に、Service Portal上で対象のカタログアイテム（Apple iPhone 13）を開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/bbf3bd62-603b-d960-075d-0a8075eea9bf.png)


### 設定内容
- **Portal**: Service Portal
- **Catalog Item**: Apple iPhone 13

**ポイント**:
- ポータルとアイテムの正しい指定が重要です。
- 次のフォーム入力ステップの準備が整います。

---

## 3. フォームの入力を開始する（Set Variable Values - Part 1）
フォームの最初の質問に回答します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/c1df547e-1f09-fc0b-5f1d-c50b93265fc0.png)


### 設定内容
- **質問**: "Is this a replacement for a lost or broken iPhone?"
- **回答**: Yes

**ポイント**:
- UIポリシーで動的に変化するフォームの場合、適切に順番を考慮して入力する必要があります。

---

## 4. フォームの追加入力を行う（Set Variable Values - Part 2）
フォームの残りの質問に回答します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/f412046b-5a06-fe4c-c70b-2b0b4c471aab.png)


### 設定内容
- **質問と回答**:
  - What was the original phone number? → test
  - Monthly data allowance → 500MB
  - Choose the colour → Green
  - Choose the storage → 128 GB

**ポイント**:
- 必要に応じて複数のステップに分割して設定します。

---

## 5. 入力した値を確認する（Validate Variable Values）
フォームに入力した値が正しいかを検証します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/77349ffb-615c-bca9-7b1f-75ea7ea50521.png)


### 設定内容
- **検証項目**:
  - Is this a replacement for a lost or broken iPhone? → Yes
  - What was the original phone number? → test
  - Monthly data allowance → 500MB
  - Choose the storage → 128 GB

**ポイント**:
- 入力値が正しいか確認することで、次のプロセスの精度を高めます。

---

## 6. カタログアイテムをサブミットする（Order a Catalog Item）
設定したフォームをサブミットし、リクエストを作成します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/504db81f-d6a6-720b-d60f-4fddc8c736e4.png)


### 設定内容
- **アサートタイプ**: Successfully ordered Catalog Item

---

## 7. リクエストアイテムを探す（Record Query - Requested Item）
カタログアイテムをサブミットした後、関連するリクエストアイテムを検索します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/936dc9c7-50df-5426-b710-c0c209f11723.png)


### 設定内容
- **Table**: Requested Item (`sc_req_item`)
- **Conditions**: Request = {{Step 6: Order a Catalog Item (SP).Record}}

**ポイント**:
- データピルを活用して、関連レコードを動的に参照します。


### 【重要】「さっきのアイツ！」を探す方法

このステップ以降は、サブミットされた後に作成されたレコードを「探す」「開く」を繰り返しながら進めていきます。作成されたレコードを動的に見つけるにはこのデータピルを使い、「どのステップで作成された・探したレコード」かを指定します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/c04c1e28-5976-7b0f-7ab2-0bda55b89f9f.png)

これを設定しないと、朝遅刻しそうなときに食パンを加えて走り交差点の角でぶつかった男の子と教室で再会して「あー！さっきのアイツ！」ができません。必ず探しましょう。女子目線です。


---

## 8. 見つけたリクエストアイテムを開く（Open an Existing Record - Requested Item）
検索したリクエストアイテムを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/f89fa44b-ff6b-89e1-e25b-49f5bf9ff3cd.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/0ea36f4d-c766-b34f-3185-3d925bbec5c9.png)


### 設定内容
- **Table**: Requested Item (`sc_req_item`)
- **Record**: {{Step 7: Record Query → First record}}

---

## 9. リクエストアイテムを更新する（Record Update - Requested Item）
開いたリクエストアイテムに作業ノートを追加します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/769af4d1-f6e5-3057-8045-dbe93c2f9804.png)


### 設定内容
- **更新内容**:
  - Work notes = "I will respond to you.｜対応を開始します。"

---

## 10. リクエストアイテムの値を確認する（Record Validation - Requested Item）
リクエストアイテムが期待される状態にあるか確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/5758d23c-c12b-ef04-a8bc-5deb2551d6a7.png)


### 設定内容
- **検証条件**:
  - Stage = Fulfillment
  - State = Open
  - Is this a replacement for a lost or broken iPhone? → Yes
  - Choose the colour → Green

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/42e6caa9-bbe3-b8e9-3876-228d5e6f4fd2.png)
カタログアイテムの「変数」もしっかりチェックできます。Variablesから指定しましょう。


---

## 11. 承認レコードを探す（Record Query - Approval）
関連する承認レコードを検索します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/50de2ad9-f3aa-c0b2-2a4c-35e78ce07ff5.png)


### 設定内容
- **Table**: Approval (`sysapproval_approver`)
- **Conditions**: Approval for = {{Step 7: Record Query → First record}}


---

## 12. 見つけた承認レコードを開く（Open an Existing Record - Approval）
検索した承認レコードを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/9608609f-ebeb-7c0a-06ee-0c8623b9e851.png)


---

## 13. 承認ボタンをクリックする（Click a UI Action - Approve）
承認レコードの「Approve」ボタンをクリックします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/ec4448b5-d035-2b9d-0459-bf4114d3f937.png)

いままではStatusをRecord Updateで更新していましたが、Approveはフィールドが保護されているので更新できません。そういう時はUI Actionからボタンをクリックする操作を行います。

---

## 14. カタログタスクを探す（Record Query - Catalog Task）
リクエストに関連する最初のカタログタスクを検索します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/b8e04407-91ce-50c2-181f-8ce5798c1a93.png)

### 設定内容
- **Table**: Catalog Task (`sc_task`)
- **Conditions**: Request item = {{Step 7: Record Query → First record}} and State = Open

---

## 15. カタログタスクを開く（Open an Existing Record - Catalog Task）
検索したカタログタスクを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/78b1664c-f447-12fa-bcd0-9571ad460760.png)


---

## 16. カタログタスクをクローズする（Record Update - Catalog Task）
カタログタスクを完了（クローズ）します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/d4db9927-9f1f-b0af-1369-b9490a9d3473.png)


### 設定内容
- **更新内容**:
  - State = Closed Complete
  - Work notes = "Closed sc task"

---

## 17. カタログタスクの値を確認する（Record Validation - Catalog Task）
カタログタスクが正しくクローズされているか確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/cd8f6756-c97f-3b65-d975-19492be87592.png)

### 設定内容
- **検証条件**:
  - State = Closed Complete

---

## 18. カタログアイテムを再度開く（Open Catalog Item）
リクエストアイテムのレコードを再度開きます。
一通りの作業が完了したので、ユーザー目線で各画面の終了確認をします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/022b4884-37db-a8e4-474e-74abe170e8dd.png)


---

## 19. カタログアイテムの値を確認する（Record Validation - Catalog Item）
カタログアイテムの状態が「Closed Complete」であることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/ceaa6208-5111-d932-323b-aed0edd5d751.png)


---

## 20. リクエストを開く（Open Request）
関連するリクエストレコードを開きます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/10ba1051-c758-a4b1-7d1d-1859587adfbe.png)

---

## 21. リクエストの値を確認する（Record Validation - Request）
リクエストが正しくクローズされていることを確認します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/6e89a9cd-7614-e71b-56c3-550401f368b5.png)

---

## テスト結果の確認

テストの実行をして、結果を確認します
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/347d7464-dbb2-276c-6a91-9902eefda06d.png)

テストの写真もしっかりとられています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/2fbff1ff-c418-1c23-8575-ac77455ee80e.png)


縦に長い画面もちゃんと撮れてます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/240742/48881a6d-8a4a-17df-977f-cb4045bd32bc.png)


## おわりに
以上がステップバイステップでのATFの設定の詳細です。
他にここまで詳しくATFのステップについて書いている記事は無いと思います。ぜひご参考ください。