0

要約すると

外部システムから予想される遅延を模倣する「統合」テストを作成するにはどうすればよいですか?

詳しくは

「パートナー」と呼ぶ複数の外部システム (Web サービス経由) と通信する「メイン」アプリケーションがあります。

パートナーの内部の仕組みには興味がありませんが、メインを完全にテストする必要があります。

メインの場合、私は現在持っています:

  • 個々のテスト可能なブロックごとの単体テスト [したがって、すべての「レベル」(n 層) ですべてのクラスのすべてのパブリック メソッドをテストし、すべての依存関係をスタブします]
  • トップダウンでテストする統合テスト (したがって、プレゼンテーション層ですべてのパブリック メソッドをテストし、これらのパートナー Web サービスのみをスタブ化します)

また、MAIN のコードが適切なパフォーマンスを発揮することを確認するために、いくつかの統合テストを作成したいと考えています。

「正しいパフォーマンス」とは?プロダクト マネージャーは、「すべてのビューは 2 秒以内にデータを返さなければならない」と言うことができます。(平均して) パートナーへの呼び出しに (たとえば) 1.5 秒かかることがわかっているので、メイン コードが 0.5 秒 (2 - 1.5) で完了した場合に合格するストップ ウォッチを使用して統合テストを作成できます。ただし、同僚との話し合いで、パートナーのスタブには 1.5 秒の予想される遅延を含める必要があることが提案されたため、私のテストでは、パートナーのメイン コードとスタブが PM の指定に従って 2 秒以内に完了する必要があります。

QU:

  1. 推奨される動作は何ですか?
  2. 提案されている場合、これはスタブに Rino Mocks を使用してどのように達成されますか?

みんな、ありがとう

グリフ

4

1 に答える 1

0

「すべてのビューは 2 秒以内にデータを返す必要があります」は意味がありません。応答時間を制限する場合は、負荷も考慮する必要があります。10 秒ごとに 1 つのリクエストがある場合、ビューは 2 秒で返される可能性があります。ただし、1 秒あたり 10k のリクエストがある場合、応答時間は「わずかに」長くなります。より良いパフォーマンス要件は、「負荷が 1 秒あたり z リクエストを下回っている場合、応答の x% が y 秒以上かからない」などです。

単体テストの遅延も意味がありません。フルスケールのパフォーマンス テストを実行する必要があります。既存のツールのいずれかを選択し、(そのツールで制御される) いくつかのクライアント ノードを準備し、テスト対象のサーバーに対して記録された/スクリプト化されたクライアントの要求を実行し、応答時間、CPU、およびメモリの使用量を確認します。次に、1 つまたはモード ノードをシステムに追加し、システムがどのようにスケーリングされているかを確認します

于 2012-09-03T16:43:20.680 に答える