ビジネス・ルールの開発におけるデバッグ手法

  • ビジネス・ルールは、常に、ソース・データと期待される結果がわかっており、計算を手動で追うことができる小さいデータ・セットでの単体テストを実施します。
  • Calculation Managerでビジネス・ルールを実行し、ログ・メッセージを確認します。ルールが完了すると、ログ・メッセージが新しいタブに表示され、エクスポートまたは保存できます。ログ・ファイルを分析すると、どこで計算に時間がかかっているかを特定するために役立ちます。
  • Calculation Managerでルールセット内の各ルールを個々に実行し、ログ・メッセージを確認します。
  • 開発中に、Calculation Managerをデバッグ・モードで使用して、ルールをデバッグします。
  • ビジネス・ルールがCALCPARALLELまたはFIXPARALLELを使用する場合、特に配賦関数(@ALLOCATEまたは@MDALLOCATE)のいずれかを使用する場合は、並列計算を削除してテストし、ルールが実行されてパフォーマンスが向上するかどうかを確認します。
  • 計算が発生する前に、必要なすべてのデータ(割当ての合計など)が存在し、必要に応じて事前計算されることを確認します。
  • 長いスクリプトは、先頭から開始して下に向かってデバッグします。スクリプトの冒頭の問題によって、下でさらに問題が発生することがあります。セクションを1つずつデバッグして、すべてのデータが正しく作成されることを確認してください。スクリプトの後方のセクションによって、それよりも前のセクションが上書きされないことを確認します。

    スクリプトをデバッグするときは、各計算パス内の構文の長さを考慮してください。計算のどの部分が失敗しているかわからない場合は、セクションを1つずつ下からコメント・アウトし、計算が実行されて正しい結果が得られるまで計算を再実行します。この時点で、計算の先頭からセクションからコメントを1つずつ削除し、進行するにつれて各変更をテストします。

  • デバッグ・モードを使用して、スクリプトの各セクションが必要に応じて順番に計算されることを確認します。
  • すべてのブロックが正常に作成されることを確認するには、手動でデータをクリアして再ロードします。ブロックの作成が適切にテストされないため、クリア・スクリプトは使用しないでください。
  • 常に、スクリプトを再実行してテストし、入力および移入されたデータについてその構文で正しい結果が生成されることを確認します。
  • 常に、複数のデータ・セットを使用してすべてのデータ結果をテストします。開発では、常に、入力データをある値から別の値、さらに#missingへと変更し、また、#missingからある値、さらに別の値へと変更することによってテストします。変更するたびにルールを再実行し、結果を検証してください。
  • ユーザー入力によってデータ・セットが変わる可能性がある場合(割当ての場合など)、#missingから値へ、また、値から#missingへと変更してデータをテストします。これにより、再実行中に、前に計算された結果が必要に応じて削除されます。たとえば、最初の実行で製品A、BおよびCのデータを入力し、2回目の実行で製品B、CおよびDのデータを入力する(Aのデータは入力しない)場合、2回目の実行の前に値を#missingに変更すると、2回目の実行で製品Aの割当て結果が正しく削除されます。