2009-09-07 15 views
46

私たちはアプリケーションで簡単なパフォーマンステストフローを持っています。Apache JMeterのセッション/クッキー管理

  1. 私たちは、異なるパラメータのためのいくつかの基準
  2. 繰り返し検索に基づいて
  3. 検索にログインします。

私たちはJmeterを使用してパフォーマンステストを行っています。これをスケーラブルな方法でテストするには、複数のスレッドを実行する必要があります。

我々は現在、これが配置されている方法は次のとおりです。

-Test Plan 
    - Thread Group 
     - Cookie Manager 
     - Login To application 
     - Search on param 1 
     - Search on param 2 
    - results summary table 
    - Summary report 

だから、基本的に、我々は要約リターンテーブルを持っており、クッキーマネージャは、スレッドグループレベルで存在している間、計画レベルで存在を報告しています。

1つのスレッドで実行すると、うまく動作して正常に完了します。それを複数のスレッドにスケーリングすると、次のスレッドが起動するとすぐに、最後のスレッドのセッションが無効になります。これにより、新しく生成されたスレッドのために、すでに実行中のすべてのスレッドで障害が発生します。

私が観察して、この結果に達し:
1.私は複数のスレッドを実行する場合、私は10秒のようにランプアップ期間で2つのスレッドを実行した場合は、最後のスレッドが結果の要約ツリー
2の有効回答を得ており、これは、各スレッドが完了するための時間を得て、両方が正常に実行されることを意味します。

各スレッドのログインはアプリケーションにあり、Cookieマネージャはスレッドレベルであるため、各スレッドのセッションIDの値はそれぞれ維持されますか?しかし、スレッド間のセッションID値の上書きを引き起こしているのは何ですか?

ご協力いただければ幸いです。 JMeterのドキュメントからコピー

答えて

46

最後の要素はHTTPクッキー マネージャです。 CookieマネージャはすべてのWebテストに を追加する必要があります。そうでなければ JMeterはCookieを無視します。 をスレッドグループレベルに追加すると、 はすべてのHTTP要求が が同じCookieを共有することを保証します。

http://jmeter.apache.org/usermanual/test_plan.htmlの「4.2.2ロジックコントローラ」の章を参照してください。

EDIThttp://jmeter.apache.org/usermanual/component_reference.html#Simple_Controllerを使用して、Cookie Managerとリクエストをグループ化する必要があります。

1

ランプアップ時間を延長してください。私はランプアップ時間が約1秒であったのと同じ問題に遭遇し、それをスレッドごとに3秒に増やしてうまくいきました。

6

私はアンドレイの答えが役に立たないと思います。彼は、各リクエストは同じメーターを使用すると述べていますが、jmeterのマニュアルに従って:

各JMeterスレッドには独自の「クッキー記憶領域」があります。

私が質問を理解する限り、各スレッドは同じセッションIDクッキーを共有します。だから私には2つのスレッドグループがあり、それらを連続して実行する必要があるようです。最初のスレッドグループ(一度だけ実行する単一のスレッド)はログインしセッションクッキー値をグローバルパラメータに保存する必要があります(おそらく、jmeterのスクリプティング機能を使用する必要があります)。 次に、そのCookieを2番目のスレッドグループのCookieマネージャに設定します。

希望に役立ちます。 JMeterの

編集、それをのbinフォルダに存在user.properties

を開き、次の行を追加します:

+2

+1を。 *同じテスト計画の異なるスレッドグループを通じてクッキーを「伝播」することは可能ですか? JMeterスレッドは独立したユーザーを表すため、クッキーと変数はスレッドのローカルなものです* [http://jmeter.512774.n5.nabble.com/HTTP-cookie-manager] -td544523.html)。 –

0

はこれを試してみてください

CookieManager.check.cookies=false 

はそれを保存して、スクリプトを実行します。私はあなたの問題を解決することを願っています。

0

まずにコードを変更:

jmeter.properties 
CookieManager.save.cookies=true 
CookieManager.name.prefix=mycookie_ 

次に、あなたのJavaのサンプラーと同じスレッドグループ内のHTTPクッキーマネージャを追加します。

は、その後、あなたのJavaのサンプラーに追加します。これに

JMeterVariables jmv = JMeterContextService.getContext().getVariables(); 
Iterator<Map.Entry<String,Object>> it = jmv.getIterator(); 
while(it.hasNext()){ 
    Map.Entry<String,Object> v = it.next(); 
    System.out.println("name: " + v.getKey() + " value: " + v.getValue()); 
}