第10章 テスト


10.1. テストシナリオ

テストシナリオは、開発者によるルール、モデル、イベントの機能検証を可能にする強力な機能です。テストシナリオは、ナレッジベースのデプロイおよび実稼働環境への実装前のテスト機能を提供します。

テストシナリオは、1 度に 1 回またはグループ単位で実行できます。グループの実行では、1 つのパッケージのすべてのシナリオが対象になります。テストシナリオは独立したものであり、1 つのシナリオが他のシナリオを変更したり、影響を与えたりすることはありません。

すべてのテストシナリオの実行後に、レポートパネルが表示されます。これには、実行されたテストシナリオについての成功または失敗を示すメッセージが含まれます。

図10.1 テストシナリオ画面

10.2. テストシナリオの作成

テストシナリオの作成には、ファクトまたはプロジェクトモデルのインスタンスと同様の条件のデータを指定する必要があります。テストシナリオは所定のルールセットに対応付けられ、予想される結果が実際の結果に対応付けられる場合は、テストシナリオはパスしたものと見なされます。

新規テストシナリオの作成

  1. Business Central で、Authoring Project Authoring をクリックして Projects ビューを開きます。
  2. テストシナリオのプロジェクトを選択します。
  3. New Item Test Scenario をクリックします。
  4. 名前を入力し、パッケージを選択して OK をクリックします。
  5. テストシナリオの編集画面が表示されます。

    5594

テストシナリオのモデルのインポート

同じパッケージのデータオブジェクトはデフォルトで利用可能になります。たとえば、パッケージ構造 org.company.project については、以下が該当します。

  • パッケージ org.company のデータオブジェクト Fact1
  • パッケージ org.company.projectFact2

org.company でテストシナリオを作成する場合、org.company.Fact1 は利用可能ですが、org.company.Fact2 をインポートする必要があります。データオブジェクトをインポートするには、以下を実行します。

  1. テストシナリオを開きます。
  2. Data Objects タブをクリックします。
  3. New Item をクリックし、インポートを選択して Ok をクリックします。インポートはプロジェクトのデータモデルに固有な場合もあれば、String または Double オブジェクトなどのように汎用的なものである場合もあります。

テストシナリオファクトの指定

  1. データオブジェクトのインポート後に、Editor タブをクリックします。最低でも、GIVEN および EXPECT などの 2 つのセクションで入力が必要になります。

    • GIVEN: テストの入力ファクトです。
    • EXPECT: 入力ファクトに基づいて予想される結果です。

      入力パラメーターを 仮定した場合 (GIVEN)、これらのルールが有効にされるか、または実行されることが 予想されます (EXPECT)。また、ファクトが表示され、特定フィールドの値を持つことを 予想 できる場合や、ルールが全く実行されないことを 予想 できる場合もあります。

      予想される内容が一致する場合、テストシナリオはパスし、ルールが正しいとされます。そうでない場合にテストは失敗します。

仮定 (Given) ファクトの指定

  1. 新規ファクトを追加するには、GIVEN ラベルの横にある 5686 をクリックします。Data Objects タブでインポートしたデータモデルに基づいて、ファクトデータを New Input ダイアログウィンドウに指定します。

    6210

    ウィンドウ内で、モデルから特定のデータオブジェクトを選択し、これに Fact Name という変数名を付けるか、または代わりにルールフローグループのアクティブ化を選択することもできます。ルールフローグループをアクティブにすると、事前にグループをアクティブして指定されたルールフローグループのルールをテストすることができます。仮定されるファクトを追加し、ルールフローグループをアクティブ化するには、以下を実行します。

    1. 仮定ファクトを追加します。
    2. 5686 を再度クリックして、ルールフローグループのアクティブ化を追加します。
  2. オプションで、挿入するオブジェクトに制限を追加します。

    1. Add a field をクリックしてオブジェクトのプロパティーを選択します。

    2. プロパティーの横にある 6191 をクリックします。

      • プロパティータイプが別のファクトオブジェクトの場合は、Create a new fact をクリックします。
      • または、Literal value をクリックします。

        詳細は、「追加のテストシナリオ機能」 を参照してください。

    3. 値を指定します。以下は例になります。

      上記の例は、以下に相当します。

      Customer fact1 = new Customer();
      fact1.setHasInternetService(true);
      insert(fact1);
      Copy to Clipboard Toggle word wrap

予想されるルールの指定

  1. GIVEN 条件に問題がなければ、実行されるルール、作成されるファクト、または変更された既存ファクトのフィールド値を予想できます。EXPECT ラベルの横にある 5686 をクリックして予想される結果の追加を開始します。

    5611

  2. Given セクションで作成されたデータのセットに基づいて、3 つの予想される内容のいずれかを指定できます。

    • Rule: 特定ルールの実行についてチェックできます。実行が予想されるルールの名前を入力するか、またはルールの一覧からこれを選択します。終了したら、OK をクリックします。
    • Fact value: 特定のオブジェクトインスタンスおよびその値をチェックできます。以下の例では、顧客オブジェクトで hasInternetService ブール値が true に設定されている場合に、同じオブジェクトの hasPhoneService ブール値が true に設定されることが予想されます。

    • Any fact that matches: 作業メモリーのオブジェクトおよびそれらのフィールドの値をチェックできます。以下の例では、インターネットサービスを有する顧客オブジェクトの場合、新規オブジェクトの RecurringPayment が amount フィールドが 5 にされた作業メモリーに挿入されることが予想されます。

