Designerのルールをテストする方法について説明します。Rules関数の作成により、ルールおよびデシジョン表をテストする方法についても説明します。Controlコンソールを使用した実行時のテスト方法についても説明します。この章の項目は、次のとおりです。Rulesには、複雑な入力パラメータを使用したルールのテストが可能な、テスト・フレームワークが用意されています。このフレームワークにより、設計時にルールをテストすることが可能になり、用件に応じたルールの検証または改良ができます。ルールをテストする別の方法はテスト関数を定義することで、これにより入力の作成、ルールの実行、出力の検証ができます。入力の作成や出力の検証がプログラムで行われるため、テスト関数は通常、単純テストで使用され、テスト・フレームワークは総合的なテストで使用されます。このテスト関数は、パラメータを使用せずにブール値のみを戻す関数に対してのみアクティブです。Rulesには、デフォルトの機能が用意されており、特定の一連の入力を行って、定義したルールが正常に動作するかどうかを設計時にテストできます。提供されているテストの粒度は、デシジョン関数レベルです。デシジョン関数をディクショナリに定義する場合、テスト・スイートを定義して、各デシジョン関数に対してそのテスト・スイートを実行できます。Rulesでは、Javaファクト、XMLファクト、RLファクトおよびADF-BCファクトといった複数タイプのファクトがサポートされています。現在、テスト・フレームワークでは、XMLファクトのみがサポートされています。そのため、定義したデシジョン関数に、XML以外のファクトを参照する入力または出力が存在する場合、そのデシジョン関数をテストするためにテスト・フレームワークを使用することはできません。XML以外のファクトを使用すると、そのデシジョン関数に対してテスト機能が使用できないことを示す、警告メッセージまたはエラー・メッセージが表示されます。ルールをテストするには、デシジョン関数を前提条件として作成する必要があります。JDeveloperを開きます。Rules」の下の「BaseDictionary.rules」を開きます。「ディクショナリ」セクションで、「デシジョン関数」をクリックしてデシジョン関数のリストを開きます。「デシジョン関数」セクションで、「作成」アイコン(プラス記号)をクリックして「デシジョン関数の編集」ダイアログ・ボックスを表示します。「名前」フィールドに、TestDF.などのデシジョン関数の名前を入力します。「入力」タブの「名前」の下に、入力名を入力して[Enter]を押します。この例では、songsと入力します。「ファクト・タイプ」リストからファクト・タイプを選択します。XMLファクトを選択してください。この例では、ファクト・タイプとして「Song」を選択します。同様に、artistsという名前の別の入力変数とArtistというファクト・タイプが追加されています。必要に応じて、「ツリー」または「リスト」を選択します。ツリー・モードまたはリスト・モードのルールの詳細は、第6.2.1項「デシジョン関数の追加または編集方法」を参照してください。「出力」タブの「名前」の下に、出力名を入力して[Enter]を押します。この例では、songsと入力します。「ファクト・タイプ」リストからファクト・タイプを選択します。XMLファクトを選択してください。この例では、「Song」を選択します。「ルールセットおよびデシジョン関数」で、「使用可能」ボックスから起動するルールセットを選択し、シャトル(>)アイコンを使用して、「選択済」ボックスに移動します。この例では、「SongArtistRules」が選択済になっています。注意:この例では、サンプル・スキーマと対応するファクトを使用します。「OK」をクリックして、デシジョン関数を作成します。図8-1に、「デシジョン関数の編集」ダイアログ・ボックスを示します。「デシジョン関数の編集」ダイアログ」の説明デシジョン関数を作成すると、デシジョン関数のテストに役立つ、2つのXMLスキーマ(xsdファイル)が自動的に生成されます。これらのスキーマには、それぞれ_TestSuite、_Typesという接尾辞が付けられています。これらのスキーマは図8-2に示すように、アプリケーション・ナビゲータに表示されている「testsuites」フォルダの下の「xsd」フォルダに格納されています。_TestSuiteという接尾辞の付いたスキーマに基づき、デシジョン関数用に作成されるテスト・スイートを定義する必要があります。生成されたスキーマ・ファイルは、次のネーミング規則に従います。このファイルには、デシジョン関数用のテスト・スイート・スキーマが含まれます。このデシジョン関数用に作成されたテスト・スイートは、このスキーマに準拠する必要があります。次に、TestSuite.xsdファイルのサンプルを示します。</complexType></schema>前述のサンプルで示したように、スキーマにはマスターのtestSuite要素が含まれており、さらにその下にdecisionFunctionという要素が含まれ、ここにこのテスト・スイートが対応するデシジョン関数が定義されます。testSuite要素にはまた、1つ以上のtestCase要素も含まれます。各testCaseには、testInput要素およびexpectedOutput要素と名前が含まれます。testInput値は、テスト・ケースへの入力として使用される値で、expectedOutput値は、それと実際の出力が照合される値です。testInputおよびexpectedOutputのタイプ(それぞれparameterListおよびresultList)は、この次のXSDに定義されています。このスキーマには、parameterListとresultListの、2つのcomplexType要素が含まれます。これら2つのタイプはTestSuiteスキーマで使用されますが、ここに定義されています。parameterListタイプはデシジョン関数の入力に対応し、resultListタイプはデシジョン関数の出力に対応します。これは、デシジョン関数には固有の入力および出力があるからです。デシジョン関数用にテスト・ケースを記述する場合、テスト・ケースの入力はデシジョン関数により受け取られる入力に対応する必要があり、予期される出力がデシジョン関数の出力に対応する必要があります。paramaterListとresultListは別々のcomplexTypeです。デシジョン関数が10個の入力と5個の出力を必要とする場合、parameterListタイプはデシジョン関数の入力として用意する必要がある10の異なる要素を一括して定義する、1つのComplexTypeになります。次に、Types.xsdのサンプルを示します。</complexType></schema>デシジョン関数の更新があるたびに、対応する2つのスキーマも更新されます。デシジョン関数の名前を変更すると、関連するスキーマの名前が変更されます。デシジョン関数を削除すると、対応するスキーマも削除されます。デシジョン関数の入力および出力への変更であっても、関連するスキーマに変更が生じます。このように、デシジョン関数とそれに対応するテスト・スキーマは常に同期されます。デシジョン関数に何か変更を加えた場合、たとえばデシジョン関数を削除した場合は、通常、スキーマも削除されます。ディクショナリのツールバーにある「元に戻す」アイコンをクリックすると、デシジョン関数が回復されます。対応するスキーマは削除されたままです。その場合は、デシジョン関数用のスキーマを手動で再生成する必要があります。このように、元に戻す操作とやり直し操作では、デシジョン関数とそれに対応するテスト・スキーマ間の同期は、サポートされていません。次のように手動でスキーマを再生成します。図8-3に示すように、ディクショナリのツールバーにある「すべてのデシジョン関数のテスト・スイート・スキーマを生成」アイコンをクリックします。テスト・スイート・スキーマの手動での再生成テスト・スイート・スキーマを再生成するためアイコンをクリックすると、一括で再生成アクティビティが行われ、ディクショナリに存在するすべての利用可能なデシジョン関数に関連するすべてのテスト・スイート・スキーマが再生成されます。スキーマがすでに存在している場合は、上書きされます。このアクティビティは、特に次のような場合に使用されます。これにより、デシジョン関数と関連するスキーマは同期しなくなります。これらを同期させるには、このオプションを使用してスキーマを再生成し、デシジョン関数に対応するようにします。多数のデシジョン関数が定義された、以前のリリースのディクショナリをすでに持っており、これらのデシジョン関数用のテスト・スイートを定義する機能をテストするルールを使用してテストする状況を考えてみます。この場合は、移行後にエディタ・ウィンドウで各デシジョン関数を開いてから、「OK」ボタンをクリックする必要があります。これにより、対応するテスト・スイート・スキーマが生成されます。これではデシジョン関数が数百個存在する場合、時間が掛かり過ぎます。この場合、スキーマを再生成するオプションを使用すれば一括で生成が可能です。注意:移行したデシジョン関数の入力および出力としてXMLファクトを必ず含むようにしてください。しないと、テスト・スイート・スキーマ・ファイルに定義される入力および出力が空になります。ルールのテストルールをテストするためのデシジョン関数を一度作成すると、ルールをテストできます。ルールをテストする手順は、次のとおりです。デシジョン関数名を選択します。この場合は、たとえば「TestDF」を「ディクショナリ」ページで選択してから「テスト」ボタンをクリックし、「デシジョン関数テスト」ダイアログ・ボックスを表示します。「作成」アイコン(プラス記号)をクリックして「テスト・スイートの作成」ダイアログ・ボックスを表示します。図8-4に示すように、テスト・スイートの名前、たとえばTestDFTestSuite1を入力し、「OK」をクリックします。「デシジョン関数テスト」ダイアログ・ボックスの「閉じる」をクリックします。テスト・スイートを作成すると、<テスト・スイート名>.xmlファイルが自動的に生成され、「testsuites」フォルダ内の「rules」フォルダの下の「<ベース・ディクショナリ名>」フォルダに格納されます。このファイルは、「アプリケーション・ナビゲータ」ウィンドウで表示できます。テスト・スイートを作成するたびに、対応するXMLファイルが生成されます。新規に作成されたテスト・スイート・ファイルは空で、テスト・ケース、入力定義または出力定義はまったく含まれていません。XSD)に準拠した、必要なテスト・ケースを記述します。次に、テスト・ケースを含むテスト・スイート・ファイルのサンプルを示します。</testCase></testSuite>テスト・スイート・ファイルを保存します。「ディクショナリ」ページを開きます。デシジョン関数名(たとえば「TestDF」)を選択してから、「テスト」ボタンをクリックし、「デシジョン関数テスト」ダイアログ・ボックスを表示します。図8-5に示すように、「テスト・スイート」リストから「TestDFTestSuite1」を選択し、「テストの実行」をクリックします。テストの実行」の説明テスト・スイート・ファイル内のすべてのテスト・ケースが実行されます。デシジョン関数のテストの詳細は、表形式で確認できます。詳細には、テスト・スイート名、全部の結果、および次のようなテスト・ケースの詳細が含まれます。図8-6に、テスト結果を示します。「結果」ページの「コメント」セクションには、テスト・ケースが失敗した場合、すべてのエラーの詳細を表示します。テスト・スイートの検証に関する必須情報テスト・スイートXMLファイルが、テスト・スイートXSDファイルに準拠していないという問題が発生することがあります。この場合、「デシジョン関数テスト」ウィンドウを開くと、「テスト・スイート」リスト内のテスト・スイート名のすぐ横に、図8-7に示すように黄色い警告の三角形が表示されます。誤りを含むテスト・スイートを実行しようとすると、次のエラー・メッセージが表示されます。画像rules_test_error.gifの説明テスト・スイートXMLファイルが不完全な形式の場合、「デシジョン関数テスト」ウィンドウのテスト・スイートのリストに、テスト・スイート名は表示されません。無効なディクショナリでは、デシジョン関数をテストすると次のエラー・メッセージが表示されます。ディクショナリが無効です。検証エラーを修正して再試行してください。リンク先ディクショナリのテストに関する必須情報ベース・ディクショナリとカスタム・ディクショナリが存在する状況を考えてみます。カスタム・ディクショナリには、ベース・ディクショナリへのリンクが含まれています。ここで、カスタム・ディクショナリの「デシジョン関数」セクションにナビゲートします。カスタム・ディクショナリのデシジョン関数のリストには、リンク先のベース・ディクショナリのデシジョン関数が含まれることに注意してください。ベース・ディクショナリのデシジョン関数は、カスタム・ディクショナリからテストできます。テスト・スイートの失敗に関する必須情報テスト・ケースが失敗した場合、「結果」ページの「コメント」セクションには、考えられる失敗の理由が表示されます。テスト・ケースは次の理由により、失敗する場合があります。次のように、テスト・ケース用に指定した予期される出力が、実際の出力と異なっている。「コメント」セクションは、予期される出力と実際の出力の間に明らかな不一致があることを示しています。次のように、テスト・ケースは実行されたが、出力が生成されなかった。「コメント」セクションには、テストが結果を生成しなかったことと、考えられる原因についてのより詳細な情報が表示されています。次のように、テスト・ケースは実行されたが、複数の出力が生成された。「コメント」セクションには、テストの実行について複数の出力が生成されたことが、考えられる原因についての詳細な情報とともに表示されています。次のように、テスト・ケースによるルールの起動がまったく行われない。これは、アサートされたファクトがルールのアクティブ化に失敗し、結果としてルールが起動されなかったことが原因である可能性があります。そのため、「コメント」セクションには、これはルール・モデリング・エラーによる可能性があると表示されています。用意された入力がすべてのルール条件との一致に失敗したためです。Designerからコールすることで、ルールセットをテストできます。Rules関数本体で、入力ファクトを作成し、デシジョン関数をコールし、デシジョン関数からのファクト出力を検証します。Rules関数の使用」を参照してください。Rules関数を使用してデシジョン関数をテストする手順は、次のとおりです。ディクショナリが有効であることを確認します。ディクショナリ検証の詳細は、第4.4.4項「ディクショナリの検証方法」を参照してください。Designerで、「関数」ナビゲーション・タブを選択します。「関数」領域で「作成」アイコンをクリックします。「名前」フィールドに関数名を入力するか、デフォルト名を使用します。「戻り型」のリストから戻り型を選択します。テスト関数の場合は、「boolean」を選択します。「引数」表で、引数がないことを確認します。テスト関数の場合、引数は指定できません。「本体」領域に、テスト関数本体を入力します。newを使用してデシジョン関数をコールし、そのデシジョン関数をコールして戻り値を取得できます(テスト関数本体では、入力ファクトを作成し、デシジョン関数をコールし、デシジョン関数からのファクト出力を検証します)。デシジョン関数のコールによって、Listが戻されます。テスト関数でデシジョン関数をテストする手順は、次のとおりです。必要に応じて、デシジョン関数の入力引数用の入力データを作成します。テスト関数で作成した引数を使用してデシジョン関数をコールします。結果をList形式にします。DecisionFunction_1(testScore)図8-8に、デシジョン関数をコールするテスト関数を示します。関数を選択し、「テスト関数」アイコンをクリックします。図8-9に示すように、出力が「関数テスト結果」ダイアログに表示されます。「OK」をクリックして「関数テスト結果」ダイアログを閉じます。Rules関数を使用してデシジョン関数をテストできます。テスト関数を使用する際の注意事項は、次のとおりです。Rules関数に関連付けられているディクショナリに検証警告が含まれている場合は、「テスト関数」アイコンがグレー表示されます。「テスト関数」アイコンが表示されるのは、ディクショナリが警告なしに検証された場合のみです。ロギングを有効化するために、RL.watch.all()をコールできます。Rulesランゲージ・リファレンス・ガイド』を参照してください。Language関数watchAll()の別名です。図8-8に示した例のかわりに、例8-1に示されている関数本体を入力することもできます。この関数はRL.watch.all()を実行し、その出力を表示します。Passed"と表示されます。Failed"と表示されます。Passed"を戻します。Failed"を戻します。Controlコンソールのテスト関数を使用して、実行時にルールのテストを行うことが可能です。Suite管理者ガイド』を参照してください。reserved.法律上の。