テスティングフレームワーク

テスティングフレームワークとは

テスティングフレームワークとは、「DataSpider Servistaで開発したスクリプトのテストをどのように記述して、実行し、検証するか」という仕組みを支援する一連の機能群と、それらを効果的に使用するためのガイドラインの総称です。
フレームワークを使用する利点については、「スクリプトのテスト」を参照してください。

テスティングフレームワークは、以下のテスト支援機能を提供します。

機能 目的
テストプロジェクト プロダクションプロジェクトとテストの分離
別プロジェクトのスクリプト呼び出し サービス登録前のプロダクションスクリプトのテスト
アサーションアダプタ データの検証
スクリプトの一括実行 テストの実行
テスト結果レポートの出力 自動レポーティング機能

上記機能を活用するための手順や説明を、「テスティングフレームワークのガイドライン」として提供します。

テスティングフレームワークの対象

本フレームワークの対象者は「スクリプト開発者」、フェーズは「スクリプト開発時の単体テスト」を想定しています。

また、テストを進めるうえで必要になる以下のようなテスト方針については、本フレームワークでは定義していません。状況に応じて適宜決めるようにしてください。

用語の説明

本ページでは、以下の用語を使用します。

用語 説明
プロダクションスクリプト サービスの運用で使用するスクリプトです。
プロダクションプロジェクト サービスの運用で使用するプロジェクトです。
テストスクリプト プロダクションスクリプトをテストするためのスクリプトです。
テストプロジェクト プロダクションプロジェクトをテストするためのプロジェクトです。
テストに特化した専用の機能を持っています。

テスティングフレームワークのガイドライン

本ガイドラインにおいて、「サービスの開発」は以下の流れで行われることを想定しており、本ガイドラインではこのうちテストフェーズについて扱います。
開発フェーズについては「サービスの開発」を、サービス登録については「サービスの運用」を参照してください。



上記イメージ図の吹き出し内は、テストフェーズを構成する項目を表しています。
各項目の説明と、それに対応するテスティングフレームワークの機能は以下の通りです。

No. 項目 説明 対応機能
1. テストプロジェクトの作成 プロダクションプロジェクトのスクリプトをテストするためのテストプロジェクトを作成します。
2. テストスクリプトの作成 開発したプロダクションスクリプトを呼び出すテストスクリプトを作成し、テストを記述します。
また、テスト状況に応じて適宜プロダクションスクリプトを修正します。
3. テストスクリプトの一括実行 2.で作成したテストスクリプトをプロジェクト単位で一括実行します。
4. テスト結果レポートの確認 3.の一括実行で生成されたテスト結果レポートの内容を確認します。
テスト結果に応じて、テストスクリプトやプロダクションスクリプトを修正します。

以下で、各項目の詳細を説明します。

テストプロジェクトの作成

プロダクションスクリプトをテストするためのプロジェクト(テストプロジェクト)を作成します。
  1. 新規プロジェクト」画面を開きます。

  2. [テストプロジェクトを作成]にチェックを入れてテストプロジェクトを作成します。
    テストプロジェクトは通常のプロジェクトと区別するために緑のアイコンで表示されます。

テストプロジェクトについて

テストプロジェクトでは、プロジェクトのテストを支援する以下の専用機能を使用できます。
  • 別プロジェクトのスクリプト呼び出し(スクリプト呼び出し処理)
  • スクリプトの一括実行
  • テスト結果レポートの出力
通常のプロジェクトにはないこれらの機能を使用し、プロダクションスクリプトのテストを行います。

プロダクションプロジェクトとテストプロジェクトの関連付けについて

機能上プロダクションプロジェクトとテストプロジェクトは一対一でなければならないなどの制限はありません。
しかし、プロダクションプロジェクトが「PRJ-001」の場合には「PRJ-001_TEST」のように一対一の関係にすることでテスト対象が何かを目で見てすぐに把握できるようになるなど、管理上のメリットがあるため、本ガイドラインでは「一対一の関係にすること」を推奨としています。

テストスクリプトの作成

プロダクションスクリプトをテストするスクリプトを作成します。
  1. テストプロジェクトにスクリプトを作成します。

  2. ツールパレットの「基本」-「処理」カテゴリからスクリプトキャンバスに「スクリプト呼び出し」を配置します。

  3. スクリプト呼び出し処理のプロパティ設定ダイアログを開き、[別プロジェクトのスクリプト]を選択します。

  4. [プロジェクト][スクリプト]にテスト対象となるプロダクションプロジェクトおよびプロダクションスクリプトを選択します。

  5. テスト対象のプロダクションスクリプトの動作を検証(アサート)する方法をスクリプトに記述します。
    アサート方法はプロダクションスクリプトの作りによってさまざまなやり方が考えられます。その一部を「テストパターン」項で紹介します。

  6. スクリプトを実行し、期待通りの結果になっているか確認します。必要に応じてテストスクリプトまたはプロダクションスクリプトの改修を行います。
