単体テスト
単体テストの実行
アプリケーションのルール設定が誤っていると、ケース処理に遅れが生じることがあります。 エラーが発生した場合、エンドユーザーへの仕事の再割り当てや、管理者によるケースの修正が必要になることもあります。 たとえば、フルフィルメント部門にルーティングする必要があるケースについて考えてみましょう。 そのケースが代わりに経理部門にルーティングされると、経理担当者がフルフィルメントにルーティングし直す必要があります。 経理担当者は仕事の再ルーティングに時間を費やし、フルフィルメント部門は待機することになります。 その結果、ケースの再割り当て中に顧客に対して遅れが発生します。
アサインメントの誤ったルーティングなどの設定エラーを防ぐには、デベロッパーがアプリケーションをテストします。 アプリケーションテストの最も基本的な形式は、個々のルールの単体テストです。 単体テストは、最小単位の機能の品質テストを可能にし、継続的なアプリケーションデリバリーをサポートします。 Pegaアプリケーションの場合、最小単位は個々のルールです。 単体テストの目的は、アプリケーションの各要素(たとえば、デシジョンテーブルやレポートディフィニッションなど)が想定通りに機能するかどうかを検証することです。 あるルールの設定エラーがアプリケーション内の別のルールに影響を及ぼすと、ケース処理に大幅な遅れが生じますが、単体テストを行うことでそのようなリスクを軽減できます。
単体テストを使って、設定エラーを削減してください。 たとえば、プロパティを評価するデシジョンツリーについて考えてみましょう。 次の図に示すように、アプリケーションでレポートディフィニッションをソースとするデータページからプロパティが読み取られます。 個々のルールを設定するときにそれらのルールを単体テストすると、それぞれのルールが想定通りに機能することがわかります。 デシジョンツリーが誤った結果を返す場合、データページに正しいデータが含まれていれば、そのエラーをデシジョンツリーに分離できます。
次の問題に答えて、理解度をチェックしましょう。
アプリケーションルールの単体テスト
ルールの単体テストを正しく行うために、次のタスクを実行します。
- ルールフォームから「Run Rule」ウィンドウを開きます。
- テストデータでルールを初期化します。
- ルールによって返された結果を確認します。
ルールフォームから「Run Rule」ウィンドウを開く
ルールの単体テストを実行するには、ルールフォームを開き、ルールを実行します。 バイナリファイルのルールなど、ルールタイプによっては、Pega Platformで単体テストのオプションが表示されません。 ルールの単体テストを実行できない場合、「Run」オプションは使用できません。
「Run Rule」ウィンドウの外観
「Run Rule」ウィンドウの外観は、テストするルールのタイプによって変わります。 たとえば、データページルールとwhenルールでは、クリップボードの外観を模したダイアログボックスを使用します。 特定のタイプのルールの単体テストについて詳しくは、コミュニティ記事「Unit testing individual rules」を参照してください。
メモリー内のデータに対してルールを実行する場合は、Pega Platformで「Run Rule」ウィンドウが表示されます。 たとえば、デクレアエクスプレッション、デシジョンルール、UIルールをメモリー内のデータに対して実行する場合は、Pega Platformで「Run Rule」ウィンドウが表示されます。
レポートディフィニッションは、メモリーではなくデータベーステーブルのコンテンツに対して実行します。 そのため、レポートディフィニッションを実行する場合は、Pega Platformでは「Run Rule」ウィンドウが表示されず、レポートデータが返されます。
テストデータによるルールの初期化
「Run Rule」ウィンドウで、ルールの単体テストに使うデータのテストページを指定します。 「Run Rule」ウィンドウは、クリップボード上にテストページを作成します。 テストページの名前は、ルールのApplies Toクラスと同じ名前でtemp_というプレフィックスが付きます。 そうすると、メモリー内の他のページからテストデータを分離できます。
ルールの単体テストを行うときに、テストページのデータを入力する方法を決定します。 「Run Rule」ウィンドウには、テストページにデータを追加するためのオプションが複数あり、テストするルールのタイプによってそれらのオプションは異なります。
通常は、データトランスフォームを使ってテストデータのページを作成できます。 ega Platformではデフォルトで、pyDefaultデータトランスフォームが適用され、テストページにデータが入力されます。 別のデータトランスフォームを選択して適用することもできます。 たとえば、デシジョンテーブルの単体テストを実行するには、ルールの実行時に値を手動入力するのではなく、そのテーブルによって評価されるプロパティの値を指定するデータトランスフォームを作成します。
すでにクリップボード上にある適切なクラスのページをコピーすることもできます。 たとえば、ケースタイプで使用するデシジョンテーブルをテストするには、ケースを作成して、データをpyWorkPageからコピーします。
ルールが返した結果の確認
テストページにデータを入力する方法を選択した後、ページをリセットするとページにデータが挿入され、ルールを実行すると結果が返されます。
ヒント: 「Reset Page」をクリックすると、前回のテストの結果がクリアされます。
ルールが入力を受け入れる場合は、テストする値を入力できます。 入力した値によってテストページの値が上書きされます。 たとえば、次の画像に示すようなToEmployeeReferralWBデシジョンテーブルについて考えてみます。 デシジョンテーブルによってアサインメントのルーティングワークキューが決まります。 プロパティ「Referred by employee」の値がtrueの場合、アプリケーションはアサインメントをReferralWBワークキューにルーティングします。
デシジョンテーブルやデシジョンツリーの場合は、それぞれの入力プロパティに値を割り当ててから再び実行すると、デシジョンテーブルやデシジョンツリーの結果が表示されます。 次の画像は、.ReferredByEmployeeがtrueに設定されている場合のテスト結果を示しています。
単体テストの結果は、Clipboardツールを使ってテスト出力を表示する方法でも確認できます。 「Run Rule」ウィンドウは、クリップボード上に複数のページを生成します。 これらのページは、ルールのテストに関する情報を提供します。
RuleToRun | テストしたルールがクリップボードに表示されます。 アプリケーション内に複数のバージョンのルールが存在する場合は、このページで、テストしたルールのバージョンを確認できます。 |
temp_page |
ルールをテストするときに作成またはコピーされます。 これらのページの名前は「temp_」で始まります。 単体テスト用にルールを初期化するために使用したデータを確認するには、このページを表示します。 |
次の問題に答えて、理解度をチェックしましょう。
次の問題に答えて、理解度をチェックしましょう。
自動テスト用の単体テストの記録
ルールの単体テストが成功したら、実行したテストを変換し、テスト結果に基づくテストケースを作成できます。 テストケースは、ルールが想定通りの結果を返すかどうかを判定するために使う、1つまたは複数のテスト可能な条件を特定します。 再利用可能なテストケースを作成すると、継続的デリバリーモデルに対応でき、新しいルールや変更されたルールの影響を確認するためにルールを繰り返しテストする手段となります。
保存されている単体テストをルールから実行することも、PegaUnitテストファシリティを使って単体テストを自動的に実行させることもできます。
テストケースを作成するには、「Run Rule」ウィンドウでテストを変換します。 単体テストが成功したことを示す、想定される結果を定義します。 想定される結果はそれぞれ、テスト対象の1つまたは複数の条件を記述するアサーションで構成されます。 テストケースは、ルール実行のさまざまな側面をテストするように設計された複数のタイプのアサーションに対応しています。 テストケースで使用できるアサーションは、テストしたルールのタイプによって異なります。
サポートされるアサーションのタイプとその用途の詳細な説明については、コミュニティ記事「Defining expected test results with assertions」を参照してください。
アサーションとその用途の例を次の表に示します。
評価タイプ | 利用目的 | 例 |
---|---|---|
プロパティ | 指定されたプロパティの値をテストします。 プロパティが定義されているページ、比較演算、比較する値が必要です。 | pxUrgencyWorkが10と等しい |
デシジョンの結果 | デシジョンルールによって返される値をテストします。 デシジョンルールで想定される結果が返されるために必要な各入力プロパティの値が必要です。 | 「Referred by employee」が「false」の場合、「RecruitingWB」を返す |
想定される実行時間 | ルールが許容時間内に実行されるかどうかをテストします。 比較演算と許容時間(秒)が必要です。 | 想定される実行時間は3秒以内である |
ページ | メモリー内でページの存在をテストします。 ページの名前と比較演算が必要です。 | ページ「D_CoursesList」にエラーがない |
想定される結果のセットを作成したら、テストケースの設定を保存します。 保存したテストケースには、ルールからアクセスできます。 ルールについて記録したすべてのテストケースと、各テストケースの最終実行時のステータスがリストに表示されます。
テストケースを再度実行し、失敗した場合は、結果を表示して、想定される結果を返さなかったアサーションを個別に特定します。 テストケースで想定される結果が返された場合は、緑色の「Passed」ステータスボタンが表示されます。
次の問題に答えて、理解度をチェックしましょう。
単体テストの設定に関するベストプラクティス
テストケースの保存
テストケースを保存するには、テストケースの格納用に設定されているルールセットへのアクセス権が必要です。 選択したルールセットがテストケースの格納用に設定されていない場合は、Pega Platformからエラーが返されます。 単体テストを記録する前に、システム管理者と連携して、テストケースを格納する適切なルールセットを確認してください。
テストケースは保守およびパッケージング用の専用のテストルールセットに保存します。 設定を簡単にするために、開発したアプリケーション上に構築されたアプリケーションを使って、テストケース専用に設計されたルールセットを含めてください。 開発したアプリケーションを本番環境にリリースする際は、テストケースを含めずにアプリケーションを移行できます。
テストケースの実行
Dev Studioの「Unit testing」ランディングページには、アプリケーションに定義されているすべてのテストケースと、各テストケースの最終実行時のステータスがリスト表示されます。 ランディングページでは、関連する1つまたは複数のテストケースから構成されるテストスイートも作成できます。 Pegaの単体テストスイートを使って、複数のテストケースを指定した順序で実行できます。
ヒント: Configure メニューでApplication > Quality > Automated Testing > Unit Testing を選択すると、ランディングページにアクセスできます。
次の問題に答えて、理解度をチェックしましょう。
このトピックは、下記のモジュールにも含まれています。
- ルールの単体テスト v1
If you are having problems with your training, please review the Pega Academy Support FAQs.