多数の相互依存サービスのパフォーマンス/負荷テストを行う必要があります。それらはすべてnet.tcpを使用し、ほとんどがデュプレックスコントラクトと内部キューを使用します。[lock(syncRoot){if(queue.Empty)Thread.Wait();を使用してPOCOキュークラスを処理しました。}]
これが私が思いついたアプローチです:
- パフォーマンステスト対象のWCFサービスを特定する
- 各サービスに関連するパフォーマンスカウンターを特定する
- テスト対象のサービスを介して実行を行う論理的な開始点を特定します
- 各サービスに対してVS.Netを使用して単体テストを自動生成する
- 特定の機能テストを作成します(たとえば、「注文する」というユースケースを使用して、関連するサービスへのすべての呼び出しを行い、通常、必要な機能のほとんどすべてを実行するテストを作成できます)
- #5の実行からのトレースファイルを使用して単体テストを生成します[CodePlexからのWCF負荷テストを使用](これは、デバッグ環境で本番/フィールドのユーザーエラーを再現するための理想的なツールのようです。免責事項:ツールは使用されていません。印象プロジェクトの説明を読んでから)
- 上記のテストは、自動生成された入力データを使用して呼び出しを行うように調整できます。
- さまざまなコードパスが実行されるように、入力にバリエーションを導入します
- パフォーマンスカウンターからのログデータ
- ボトルネックを分析して特定する
質問:
- より良いアプローチはありますか?
- 内部キューを使用するサービスの場合、stdパフォーマンスカウンターを使用してパフォーマンスを測定することが問題になります。カスタムカウンターが必要な場合がありますか?
- #1が当てはまる場合、テスト対象のサービスのコードを変更せずに顧客カウンターを導入する方法はありますか?
- 機能テストの結果を気にする必要がありますか?
- WCFサービスのSLAを[非侵入的に]実装する方法はありますか?(処理された要求、発生した例外、応答時間などのカウンターからの十分なデータがある場合、SLAを検証できるはずです-5分以内に200,000の要求を処理し、各要求の応答時間は2秒です-私の質問は、SLAを指定するだけで、製品/ツールが舞台裏ですべての配管を実行し、表形式の回答を得ることができるかどうかということです。 :))
- 余談ですが、WCFサービスの内部でリクエストをキューに入れるための最良の方法は何ですか?