上記1.から6.までをテスト対象のプロダクションスクリプトに対し行っていきます。

別プロジェクトのスクリプト呼び出しについて

別プロジェクトの呼び出しができることにより、サービス登録前(開発中)のプロダクションスクリプトのテストを行うことができます。
それにより、問題をより早い段階で検出することができるようになります。
機能の詳細については、「スクリプト呼び出し処理」を参照してください。

スクリプトの一括実行

テストプロジェクト下のテストスクリプトを一括実行します。
  1. テストプロジェクトの右クリックメニュー[スクリプトを一括実行]を選択します。

  2. 「スクリプトの一括実行」ダイアログが起動します。
    項目の説明
    項目名 説明 備考
    スクリプト一覧 プロジェクト内のテストスクリプトを一覧表示します。
    • 並び順はプロジェクトエクスプローラ上の順序に依存します。
    スクリプト一覧/実行対象 各テストスクリプトを実行対象にするかどうかを選択します。
    • [チェックあり]:(デフォルト)
      実行対象に含めます。
    • [チェックなし]:
      実行対象に含めません。
     
    スクリプト一覧/スクリプト名 テストスクリプト名を表示します。  
    スクリプト一覧/実行結果 テストスクリプトの実行結果を表示します。
    実行結果は、以下の4種類です。
    • 正常終了(<終了ステータス>):
      スクリプトの正常終了を表します。
    • 失敗:
      アサーション例外によるスクリプト実行の失敗を表します。
    • 異常終了(<終了ステータス>):
      スクリプトの異常終了を表します。
    • ビルドエラー:
      スクリプトのビルドエラーを表します。
    • 終了ステータスについては、「終了ステータス」を参照してください。
    • スクリプト呼び出し処理の呼び出し先スクリプトでアサーション例外になった場合の実行結果は、「異常終了」になります。
    種別を指定する テストスクリプトを一括実行する際の「種別」を指定するかどうかを選択します。
    • [チェックあり]:
      種別を指定します。
    • [チェックなし]:(デフォルト)
      種別を指定しません。
     
    実行時の種別指定 テストスクリプトを一括実行する際の種別を選択または入力します。
    • [種別を指定する][チェックあり]にした場合、有効になります。
    • デフォルト値は「テスト用」です。
    • ユーザ指定の種別はプルダウンメニューには表示されません。入力フィールドに直接入力してください。
      詳細については、「ユーザ指定の種別」を参照してください。
    指定種別が見つからない場合にデフォルト種別を使用 テストスクリプトを一括実行する際に、指定された種別のグローバルリソースが見つからない場合の動作を選択します。
    • [チェックあり]:
      デフォルト種別を使用します。
    • [チェックなし]:(デフォルト)
      「PoolNotDefinedException」エラーを発生させます。
    • [種別を指定する][チェックあり]にした場合、有効になります。
    実行 [実行対象][チェックあり]のスクリプトを一括実行します。
    • スクリプト一覧のテストスクリプトを上から下に直列で実行します。
    停止 一括実行を停止します。
    • スクリプトの停止に時間がかかる場合があります。
    • 一括実行を途中で停止した場合、テスト結果レポートには停止したスクリプトまでの結果が出力されます。

  3. [実行]ボタンを押下して、スクリプトを一括実行します。

  4. 実行が完了すると、ダイアログにテスト結果レポートの情報が表示されます。


  5. テスト結果レポートの内容を確認し、必要に応じてプロダクションスクリプトまたはテストスクリプトの改修を行います。

スクリプトの一括実行について

スクリプトの一括実行の特長は、テストプロジェクトをサービス登録することなく、テストプロジェクト単位でテストスクリプトをまとめて一括で実行し、テスト結果レポートを出力できるということです。
一括実行はデザイナからのみ使用可能です。
テスト結果レポートはスクリプトの一括実行時のみ出力されます。

テスト結果レポートの確認

スクリプトの一括実行で出力されたテスト結果レポートを確認します。
テスト結果レポートはDataSpiderファイルシステムの「/testreport」下に出力されます。ファイル名は「<yyyyMMdd_HHmmssSSS>_<プロジェクト名>.xlsx」となります。
テスト結果レポートは自動で削除されません。ディスク容量を圧迫してしまうことがあるため、定期的に削除することをお勧めします。