シナリオの確認、保存および実行

  1. 右上にある Save をクリックしてシナリオを保存します。シナリオは定期的に保存し、確認するようにしてください。
  2. 右上の Run scenario をクリックしてテストを実行します。結果は、この画面下の Reporting という新規パネルに表示されます。

  3. 1 つのファイルに複数のテストを作成した場合、すべてのテストを順番に実行できます。これを実行するには、Run all scenarios をクリックします。
  4. Audit log: では、挿入されたファクトおよび実行されたルールについての通知が表示されることにも留意してください。

10.3. 追加のテストシナリオ機能

前述のテストシナリオ機能に加えて、テストシナリオにはその他のさまざまな機能が含まれます。

メソッドの呼び出し

  1. Call Method により、ルールの実行開始時に既存ファクトでメソッドを呼び出すことができます。この機能には、CALL METHOD ラベルの横にある 6176 をクリックしてアクセスできます。

    図10.2 メソッドの呼び出し

  2. ドロップダウンリストから既存ファクトを選択した後に、Add をクリックします。緑の矢印ボタン 6187 を使って、ファクトに対してメソッドを呼び出すことができます。

    図10.3 メソッドの呼び出し

テストシナリオでのグローバル (Global) の使用

グローバル (Global) は、ルールエンジンに表示される名前付きオブジェクトですが、ファクトのオブジェクトとは異なります。そのため、グローバルのオブジェクトの変更によってルールの再評価はトリガーされません。テストシナリオでグローバルフィールドを使用し、検証することができます。

テストシナリオでグローバル変数を利用可能にするには、以下を実行します。

  1. New Item Global Variable(s) をクリックしてグローバル定義を作成します。
  2. グローバル変数の名前およびタイプを定義します。
  3. オブジェクトタイプをテストにインポートします。グローバル変数のタイプをインポートしない場合、変数はテストで利用可能になりません。

新規グローバルの追加

  1. (globals) ラベルの横にある 6176 をクリックしてグローバルを追加し、Add をクリックします。

フィールドに制限を追加することは、フィールドや制限を Given セクションに追加することに似ています。詳細は、仮定 (Given) ファクトの指定 を参照してください。

ルールの設定

  1. (configuration) ラベルを使用すると、以下のオプションを指定してルールの実行についての追加の制約を設定することができます。

    • Allow these rules to fire: 実行を許可するルールを選択できます。
    • Prevent these rules from firing: テストシナリオで一部のルールが実行されないようにできます。
    • All rules may fire: 特定のテストですべてのルールの実行を許可します。

    図10.4 設定

  2. 以下のいずれかを選択します。

    • Allow these rules to fire:
    • Prevent these rules from firing:

      ルールを空のフィールドに入力します。空のフィールドの横にある 6176 をクリックして、条件の影響を受けるルールを選択します。

      図10.5 ルールの選択

  3. ドロップダウンリストからルールを選択し、OK をクリックします。選択されたルールが、ルール設定オプションの横にあるフィールドに表示されます。

日付と時刻の設定

  1. Use real date and time オプションは、テストシナリオの実行時に実際の時間を使用します。

    図10.6 実際の日時

  2. Use a simulated date and time オプションでは、テストシナリオに関連した年、月、日、時間、分を指定することができます。

    図10.7 タイトル

詳細のファクトデータ

  1. フィールドを、作成されたファクトの一部として編集可能なプロパティーに指定した後に、 6191 をクリックして Field value ダイアログを開きます。リテラル値を編集するか、または詳細なファクトデータを指定することができます。

    図10.8 詳細オプション

  2. Advanced Options…​ セクションでは、作成されるファクトや特定のテストシナリオで使用されるモデルオブジェクトに基づいて以下のいずれかを選択できます。

    • Bound variable: フィールドの値を、選択された変数にバインドされたファクトに設定します。フィールドタイプは、バインドされた変数タイプに一致している必要があります。
    • Create new fact: 新規ファクトを作成し、これを親ファクトのフィールド値として割り当てることができます。各種フィールド値のドロップダウンで指定されるフィールド値として割り当てられるファクトをクリックします。これらの値には、詳細なフィールド値が指定される場合があります。

その他のセクションの追加

  • Editor タブを使って、GIVENCCALL METHOD、 and EXPECT セクションをシナリオに追加できます。これを実行するには、EXPECT セクションの下にある More をクリックします。これにより、 6209 をクリックして削除できる 3 つのすべのセクションを含むブロックが開かれます。

既存ファクトの変更または削除

1 つのファイルに複数のテストを作成する場合、以前のテストで挿入されたファクトを削除することが推奨されます。新規の GIVEN ファクトを挿入する際には、以下のフィールドに留意してください。

  • Modify an existing fact: ナレッジベースの実行間でファクトを編集できます。
  • Delete an existing fact: 実行間でファクトを削除できます。

    図10.9 既存ファクトの変更および削除

トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat