アダプターをテストおよびデバッグする方法
実行時の問題のデバッグでは、多くの場合、多角的なアプローチが必要になります。 問題やソフトウェアのバグの原因を突き止めるには、ソフトウェア トレース、パフォーマンス カウンター、イベント ログのエントリ、Windows Management Instrumentation (WMI) イベント、ソース コードのデバッグなど、さまざまなソースからデータを収集する必要があります。
受信アダプターと送信アダプターは BizTalk サービスのアドレス空間で動作するので、アダプターをデバッグするには、BtsNtSvc.exe のプロセスにデバッガーをアタッチする必要があります。 ただし、分離受信アダプターの場合は、そのアダプターをホストしているプロセスにデバッガーをアタッチします。
トラブルシューティングで使用する実行時の診断情報を取得するには、アダプターの実行時コードにトレース コードを実装する必要があります。 これには、Microsoft Enterprise Instrumentation Framework (EIF) を使用できます。 一般に、さまざまな重要度のトレース ステートメントを追加すると便利です (エラー状態のみのトレース、エラーと警告のトレース、エラー、警告、および情報ステートメントのトレースなど)。 さらに、より複雑なアダプターには、互いに分離してトレースする必要がある個別のサブシステムが存在する場合があります。 たとえば、ネットワーク サブシステムとコア サブシステムを持つアダプターなどがあります。すべてのサブシステムのトレースを有効にすると、場合によっては大量の "ノイズ" が生成されてしまいます。
アダプターの実行時の動作についてより多くの情報を収集するには、パフォーマンス カウンターを追加して実行時の速度や値を取得する必要があります。 たとえば、送信されたメッセージの実際の数 (エンドポイントごと) やメッセージの送信速度 (メッセージ/秒) などのパフォーマンス カウンターをアダプターで発行できます。
重大なエラーのシナリオでは、WMI イベントが役に立つ場合もあります。 たとえば、アダプターで重大なエラーが発生して受信場所がシャットダウンされた場合に WMI イベントが発生するようにしておけば、管理者がそのイベントを受け取って適切な措置をとることができます。
アダプターのテスト
BizTalk Server のカスタム アダプターを開発する際には、エンタープライズ ソフトウェア品質で開発する必要があることに注意してください。 つまり、アダプターを出荷する前に徹底的なテストを行う必要があります。 ここでは、アダプターのテストの方法を細かく説明することはできませんが、何をすればよいのかを大まかに説明します。 一般に、アダプターなどのランタイム コードのテストでは、機能テスト、ストレス テスト、パフォーマンス テストの 3 つの広範なカテゴリをカバーする必要があります。
機能テスト
アダプターの機能のすべての組み合わせをテストする必要があります (ポジティブ テストとネガティブ テストの両方を含む)。 ポジティブ テストには少なくとも次のシナリオが含まれている必要があります。
メッセージを受信する
メッセージを送信する
動的ポートによるメッセージの送信
受信場所を無効にする
構成を更新する
受信アダプターと送信アダプターの両方でサービス時間帯が機能していることの確認
トランザクション アダプターのトランザクション整合性の確認
ネガティブ テストには少なくとも次のシナリオが含まれている必要があります。
問題のあるメッセージの受信
正常なメッセージと問題のあるメッセージが混在するバッチの受信
送信エラー
再試行の成功
再試行の失敗、次のトランスポートへの移動の成功
次のトランスポートへの移動の失敗、メッセージの保留
メッセージの混在バッチの送信
データベース フェールオーバー
ストレス テスト
アダプターは実行時コンポーネントなので、実行時ソフトウェアの厳しい要件を満たしている必要があります。 通常、ストレス テストは、負荷状況下で一定の期間シナリオを実行することによって行われます。 さらに、アダプターを負荷状況下で一定の期間実行する高負荷と低負荷の平均故障間隔テストを実行する必要があります。
これらのテストの大まかなガイドラインとしては、アダプターを高負荷 (アダプターを通過するメッセージの数によって CPU の使用率が 80 ~ 90% になる状態) で約 72 時間実行し、 低負荷 (CPU の使用率が 30 ~ 40%) で約 120 時間実行します。
パフォーマンス テスト
アダプターは、パフォーマンスを念頭に置いて開発する必要があります。 アダプターをリリースする前にパフォーマンスを検証してください。 パフォーマンスのスケール アップとスケール アウトに対応していることが重要です。つまり、CPU を追加した場合も、コンピューターを追加した場合と同様にパフォーマンスが向上するようにします。 コードのプロファイリングはパフォーマンス ボトルネックの解消に役立ちます。