11

ユーザーがログインして検索フィールドに検索キーワードを入力し、結果を取得するテストがあります。最後にログアウトします。

ここで、Jmeter を使用して同時実行性をテストしたいと思います。これが私が思いついたものです。

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

スレッド数を 10 追加しました。Synchronizing Controller に 5 つ追加しました。テストを実行すると、5 ユーザーの同時実行性が得られますか? 残り 5 ユーザーは同時ユーザーになりますか?

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

また、特定のアクションの同時実行を実現する別の方法があれば教えてください (例: 5 人のユーザーが同時にログイン ボタンを押す)。

4

1 に答える 1

17

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

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

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

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

于 2012-04-17T12:58:32.350 に答える