テスト結果レポートに出力される情報は以下の通りです。
項目の説明
項目名 説明 備考
プロジェクト 一括実行したプロジェクト名が出力されます。  
スクリプト 一括実行したスクリプト名が出力されます。  
結果 スクリプトの実行結果が出力されます。
  • Success:
    スクリプトの正常終了を表します。
  • Failure:
    アサーション例外によるスクリプト実行の失敗を表します。
  • Error:
    スクリプトの異常終了を表します。
  • Build Error:
    スクリプトのビルドエラーを表します。
  • スクリプト呼び出し処理の呼び出し先スクリプトでアサーション例外になった場合の実行結果は、「Error」になります。
メッセージコード 実行結果が「Failure」または「Error」の場合、メッセージコードを出力します。  
エラーメッセージ 実行結果が「Failure」または「Error」の場合、エラーメッセージを出力します。  
実行ID スクリプトの実行IDが出力されます。  
終了ステータス スクリプトの終了ステータスが出力されます。  
実行時間(秒) スクリプトの実行時間が秒単位で出力されます。  

テスト結果レポートの出力について

テスト結果レポートは、そのままテストフェーズの検証結果(エビデンス)として使用することを想定しています。

テストパターン

テストスクリプトの役割は、プロダクションスクリプトが想定通りに動作するかを確認することです。そのための支援機能として、テスティングフレームワークでは「アサーションアダプタ」を用意しています。
本項では、アサーションアダプタを使用したテストスクリプトの作成方法について、いくつかのパターンに分けて説明します。

ファイルのテストパターン

二つのファイルを比較し、内容が一致しているかを確認するというパターンです。
本パターンの前提は以下の通りです。 ファイル比較処理の設定項目はとてもシンプルで、ダウンロードしたファイル(比較元ファイル)と、あらかじめ用意しておいた期待する内容のファイル(比較先ファイル)をそれぞれ指定するだけです。
ファイル比較処理のプロパティ設定ダイアログ


テストスクリプトも、プロダクションスクリプトでファイルをダウンロードし、ダウンロードしたファイルが期待するファイルと一致しているかを確認するというシンプルな内容となります。
テストスクリプトのイメージ

テーブルモデル型データのテストパターン

テーブルモデル型のデータを比較し、内容が一致しているかを確認するというパターンです。
本パターンの前提は以下の通りです。 テーブルモデル比較処理はテーブルモデル型コンポーネントの結果データを直接入力データに指定できるため、アサートするために一時的にファイルに書き出す必要がありません。

Excelファイルには三つのカラムがあるとします。

ID日付数字
ID0012017-01-01500
ID053A2017-02-021200

テストスクリプトのイメージ

単純一致できる場合

Excelファイルの内容に可変な値が入っていない場合には、CSVファイルとの比較を行います。
期待値CSVファイルの内容
ID001,2017-01-01,500
ID053A,2017-02-02,1200
テーブルモデル比較処理のプロパティ設定ダイアログ

単純一致できない場合

ID列の値は「ID」から始まる任意の文字列で、「ID」以降の値は自動的に生成されるため予測できない可変な値が入るという場合には、「ID」 という文字列と前方一致する設定を行います。このように、列ごとの比較条件を細かく定義するといった、より高度なアサーションの設定も可能です。
期待値CSVファイルの内容
ID,2017-01-01,500
ID,2017-02-02,1200
テーブルモデル比較処理のプロパティ設定ダイアログ


比較条件の詳細については、「テーブルモデル比較処理」を参照してください。

変数のテストパターン

作成されたファイル数が、期待値と一致しているかを確認するというパターンです。
本パターンの前提は以下の通りです。 ファイル数はファイル一覧取得処理のコンポーネント変数から取得可能ですので、ここではコンポーネント変数やスクリプト変数の値を比較できる変数比較処理を使用します。
テストスクリプトのイメージ


プロダクションスクリプトの実行前に出力先ディレクトリ下のファイルをあらかじめ削除しておくことで、ほかのテストの影響を受けないようにします。
変数比較処理のプロパティ設定ダイアログ


変数比較処理では、ファイル一覧取得処理のコンポーネント変数からファイル数が「1」を、ディレクトリ数は「0」を期待するように設定します。
プロダクションスクリプトが何らかの要因でファイルを作成しなかった場合、ファイル数は「0」になるためアサーション例外が発生します。

異常系のテストパターン

フローが分岐する際に複数のアサーションを使用して、それぞれのフローの到達状況を確認するというパターンです。
本パターンの前提は以下の通りです。 アサーション例外処理は、異常系のエラーチェックなどでフロー上到達してはいけない場所のアサーションを行うことができます。
テストスクリプトのイメージ


プロダクションスクリプトが正常終了した場合、アサーション例外処理でアサーション例外が発生します。
アサーション例外処理の[メッセージ]に適切なメッセージを設定しておくことで、エラー発生時の状況が分かりやすくなります。
アサーション例外処理のプロパティ設定ダイアログ

仕様制限