2012-04-17 33 views
10

ユーザーがログインして検索フィールドに検索キーワードを入力して結果を取得するテストがあります。最後にログアウトします。Jmeterで同時ユーザー負荷を生成する方法

今、Jmeterを使用して並行性をテストしたいと考えています。これは私が思いついたものです。

Test plan 
    Thread group 
    + Login request 
    + Synchronizing Controller 
    + Search string 
    + Synchronizing Controller 
    + Logout 

スレッド数を10に増やしました。同期コントローラに5を追加しました。テストを実行すると、5人のユーザーの並行性が得られますか?残り5人のユーザーは同時ユーザーですか?

また、私はログインページが読み込まれるときに依存しています。したがって、ログイン時に並行性を実現するために、トランザクションコントローラにすべてのリクエストを追加し、トランザクションコントローラに子としてSynchronizing Controllerを追加しました。私が正しいことをしているかどうか教えてください。

また、特定の操作(例:5人のユーザーがログインボタンを同時に押す)に対して並行性を実現する別の方法があるかどうかを教えてください。

答えて

16

まず、「同時」と「同時」を区別してください。これらは通常非常によく似た用語ですが、負荷テストでは意味が異なります。同時とは、同時に2つ以上の要求を意味します。 Concurrentは、2つ以上のスレッド(スクリプト)が並行して実行されていることを示します。

したがって、複数の同時リクエストをシミュレートするようにJMeterを設定しようとしています。しかし、実際には、これよりはるかに優れたアプローチがあります。同じリクエストを同時に実行しようとするのではなく、アプリケーションがサポートする負荷の種類を現実的に表現するようにテストを設定する必要があります。ランダムな待機時間、スループットコントローラー、現実的なスレッド数を使用すれば、自動的に並行性をテストすると同時に、本物の有効で有用なパフォーマンステストを実行します。

基本的には、同期タイマーを落とし、代わりに一定のスループットタイマーを使用し、待機時間を設定して、正しいスレッド数を計算して目的の負荷を生成します。

このアプローチの追加の利点は、偽陰性を発生させる可能性がはるかに低いことです。たとえば、5つの同時ログイン要求でサーバーにヒットした場合、この呼び出しはシングルスレッドであり、応答時間が長くなることがあります。しかし、これは問題ではないかもしれません。おそらく、同時に2つのログイン呼び出しの可能性が非常に小さいので、コードを変更する時間を費やす価値はありません。これは負荷テストの非常に重要な概念です。おそらく最も重要なことですが、テストを実行したり、誤ったバグを見つけたり、時間を無駄にしたりすることなく、現実的な目標を持っている必要があります。

+1

非常に優れた説明をありがとう。しかし、私の状況は少し異なります。私はちょうど私のサーバがどのように応答するか5人のユーザがログインと検索ボタンを同時に押すのを見たいと思う。だから私は同期コントローラを使用している。同期コントローラでテストを実行した結果、少しずつ違いが出てきました。スレッドグループでは10スレッド、同期では5スレッドについて説明しました。だから、私はそれが5同時ユーザーと同時5人として実行されると思った。しかし、これはそれが実行されている方法ではありません。テストはログインと検索リクエストを2バッチで送信します。各バッチには5人のユーザーが含まれます。 – user1169236

+1

もう一度、同時性と同時性の違いを理解する必要があります。それらは違う。同期タイマーは同時性を提供し、複数のスレッドが並行性を提供します。 –

+0

提案していただきありがとうございます!私は解決策を得た。 – user1169236

関連する問題