Toru Inoue
ServiceNow Employee
ServiceNow Employee

※本記事は、ServiceNowのパートナー様より寄稿いただいたものをServiceNow社員が代理で投稿しています

 

===

皆さん、こんにちは。株式会社富士通九州システムズのServiceNowチームです。

弊社は富士通グループの中でも、特にインプリ(構築/カスタマイズ)に特化した活動を行っています。

 

今回はServiceNowのテスト自動化ツールである、ATF(Automated Test Framework)のご紹介です。

 

解決したいこと                    

ServiceNowを導入するうえで皆さんの頭を悩ませる1つとして、インスタンスのバージョンアップ作業があると思います。

ご存知の通り、ServiceNowのファミリーバージョンは半年に1回リリースされ、サポートされるのは最新 -1 バージョンまでです。従って、最低でも年1回はファミリーバージョンアップ対応が必要となります。

このバージョンアップ作業にて、最も時間がかかるのがリグレッションテストです。これはカスタマイズ量が多ければ比例して対応時間も増えていくことになります。

 

そこで、ServiceNowではテスト自動化ツールとしてATFが用意されています。

ATFを利用することで、バージョンアップ作業におけるリグレッションテスト作業が大幅に効率化できます。

 

ATF(Automated Test Framework)とは?        

まず、ATF(Automated Test Framework)について説明します。先に記載した通り、ATFはServiceNowが標準で用意しているテスト自動化ツールです。ATFを実行することでテスト結果レコードが生成され、ServiceNow上に保存されます。また、コーディングなしでテストパターンが作成でき、簡単に実行できます。

 

ATF設定方法は?                   

実際にATFの設定方法を見ていきます。

注意:今回使用したインスタンスのバージョンはNew York Patch 2です。バージョンが異なる場合、設定方法や見た目など挙動が異なる場合があります。

1.ナビゲーションメニュー[Automated Test Framework] > [Administration] >[Properties]を開きます。
2.テスト/テストスイートの実行を有効にします。スケジュール実行する場合は2個目のチェックボックスも有効にします。

find_real_file.png

 

3.ナビゲーションメニュー[Automated Test Framework] > [Tests]を開きます。
4.Testの新規作成を行います。

find_real_file.png

 

5.Name(今回はMy New Test1)を入力し保存します。

find_real_file.png

 

6.Test StepsタブのAdd Test Templateボタンよりテストステップを追加します。

find_real_file.png

 

今回使用したTestStepは以下の通りです。

find_real_file.png

※個々のStepの設定方法などに関しては、ServiceNow公式ドキュメントを参照ください。

 

7.テストをRun Testボタンから実行。別ブラウザが立ち上がりATFは実行されます。

find_real_file.png

 

 

実際に動かしてみた!                  

 

(テストでやりたいこと)

仮に、インシデント起票時に自動でDescriptionに「説明」という文字列を設定するようなカスタマイズを行っていたとします。そこに、バージョンアップでDescriptionがRead Onlyフィールドになったとします。Descriptionに「説明」という文字列を設定するカスタマイズは、バージョンアップの影響で正常に動作しなくなります。これを、ATFを使って検知してみます。

find_real_file.png

 

(テスト結果)

まず、ATF(1回目)を実行します。インシデントを起票し、Descriptionに「説明」が入っているかどうかATFを使って確かめます。

 

今回、組んだテストステップは全9つです。

テストステップ関連リストは、個々のステップとテストで実行する順序を定義します。

find_real_file.png

 

テストを実行します!

find_real_file.png

 

テストを実行している間は、テストランナーと呼ばれるウインドウが開かれます。テストを実行するときにテストランナーが利用できない場合、システムはユーザがテストランナーを開くように求められます。

テストを実行後、フレームワークはテスト結果レコードを作成します。

find_real_file.png

 

ATFは全て成功しています!

find_real_file.png

 

このようにATFは結果レコードの表示と共にテストステップごとのスクリーンショットを取得してくれます。

 

次に、バージョンアップが行われた後、ATF(2回目)を実行します。

バージョンアップ後はDescriptionがRead Onlyになった影響で、Descriptionへの「説明」という文字列の設定に失敗します。

find_real_file.png

 

ATFはバージョンアップによる障害を検知しました!!!

 

障害の詳細として以下の項目が表示されています。

  • 失敗したステップ:Open an Existing Record (既存のレコードを開く)
  • サマリー:FAILURE: Failed to open the 'incident' form with id '548b16cfdb520010863eb08039961922'
  • エラー:テーブル「インシデント」にはID「548b16cfdb520010863eb08039961922」のレコードがありません
  • 失敗したステップのスクリーンショット:screenshot_2020_01_17_02_22_16_failed.jpg

find_real_file.png

 

障害の詳細を見るとバージョンアップによりDescriptionが読み取り専用となってしまったため、Business Rulesが働いて値を設定してインシデントのレコードを保存しようとしても保存できなくなってしまっています。保存したはずのレコードを開く際に障害を検知しています。

 

終わりに                       

このようにATFを利用することで、最低でも年1回必要となるファミリーバージョンアップ対応におけるリグレッションテストを自動化し、作業効率化が期待できます。是非、皆さまの環境でもATFを試してみてください。

この記事がご覧いただいた方の参考になれば幸いです。最後までお付き合いいただきありがとうございました!