記事 (1/40)
このモジュールでは、Automated Test Framework (ATF) を使用して次のことを行う方法を学習します。
記事 (2/40)
重要:この学習モジュールの内容は、Rome ServiceNow リリース用に最後に更新されました。
この学習モジュールのコンセプトページでは、さまざまな例が使用されています。例を再作成する必要はありません。演習では、NeedIt アプリケーションを開発します。演習は、次の 3 つの方法で示されます。
NeedIt アプリケーションを使用すると、ユーザーは複数の部門からのサービスを要求できます。ソースコントロールを使用して、この学習モジュールに必要なすべての NeedIt アプリケーションファイルから始めます。
記事 (3/40)
Automated Test Framework (ATF) は、アプリケーション、カスタマイズ、および設定のテストを自動化するために使用される ServiceNow アプリケーションです。
ATF を使用して以下をテストします。
たとえば、アップグレード前に、Beth Anglin は、NeedIt テーブルにレコードを作成できます。アップグレード後、ATF を使用して、Beth が引き続き NeedIt テーブルレコードを作成できるかどうかを確認します。
記事 (4/40)
ATF テストは、ServiceNow における自動化され、順序付けられた一連のステップです。ステップでは、実行するアクションと実行順序を定義します。ATF はステップを実行し、各ステップのステータスおよびテスト全体のステータスを報告します。
ATF には、さまざまなアクションのテストの例が用意されています。サンプルテストのリストを表示するには、Application Navigator を使用して [Automated Test Framework (ATF)] > [テスト] を開きます。
「既存のレコードを開く」テストは、レコードを開いていくつかの値をアサートするテストの例です。「既存のレコードを開く」テストのステップは、次のとおりです。
ATF は、クライアント側ステップのスクリーンショットを撮ります。開発者は、テスト結果を調べるときにスクリーンショットを表示できます。
ユーザーがこれらの手順を手動で実行する場合、次のアクションを実行します。
ステップ 1 - ATF ユーザーの代理操作を行う
ステップ 2 - ATF ユーザーフォームを開く
ステップ 3 - [ユーザーレコード] フィールドの値を確認する
ユーザーが手動でテストを実行することは可能ですが、ATF はテストステップを自動化し、時間を節約して人為的なミスを防ぎます。
記事 (5/40)
ATF テストは、ServiceNow インスタンスでアクションを実行します。テストが誤って実行されないようにするため、テストの実行はデフォルトで無効になっています。
テストレコード内のリンクをクリックしてテストの実行を有効にするか、Application Navigator を使用して [Automated Test Framework (ATF)] > [管理] > [プロパティ] を開きます。
重要:すべてのテスト同様、ATF テストは開発インスタンスまたはテストインスタンスでのみ実行してください。本番環境で ATF を実行することは推奨しませんし、サポートもされません。
ATF テストをオンデマンドで実行するには、テストレコードを開き、[テストを実行] ボタンをクリックします。
テストステップにフォームを開くなどのクライアント側アクションが含まれている場合、テストはクライアントテストランナーで実行されます。クライアントテストランナーは、クライアント側テストのランタイム環境です。クライアントテストランナーは、クライアントテストランナーが起動されているブラウザー (Chrome や Firefox など) を使用して、特定のユーザーとしてテストステップを実行します。
必要に応じて、クライアントテストランナーでテストの進捗状況を監視します。
注意:クライアントテストランナーがフォアグラウンドのウィンドウまたはタブである場合、クライアントテストはより高速に実行されます。
クライアントテストランナーが現在のテストの実行を終了すると、「テストの実行終了、結果を報告」というテキストが短時間表示された後、「テストの実行を待機しています」という表示に戻ります。クライアントテストランナーはアクティブなままで、別のテストが実行されるのを待ちます。ブラウザータブを閉じると、クライアントテストランナーが終了します。ATF 管理者は、[Automated Test Framework (ATF)] > [管理] > [すべてのテストランナー] モジュールを使用してクライアントテストランナーを管理します。
重要:サーバー側のテストステップでは、クライアントテストランナーを使用しません。
テストの起動に使用する ServiceNow ウィンドウで、クライアント側とサーバー側の両方のテストの進捗状況を監視します。
テストの実行後、ATF は次のレコードを除き、テスト実行中に変更されたデータをロールバック (取り消し) します。
注意:ATF ロールバックは無効にできません。ロールバックを無効にすると、プラットフォーム全体に予期しない結果が生じるおそれがあるため、無効化は許可されていません。
記事 (6/40)
実行が完了したら、[結果に移動] ボタンをクリックして段階的なテスト結果を表示します。過去のテスト結果を確認するには、Application Navigator を使用して [Automated Test Framework (ATF)] > [テスト結果] を開きます。
テスト結果レコードには、テスト結果、テストステップ結果、テストログ、およびテストの実行に関連するトランザクションが表示されます。
想定されるテストステップステータス値は次のとおりです。
有効にすると、テスト実行中にスクリーンショットがキャプチャされ、テスト結果レコードに添付されます。このプロパティはデフォルトで有効になっています。このプロパティ値を変更するには、Application Navigator を使用して [Automated Test Framework (ATF)] > [管理]> [プロパティ] を開きます。
テスト結果レコードの [ダウンロード] リンクをクリックして、スクリーンショットをダウンロードして表示します。
すべてのスクリーンショットをダウンロードして表示するには、[添付ファイルの管理] リンクをクリックし、[すべてをダウンロード] ボタンをクリックします。
[ステップ結果] 関連リストを使用して、特定のテストのステップ結果を表示します。[開始時間] 列のリンクをクリックして、テストステップレコードを開きます。
たとえば、[代理操作] ステップ結果へのリンクをクリックすると、代理操作ステップ結果レコードが開きます。
[テストログ] 関連リストを使用して、テストおよびすべてのテストステップのログ情報を確認します。
[テストトランザクション] 関連リストを使用して、テストステップのトランザクションを表示します。ここに示されているトランザクションは、ServiceNow とのブラウザー (クライアント側) のインタラクションです。
記事 (7/40)
ATF には、開発者がテスト実行に関する追加情報にアクセスできるようにするためのデバッグ機能があります。
デバッグ機能はデフォルトで無効になっています。テストのデバッグを有効にするには、[Automated Test Framework (ATF)] > [管理] > [プロパティ] を開きます。[追加のデバッグ機能を有効にします] チェックボックスを選択します。
デバッグ機能を有効にすると、クライアントテストランナーに [デバッグ情報] タブが追加されます。
デバッグでは、テストレコードの [テストログ] に情報が書き込まれます。
デバッグ機能を有効にすると、ATF はより詳細なテスト実行動作を [テストログ] に記録します。デバッグ機能を有効にすると、[既存のレコードを開く] の [テストログ] にさらに多くのステートメントが含まれることに注意してください。
演習 (8/40)
この演習では、「簡易 UI テスト」と「フォームが開いていないために不合格」という 2 つのサンプル ATF テストを実行します。また、テスト結果を確認します。
注意:PDI が自動的に App Engine Studio を開く場合は、PDI にアクセスするために使用するユーザーロールを変更する必要があります。演習を完了するには、[管理者] ユーザーロールに切り替えます。
質問:Chad Chadington のユーザーレコードはありますか?あるべきですか?
回答:ATF は、テストの実行が終了した後で、実行内容をクリーンアップしました。テスト中に作成された Chad Chaddington のレコードは、テストの実行が終了した時点でユーザーテーブルから削除されました。
記事 (9/40)
テストを作成するには、Application Navigator を使用して [Automated Test Framework (ATF)] > [テスト] を開きます。[新規] ボタンをクリックします。
テストレコードを設定します。
開発者向けのヒント:予想されるテスト結果を [説明] フィールドに含めます。同僚も将来の自分も、それを高く評価するでしょう。
[保存] ボタンをクリックします。フォームには、[テストステップ]、[テスト結果]、[相互に排他的なテスト] 関連リストが表示されます。
[テストステップ] 関連リストで、[テストステップを追加] ボタンをクリックします。[テストステップを追加] ダイアログで、テストカテゴリを選択します。
テストに追加するテストステップを選択し、[次へ] ボタンをクリックします。
[テストステップを追加] ダイアログで、ステップを設定します。ステップフィールドは、選択したテストによって異なります。
[送信] ボタンをクリックします。
実行順序によって、テストステップを実行する順序が決まります。デフォルトでは、実行順序はステップがテストに追加される順番です。
テストステップの作成時
テストステップをテストに追加する場合は、[次の後に挿入] 選択リスト使用してステップを目的の場所に配置します。
テストステップの作成後
テストステップを作成した後、[実行順序] フィールドを使用して、順序が正しくないステップに番号を付け直します。フォームを保存すると、他のテストステップは、加えた変更に基づいて自動的に並べ替えられます。
開発者向けのヒント:多くのテストは、「ユーザーの作成」または「代理操作」テストステップで始まり、管理者以外のユーザーに対してテストステップが想定どおりに機能するかどうかを確認します。
演習 (10/40)
この演習では、次のテストを作成して実行します。
質問:注釈はどういう意味ですか?
「メールインシデント検証」テストを変更して、admin ロールを持つユーザーとしてすべてのテストステップを実行できるようにします。テストを実行し、結果を調べて、テストがまだ成功していることを確認します。行き詰まった場合は、課題のソリューションを表示できます。
課題のソリューション:
「メールインシデント検証」テストの最初のステップは、「ユーザーの作成」です。ユーザーには任意の名前を付けることができます。ユーザーを admin ロールで設定し、[このユーザーの代理操作を行う] フィールドを選択 (オン) する必要があります。
ATF のその他のテストケースを確認したい場合は、docs.servicenow.com サイトの「Automated Test Framework use case examples (Automated Test Framework のユースケースの例)」のページにアクセスしてください。
記事 (11/40)
ATF は変数を使用して、あるテストステップから別のテストステップにデータを渡します。変数には次の 2 つのタイプがあります。
入力変数は、実行に必要な情報をテストステップに提供します。開発者は、テストステップを設定するときに入力変数の値を指定します。たとえば、「ユーザーの作成」テストステップには、[名]、[姓]、[ロール]、[グループ]、[このユーザーの代理操作を行う] の 5 つの入力変数があります。
一部のテストステップは、出力変数と呼ばれる値を返します。出力変数は、後のテストステップへの入力として使用できます。たとえば、「ユーザーの作成」テストステップは、他のテストステップが使用できる [ユーザー] 変数を出力します。
記事 (12/40)
テストを設定する場合、開発者は以前のテストステップの出力変数を使用して、後続のテストステップの入力変数を設定できます。この例では、[ユーザー] は「ユーザーの作成」テストステップからの出力変数です。「ユーザーの作成」テストステップの後に生じるどのテストステップでも、[ユーザー] 出力変数を使用して入力変数を設定できます。
出力変数を入力として受け入れるテストステップフィールドには、[データピルピッカー] ボタンがあります。
[データピルピッカー] ボタンにより、入力変数で使用できる出力変数を含むステップのリストが開きます。
ステップをクリックして、そのステップからの出力変数のリストを開きます。
右側の列で出力変数をクリックして、入力変数に挿入します。
変数は、データピルで視覚的に表現されます。[問い合わせユーザー] フィールドに示されている構文は、テスト「ステップ 1:ユーザーの作成」の出力変数 [ユーザー] を [問い合わせユーザー] フィールドへの入力として使用することを意味します。
このトレーニングモジュールでは、規則 (ステップ ➔ 変数) を使用してデータピルを示します。
[ユーザー] 出力変数は、データベース内のレコードを一意に識別する参照 (sys_id) です。参照レコードのフィールド値を使用して入力変数を設定するには、[展開] ボタン () をクリックして、目的のフィールドを選択します。開発者は参照を使用して、関連するレコードをドット連結できます。
演習 (13/40)
この演習では、「フィールド値の設定」テストステップを追加して、「メールインシデント検証」テストを変更します。新しいテストステップでは、出力変数を使用して入力変数を入力します。
記事 (14/40)
ATF テストテンプレートは、よく一緒に使用される再利用可能なテストステップのセットです。テストテンプレートには、テストステップの任意の組み合わせを含めることができます。テンプレートのテストステップには、テストに追加した後にさらに構成が必要になる場合があります。
ATF には、例として「デフォルトの新規フォームテストテンプレート」が含まれています。デフォルトのテンプレートには、一連の 8 つのテストステップが含まれています。
テストにテストテンプレートを追加するには、テストの [テストステップ] 関連リストで、[テストテンプレートを追加] ボタンをクリックします。テンプレートを選択します。プロンプトが表示されたら、他の変数値を入力します。要求される変数値は、テンプレートのテストステップによって異なります。[追加] ボタンをクリックします。
テンプレートの [説明] フィールドには、テンプレートのテストステップに基づいて入力されます。説明には、テンプレートステップを機能させるためにテンプレートのテストステップに対して何を実行する必要があるかを説明する、開発者向けの指示が含まれています。テンプレートがテストに追加される前に [説明] フィールドに値があった場合、既存の [説明] フィールドの値にテンプレートのステップと指示が追加されます。
テンプレートのテストステップは、[テストステップ] 関連リストに追加されます。個別に追加されたテストステップと同じ戦略を使用して、テンプレートから追加されたステップを編集および削除します。たとえば、テンプレートによって追加された 8 つのテストステップのうち 6 つだけがテストに必要な場合、開発者はテンプレートを使用してテストステップを追加してから、不要なテストステップをテストから削除できます。この例では、テストで「UI アクション可視性」を検証する必要はありません。UI アクション関連のテストステップは、テンプレートによって追加されたすべてのテストステップを削除することなく削除できます。
記事 (15/40)
ATF 管理者は、[Automated Test Framework (ATF)] > [管理] > [テストテンプレート] モジュールを使用してテストテンプレートを作成および編集します。
テンプレートにテストステップを追加するには、[テストテンプレートのロック解除 (Unlock Test template)] ボタン () をクリックし、テストステップリストを編集します。
スラッシュバケットを使用してテストステップを追加するには、テストを選択してから、[追加] ボタンをクリック () します。終了したら、[保存] ボタンをクリックします。
演習 (16/40)
ServiceNow は GitHub を使用して、開発者サイトの学習コンテンツをコピーして使用するアプリケーションリポジトリを提供します。リポジトリには、アプリケーションファイルの固定セットであるタグが含まれているため、部分的に構築されたアプリケーションを使用して作業を開始できます。ServiceNow が提供するリポジトリを個人開発者インスタンス (PDI) にコピーしてインポートすることで、モジュール内の実践的な演習に必要なすべてのファイルを取得できます。
注意:ServiceNow が開発者プログラムの学習コンテンツで GitHub を使用する方法の詳細と、リポジトリをフォークしてアプリケーションをインポートする方法に関するビデオを見るには、『GitHub ガイド』を参照してください。
この演習では、次のことを行います。
重要:リポジトリを既にフォークしてインポートしている場合は、次の演習に進み、タグから分岐を作成して、アプリケーションファイルを PDI にロードできます。モジュールを完了するには、NeedIt アプリケーションファイルが必要です。
演習のこのセクションでは、開発者サイトの学習コンテンツで使用するアプリケーションリポジトリのパーソナルフォークを作成します。
演習のこのセクションでは、アプリケーションリポジトリを ServiceNow にインポートします。プロセスの一環として、まず GitHub アカウントの資格情報レコードを作成してから、Studio を使用してアプリケーションリポジトリを PDI にインポートします。
演習 (17/40)
この演習では、モジュールで使用するアプリケーションファイルを含む「Automated Test Framework の使用」モジュールの NeedIt アプリケーションの分岐を作成します。
注意:この演習を開始する前に、「演習:「Automated Test Framework の使用」モジュールのためにリポジトリをフォークしてアプリケーションをインポートする」で説明しているように、NeedIt リポジトリをフォークしてインポートしておく必要があります。
演習 (18/40)
この演習では、テストテンプレートを作成して次の演習で使用します。インスタンスがアップグレードされたら、次の 3 つの場合にインスタンスが機能することを確認するために、「NeedIt の [必要な場合] フィールドの日付」ビジネスルールで回帰テストを実行することができます。
ビジネスルールをテストするためのテンプレートを作成します。
演習 (19/40)
この演習では、前回の演習で作成したテストテンプレートを使用して、新しい NeedIt レコード用に 3 つのテストを作成します。3 つのテストすべてで、以下を行います。
さらに、3 つのテストのそれぞれにおいて [必要な場合] フィールドに日付を設定します。日付は各テストで異なります。
作成するテストは、NeedIt アプリケーションの一部です。NeedIt が現在のスコープであることを確認します。
[必要な場合] の日付が、テストにハードコードされていることにお気付きかもしれません。つまり、テストを実行するには、テストを手動で変更する必要があるということです。日付をハードコーディングする代わりに、サーバー側の JavaScript を使用して動的に日付を設定します。
開発者向けのヒント:「必要な場合 - 予定」のテストフォームの [テストをコピー] ボタンは、この課題に役立ちます。
質問:前回の演習で行ったテストに基づいて、ユーザーは、「必要な場合」を過去の日付にして NeedIt レコードを保存できますか?
回答:「NeedIt の [必要な場合] フィールドの日付」ビジネスルールでは、[必要な場合] フィールドの日付値が 今日の日付または過去の日付の場合、新しい NeedIt レコードは保存されません。新しい NeedIt レコードには、「必要な場合」の予定の日付を指定する必要があります。
例として、「必要な場合 - 予定」のテストを使用し、さらに 2 つのテストを作成します。
2 つのテストを作成した後、テストを実行して、予想する結果が得られることを確認します。両方のテストが不合格になるはずです。
質問:「必要な場合 - 過去」と「必要な場合 - 今日」のテストが不合格になると予想されるのはなぜですか?
回答:「NeedIt の [必要な場合] フィールドの日付」ビジネスルールでは、[必要な場合] の日付が予定の日付であるかを検証します。[必要な場合] の日付が予定の日付でない場合、ビジネスルールによりレコードは挿入されません。ビジネスルールが機能している場合、「必要な場合 - 過去」および「必要な場合 - 今日」のテストは、レコードの挿入に失敗するはずです。「レコード挿入」テストステップは不合格になります。
記事 (20/40)
前回の演習では、「NeedIt の [必要な場合] フィールドの日付」ビジネスルールにより新しいレコードを保存できなかったため、「必要な場合 - 過去」のテストは不合格でした。テストは不合格でしたが、不合格は予想通りの結果でした。不合格は予想通りの結果だったので、このテストステップは成功したと言えます。アプリケーションのテストを作成する際、開発者はいくつかのテストステップの成功基準を定義できます。
[アサーションタイプ] フィールドを使用して、テストステップの成功基準を指定します。たとえば、「レコード挿入」テストステップの [アサーションタイプ] の選択肢は次のとおりです。
テストステップが異なれば、[アサーションタイプ] フィールド値も異なります。「レコードのクエリ」テストステップでは、[アサーションタイプ] の値が「レコードの挿入」テストステップとは異なっています。
テストステップのアサートオプションは、ServiceNow Docs サイトにあります。
開発者向けのヒント:テストステップの予想される結果と一致するように [アサーションタイプ] を設定し、予想される結果と一致したときにテストが成功するようにします。
演習 (21/40)
この演習では、NeedIt レコードが作成されていない場合に、失敗ではなく成功を報告するように、「必要な場合 - 過去」および「必要な場合 - 今日」のテストを更新します。「必要な場合 - 過去」および「必要な場合 - 今日」のテストでは、「NeedIt の [必要な場合] フィールドの日付」ビジネスルールが正しく機能している場合に、レコードの作成に失敗することが想定されています。成功を報告するには、レコード作成の失敗が想定されていることをアサートするように、「レコード挿入」テストステップの [アサーションタイプ] を設定します。
質問:「レコード検証」および「ログ」テストステップを削除したのはなぜですか?
回答:「必要な場合 - 過去」テストには検証すべきレコードが挿入されていないため、「レコード検証」テストステップを削除できます。レコードを挿入できない場合でも [レコードの挿入] が成功するようにアサーションタイプが設定されているため、失敗が予想されることを示すログメモは不要になりました。
レコードが作成された場合に「必要な場合 - 今日」テストが成功するよう次のように更新します。
記事 (22/40)
テストスイートは、関連するテストやその他のテストスイートを単一ジョブとして実行するための論理的な階層グループです。たとえば、前回の演習で作成されたテストは、同じビジネスルールによって処理される 3 つのケースをテストしているため、関連しています。前回の演習では、テストは個別に実行されましたが、同じグループの一部として実行する方が理にかなっています。
前回の演習で作成した 3 つのテストを実行するテストスイートには、次のような階層があります。
この例では、テストスイートの「NeedIt アプリのテストスイート」は、テストとテストスイートの階層になっています。
最上位レベルは、「NeedIt アプリのテストスイート」です。階層内の残りのテストとテストスイートは、「NeedIt アプリのテストスイート」の子孫です。
テストスイート階層では、テストは子になれますが、親にはなれません。
テストスイートは、親にも子にもなれます。テストスイートの「メールアドレス構文の検証」は、次のようになっています。
開発者向けのヒント:あるテストがテストスイート階層に複数回含まれている場合、そのテストは 1 回だけ実行されます。
記事 (23/40)
テストスイートを作成するには、Application Navigator を使用して [Automated Test Framework (ATF)] > [スイート] を開きます。[新規] ボタンをクリックします。
テストスイートの名前と説明を入力します。
[保存] ボタンをクリックします。
[テストスイートテスト] 関連リストで、[新規] ボタンを使用してテストスイートの新しいテストを作成します。既存のテストをスイートに追加するには、[新規行を挿入...] をダブルクリックし、テストの名前を入力します。リストからテストを選択し、[保存 (Enter)] ボタンをクリックします。
[実行順序] フィールドによって、テストを実行する順序が決まります。ATF は、テストが追加された順序に基づいて実行順序を自動的に決定します。開発者は、[実行順序] フィールドの値を変更して、テスト実行の順序を変更できます。
[不合格時に中止] フィールドは、テストが不合格になった場合にテストスイートの実行を停止するかどうかを示します。デフォルト値は false です。false は、テストが不合格になった場合でもスイートの残りの部分のテストを続行することを意味します。
[子テストスイート] 関連リストで、[新規] ボタンを使用してテストスイートの新しいスイートを作成します。新しいテストスイートを設定します。[親スイート] フィールドは自動的に設定されます。
既存のテストスイートを子として追加する場合は、編集する子テストスイートを開きます。[親スイート] フィールドに値を手動で設定し、レコードを保存します。
[子テストスイート] 関連リストには、現在のスイートを親とするすべてのスイートが表示されます。
記事 (24/40)
テストスイートを実行するには、[テストスイートを実行] ボタンをクリックします。
テストスイートにクライアント側スクリプトを実行するテストステップが含まれている場合は、クライアントテストランナーを選択するように求められます。新しいテストランナーを開始するか、既存のテストランナーを選択した後、[テストスイートを実行] ボタンをクリックします。
テストスイートの実行が完了したら、[テストスイートを実行] ダイアログウィンドウに結果が表示されます。[テストスイートを実行] ダイアログに表示されるテスト結果は、テストスイート階層に従います。
[結果に移動] ボタンをクリックして、テストスイートの結果レコードを表示します。結果は、テスト結果ごと、および子テストスイート結果ごとにグループ化されます。
[子テストスイート結果] 関連リストで、[階層リストの表示] アイコン () をクリックして、スイートのテストを表示します。
テストの [プレビュー] アイコン () をクリックして、テストステップの結果を確認します。
開発者向けのヒント:クライアントテストランナーでのテストの実行速度が遅い場合は、ServiceNow コミュニティのブログ「How to avoid ATF testing failures (ATF テストの不合格を回避する方法)」を確認してください。
記事 (25/40)
ATF によって検出された問題を修正した後、開発者はスイート全体を再度実行しないで、テストスイートの不合格になったテストを再実行できます。[不合格になったテストを再実行] ボタンをクリックして、テストスイートの不合格になったテストのみを実行します。
ATF は、再実行テスト用の新しいスイート結果階層を作成します。進行中の作業者、テスト結果、およびテストスイートの結果レコードは、以前のテストスイートと同じスイート階層を示します。以前のランで合格したテストやスイートは含まれません。
不合格になった子スイートまたはテストを削除または無効化してからスイートを再実行すると、ATF は再実行時にそのスイートまたはテストを実行しません。
不合格になったテストのスイートに子スイートまたはテストを追加してから再実行すると、ATF は追加されたスイートまたはテストを再実行しません。
演習 (26/40)
この演習では、NeedIt アプリという親テストスイートを作成して実行します。親テストスイートには、子テストスイートが含まれます。
質問:NeedIt アプリ (NeedIt App) テストスイートの正しい階層を示しているのはどの図でしょうか?
演習 (27/40)
この演習では、NeedIt アプリ (NeedIt App) のテストスイートに追加するテストを作成します。テストでは、NeedIt フォームの [要求先メールアドレス (Requested for email)] フィールドが [要求先] フィールドに記載されているユーザーの正しいメールアドレスであるかどうかを判断します。
演習のこのセクションでは、テストステップをテストに追加します。「ユーザーの作成」テストステップでは、作成されたレコードにメールアドレスが含まれていないため、このテストには「代理操作」テストステップを使用します。
前の演習で習得したスキルを使用して、「NeedIt Set Requested for とメール」テストを実行します。3 つのテストステップがすべて正常に完了するはずです。
質問:NeedIt アプリ (NeedIt App) テストスイートの正しい階層を示しているのはどの図でしょうか?
記事 (28/40)
実行ごとに異なるテストデータで、パラメーター化されたテストを複数回実行します。
パラメーター化されたテストでは:
パラメーター化されたテストが実行されると、Automated Test Framework はパラメーターをデータセット値で置き換えます。たとえば、開発者はインシデントレコードを作成して検証するテストを作成できます。パラメーターを使用して、テストをデータセットの各行を基に複数回実行し、結果が予想と一致するかを検証します。カテゴリが [ハードウェア] の場合、テストでは [アサイン先グループ] が [ハードウェアサポート] に設定されているかを検証します。カテゴリが [問い合わせ/ヘルプ] の場合、テストでは [アサイン先グループ] が [トリアージ] に設定されているかを検証します。
記事 (29/40)
パラメーター化されたテストを作成するには、テストフォームで [パラメーター化されたテストの有効化] オプションを選択します。[パラメーター化されたテストの有効化] オプションを選択すると、[パラメーター定義]、[テスト実行データセット]、および [パラメーター化されたテスト結果] の関連リストが表示されます。
パラメーター化を設定する前に、[他のアクション] メニュー () をクリックし、[保存] メニューアイテムを選択します。
パラメーターは、開発者がテストステップでデータセットからテストステップに値を渡すために使用できる変数です。パラメーターは共有または排他にすることができます。
複数のテストで使用される変数の共有パラメーターを作成します。たとえば、複数のテストを異なるユーザーとしてテストする必要がある場合があります。共有パラメーターを作成して変数を一度作成してから、パラメーター化されたテストでその変数を使用します。
[パラメーター定義] 関連リストで、[共有パラメーターを追加] ボタンをクリックします。[共有パラメーターを追加] ボタンが使用できない場合は、現在のアプリケーションスコープがグローバルではありません。注釈により、共有パラメーターはグローバルアプリケーションスコープでのみ作成できることがユーザーに通知されます。
注釈の [新しい共有パラメーターを追加する場合は、グローバルに切り替えます] リンクをクリックするか、アプリケーションピッカーを使用してグローバルアプリケーションスコープに切り替えます。
共有パラメーターを設定します。設定オプションは、作成されたパラメーターのタイプによって異なります。
アプリケーションスコープを、スコープ対象のアプリケーションに設定します。[パラメーター定義] 関連リストで、[排他パラメーターを追加] ボタンをクリックします。排他パラメーターを設定します。設定オプションは、作成されたパラメーターのタイプによって異なります。
データセットは、テストの実行時に使用されるランタイムデータです。データセット内の各レコードは、パラメーター値セットと呼ばれます。各パラメーター値セットに対してテストが実行されます。[テスト実行データセット] 関連リストを使用して、パラメーター化されたテストで使用するデータを設定します。
[新規] ボタンを使用してデータセットレコードを作成するか、[インポート] ボタンを使用して複数のデータセットレコードを一度に作成します。
[テスト実行データセット] 関連リストで、[新規] ボタンをクリックします。[新規パラメーター値の設定] ダイアログで、テストで使用するすべてのパラメーターの値を設定します。すべての共有パラメーターと排他パラメーターは、パラメーター値セットで設定できます。
データセット内のパラメーター値セットごとにこのプロセスを繰り返します。
[テスト実行データセット] 関連リストで、[インポート] ボタンをクリックします。[テスト実行データセットのインポート] ダイアログで、インポートの設定を行います。
インポート動作を設定します。インポートされた値は、既存のデータセットにパラメーター値セットを追加したり、既存のパラメーター値セットを新しいデータで置き換えたりするのに使用できます。
[Excel テンプレートをダウンロード] ボタンをクリックしてスプレッドシートをダウンロードし、インポートする値セットを入力します。[ファイルを選択] ボタンをクリックして、インポートする入力済みスプレッドシートを選択します。[アップロード] ボタンをクリックして、データセットをインポートします。
入力としてパラメーターを受け入れるテストステップフィールドには、[データピルピッカー] ボタンがあります。
[データピルピッカー] ボタンにより、入力変数で使用できるパラメーターを含むステップのリストが開きます。前のテストステップからの出力変数もリストに含まれる場合があります。[パラメーター] をクリックして、テストに使用できるパラメーターのリストを開きます。
右側の列で出力変数をクリックして、入力変数に挿入します。
演習 (30/40)
NeedIt アプリケーションには、x_58872_needit.needit_user と x_58872_needit.admin の 2 つのロールがあります。いずれかのロールを持つユーザーは、NeedIt レコードを作成できます。
この演習では、パラメーター化されたテストを作成して、各ロールを持つユーザーが [NeedIt] > [新規作成] モジュールを開けること、およびこのロールを持つユーザーにフィールドが表示され、NeedIt レコードを作成できることを検証します。
テストでパラメーター化されたテストを有効にして、パラメーターとデータセットを作成します。
「ユーザーの作成」ステップには、新しいユーザーに適用する名、姓、およびロールが必要です。演習のこのセクションでは、これらの各フィールドのパラメーターを作成します。
質問:[パラメーター定義] 関連リストで [共有のパラメーターを追加] ボタンを使用できますか?なぜですか、それともなぜそうではそうではないのですか?
回答:選択したアプリケーションスコープが NeedIt であるため、[共有のパラメーターを追加] ボタンは使用できません。[共有のパラメーターを追加] ボタンは、グローバルアプリケーションスコープでのみ使用できます。
演習のこのセクションでは、テスト時に使用するパラメーターのデータセットを作成します。テストする NeedIt アプリケーションの各ロールにつき、1 つのレコードを作成します。
パラメーター化されたテストを使用するための最後のステップでは、パラメーターを使用するテストステップを設定します。演習のこのセクションでは、「ユーザーの作成」、「モジュールに移動」、「フィールドステータスの検証」の各テストステップをテストに追加します。「ユーザーの作成」テストステップでは、パラメーター値を使用します。
両方のユーザーについてのテストが正常に完了したかを検証します。
パラメーター化されたテストを NeedIt アプリ (NeedIt App) テストスイートに追加します。テストスイートをテストして、すべてのテストが正常に完了したかを検証します。
課題ソリューション:
テストを NeedIt アプリ (NeedIt App) テストスイートに追加するには、[NeedIt アプリ (NeedIt App)] テストスイートを開きます。[NeedIt モジュールの作成 (Create NeedIt Module)] テストを [テストスイートテスト] 関連リストに追加します。
さらにテストを構築してアクセスを検証する場合は、スイート内でアクセステストをグループ化することをお勧めします。
記事 (31/40)
ATF 開発者は、テストスイートを特定の日時に実行するようにスケジュールできます。スケジュール済みのテストスイートの実行が終了すると、指定されたユーザーに通知されます。
テストスイートの実行をスケジュールするための一般的な手順は、次のとおりです。
記事 (32/40)
スケジュールを作成するには、[Automated Test Framework (ATF)] > [スケジュール] を開き、[新規] ボタンをクリックします。
条件スクリプトは、ATF スケジュールではオプションです。条件スクリプトは、スケジュールされた時間が満たされたときに評価されます。条件スクリプトの最後の行は、true または false と評価する必要があります ( true または false を返すのではなく、true または false と評価します)。条件スクリプトが false と評価された場合、スケジュール内のテストスイートは実行されません。サンプルスクリプトでは、ATF スケジュールは午後 7:00 に実行されるように設定された日次スケジュールです。条件スクリプトにより、スケジュールが日次スケジュールであっても、週末にはテストスイートが実行されないようになっています。
開発者向けのヒント:[今すぐ実行] ボタンを使用してスケジュールをテストする場合、条件スクリプトは評価されません。
テストスイートをスケジュールに追加するには、[スイートのスケジュール (Schedule Suites)] 関連リストまでスクロールし、[新規] ボタンをクリックします。スケジュール済みのスイート実行レコードを設定します。
開発者向けのヒント:1 つのスケジュールで複数のブラウザー/ブラウザーバージョン/OS/OS バージョンで同じスイートをテストできるように、テストスイートをスケジュールに複数回表示することができます。
記事 (33/40)
ATF は、スケジュール済みのクライアントテストランナーを使用して、クライアント側のテストステップを含むテストスイートが組み込まれているスケジュールを実行します。スケジュール済みのクライアントテストランナーは、スケジュール済みのテストスイートのみを実行します。
スケジュール済みのクライアントテストランナーを作成するには、[Automated Test Framework (ATF)] > [実行] > [スケジュール済みのクライアントテストランナー] を開きます。スケジュールのテストスイートを実行するすべてのブラウザー/ブラウザーバージョン/OS/OS バージョンで、この手順を繰り返します。
ATF 管理者は、[Automated Test Framework (ATF)] > [実行] >[スケジュール済みのアクティブなテストランナー] モジュールを使用して、実行中のスケジュール済みテストランナーを表示できます。
スケジュール済みのテストスイートに指定されたブラウザー/ブラウザーバージョン/OS/OS バージョンが利用できない場合、ATF はそのテストスイートをスキップします。
記事 (34/40)
スケジュール済みテストスイートが実行されると、スケジュール済みのスイート実行レコードの [ウォッチリスト] にあるユーザーとメールアドレスは、テストスイート結果レポートをメールで受信します。
テストスイート結果メールは、スケジュール、スイート、およびテストレベルでの実行結果を示すクリック可能なレポートです。
ATF 管理者は、[Automated Test Framework (ATF)] > [管理] > [プロパティ] モジュールを使用してメールのプロパティを変更できます。構成可能なオプションは次のとおりです。
ウォッチリストを編集するには、[ウォッチリストのロック解除 (Unlock Watch list)] ボタン () をクリックします。
演習 (35/40)
ATF で通知を送信するには、個人開発者インスタンス (PDI) でメール送信を有効にする必要があります。PDI のデフォルトでは、メール送信は無効になっています。通常、メールの有効化は ServiceNow 管理者の担当であり、ATF 開発者の担当ではありません。この演習では、メール送信を有効化します。
注意:開発者サイトの「通知」モジュールで作業したことがある場合は、既にメール送信が有効になっている可能性があります。
演習 (36/40)
この演習では、毎月 1 日に実行されるスイートスケジュールを作成して実行します。
スイートで不合格になったテストを含めて、不合格テストが結果にどのように表示されるかを確認します。
質問:スケジュールが実行されなかったのはなぜですか?
回答:クライアント側 (UI) テストステップを含むスケジュールを実行するには、スケジュール済みのクライアントテストランナーが必要なためです。現在、アクティブなクライアントテストランナーは存在しません。
質問:NeedIt 不合格テストの結果のみがメールに含まれるのはなぜですか?
回答:デフォルトでは、不合格のテスト結果のみがメールに表示されます。メール内のすべてのテスト結果を表示するには、[Automated Test Framework (ATF)] > [管理] > [プロパティ] を開き、[スケジュール済みのスイート結果の電子メールに表示される結果のブール値] プロパティの選択を解除 (オフ) します。
NeedIt アプリスイート (NeedIt App Suites) のスケジュールに基づく月次メールを受信したくない場合は、自分のメールアドレスをウォッチリストから削除します。
演習 (37/40)
開発者は、GitHub のようなソースコントロールアプリケーションを使用して、個人開発者インスタンス (PDI) の外部で変更をコミット (完了した作業を保存) できます。アプリケーションに対する変更内容をコミットして、作業をソースコントロールに保存します。
この演習では、このモジュールで完了した作業を GitHub リポジトリに保存します。
注意:ServiceNow が開発者プログラムの学習コンテンツで GitHub を使用する方法の詳細と、作業を保存する方法に関するビデオを見るには、『GitHub ガイド』を参照してください。
記事 (38/40)
Automated Test Framework (ATF) の理解度を確認しますか?以下の質問は、自分の進捗状況を評価するのに役立ちます。質問ごとに回答を決定し、質問の任意の場所をクリックして回答を表示します。
質問:ATF テストとスイートの実行がデフォルトで無効になっているのはなぜですか?
回答:正解は 2 です。ATF ロールバックステップがテスト中に実行されたとしても、テストはデータに影響を与える可能性があります。テストとスイートは、非本番インスタンスでのみ実行し、本番環境では決して実行しないでください。代わりに、テストのために本番インスタンスを非本番インスタンスにクローンする必要があります。
質問:別のユーザーとしてテストを実行するにはどうすればよいですか?複数の回答が正解の場合があります。
回答:正解は 1 と 5 です。「ユーザーの作成」と「代理操作」のテストステップを使用すると、テストのために別のユーザーの代理操作を行うことができます。「ユーザーの作成」テストステップでは、必ずこのユーザーの代理操作を行うようにステップを設定してください。「ユーザーの作成と代理操作」テストステップは存在しません。ユーザーが ATF テストを実行する権限を持っていない場合があるため、テストを実行する前にユーザーの代理操作を行ったり、ユーザーとしてログインしたりしても機能しません。
質問:テストでテストステップを順序付ける方法を説明しているのは次のうちどれですか?複数の回答が正解の場合があります。
回答:正解は 3 と 4 です。ステップをテストに追加するときに、[テストステップを追加] ダイアログの [次の後に挿入] 選択リストを使用して、新しいテストステップを挿入する場所を選択します。または、[実行順序] の値を変更してステップを並べ替えます。
テストステップには [順序] フィールドがありません。ドラッグしてテストステップを並べ替えることができるインターフェイスはありません。テストステップは、作成後に並べ替えることができます。
質問:テストの、あるステップのデータを後のステップでどのように使用しますか?
回答:正解は 5 です。出力変数を使用する前のステップを選択できます。データは、インターフェイスでデータピルとして表されます。前のステップのデータにアクセスするためのスクリプトは必要ありません。
質問:テストテンプレートの目的は何ですか?
回答:正解は 1 です。テストテンプレートを使用すると、同様のテストをより迅速かつ簡単に作成できます。
パラメーター化されたテストで、異なるデータを使用して単一のテストを実行します。スイートで、関連するテストをグループ化して、複数のテストを単一の実行としてまとめて実行します。テストが、一連の順序付けられたステップであり、テストを自動化します。
質問:正誤問題?開発者は、レコードの挿入に失敗してもテストステップが成功するように、予想される結果をテストステップからアサートできます。
回答:正解は正しいです。開発者は、想定結果に基づくアサーションを使用してテストステップを設定できます。
質問:次のうち、テストランナーの目的はどれですか?
回答:正解は 1 です。テストランナーのフルネームは、クライアントテストランナーです。テストランナーは、テストに含まれるクライアント側のテストステップを実行します。テストランナーは特定のブラウザーで起動できますが、主な目的はクライアント側のテストステップを実行することです。
質問:テストスイートが実行されているときに、開発者が、不合格になったテストのみを再実行するにはどうすればよいですか?複数の回答が正解の場合があります。
回答:正解は 1 と 4 です。不合格になったテストの実行方法に関係なく、テストを再実行する前に失敗を修正する必要があります。
問題を修正してテストスイートを再度実行すると、不合格になったテストだけでなく、すべてのテストが実行されます。[テストスイート結果] の個々のテスト結果からテストを再実行することはできません。
質問:開発者は、パラメーター化されたテスト用のテスト実行データセットをどのように作成できますか?複数の回答が正解の場合があります。
回答:正解は 2 と 3 です。パラメーター値セットは、手動で作成することも、スプレッドシートからインポートすることもできます。インポートプロセスでは、入力するテンプレートスプレッドシートが作成されます。
質問:次のうち、ATF でのスケジューリングについて正しいのはどれですか?複数の回答が正解の場合があります。
回答:正解は 4 です。これは引っ掛け問題です。スケジューリングでは、テストではなく、テストスイートを特定の日時に実行するように設定できます。開発者は、スケジュール自体ではなく、スケジュールに割り当てられたテストスイートでブラウザー、オペレーティングシステム、およびウォッチリストの詳細を設定します。
記事 (39/40)
コアコンセプト:
記事 (40/40)
お疲れさまでした。「Automated Test Framework の使用」モジュールが完了しました。自動テストへの関心に基づいて、さらに次のことも学んでいただけます。