2

JSF アプリケーションで JMeter を使用して簡単なテストを追加しようとしています。以下の指示に従いました。

http://jmeter.apache.org/usermanual/build-adv-web-test-plan.html

ユーザー名とパスワードを含むシンプルなログイン ページと送信ボタンがあります。スクリーンショットから、プロキシを使用したことがわかります。スクリーンショットの設定では、HTTP 500 エラーが発生しています。質問を正しい方法で行ったかどうかわかりません。説明が必要な場合はお尋ねください。

ここに画像の説明を入力

クッキーマネージャー

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

ここに画像の説明を入力

エラーコードは次のとおりです。 ここに画像の説明を入力 ここに画像の説明を入力

編集:これはSOの最も長い質問になると思います。しかし、画像は言葉よりも優れている場合があります。とにかく、私たちが行ったことは、firebug で見られるものと同等のデータを送信することです。しかし、それでも 500 エラーが発生します。添付の Tomcat ログで確認できます。

ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力 ここに画像の説明を入力

4

3 に答える 3

5

jsfViewStateの正規表現エクストラクタで(?s)、正規表現の先頭に追加します。だからあなたは持っています:

(?s)<input type="hidden" name="javax\.faces\.ViewState" id="javax\.faces\.ViewState" value="(.+?)" /> 

これにより、(.+?)改行文字にまたがることができます。

于 2012-09-19T16:14:45.633 に答える
5

HTTP 5xx コードは、サーバーまたはアプリケーションのエラーに関連しています。最初にログ ファイルを検索します。

スレッド/ユーザーごとに実際に評価する必要がある変数式がないため、スクリプトに「ユーザー定義変数」コンポーネントは必要ありません。

「Regular Expression Extractor」コンポーネントは、JSF ViewState 値を抽出するのに十分です。式の最後の部分「/>」を削除し、正規表現のグループ化 (.+?) を (\w+?) に変更することをお勧めします。「一致番号」の値を変更します。フィールドを 1 に設定します (一致するすべての値が同一の場合、ランダムを使用する必要はありません)。

「XPath Extractor」コンポーネントと「Regular Expression Extractor」コンポーネントの両方を使用して同じ値を抽出する理由がわかりませんでした。html でリードするときは、最後のものを使用することを好みます。整形式の xml 文字列/ファイルを扱う場合は、XPath の方が適しています。

スクリプトをゼロからキャプチャするには、Workbench 内に「HTTP プロキシ サーバー」を追加して構成し、起動して、このプロキシを使用するようにブラウザーを構成し、ブラウザーを使用してそれらのページをナビゲートすることをお勧めします。このようにして、作成されたすべてのリクエストと、選択したブラウザで使用されるリクエスト ヘッダーをキャプチャします。その後、不要なリクエストを削除し、javax.faces.ViewState などのクエリ パラメータを対応する変数に変更します。

パラメータ値で変数を使用する前に、HTTP サンプラ内でエクストラクタ (ポスプロセッサ) を使用することを検討してください。例: /EBS 要求が最初に来て、/EBS/login.xhtml 要求に javax.faces.ViewState パラメーターがある場合、おそらく、/EBS 応答には javax.faces.ViewState 値を持つ非表示の入力が含まれます。

これは、私が使用する JSF アプリケーション テスト スクリプトの一般的な構成です。HTTP 500 エラーの原因についてより多くの情報を提供することで、より良い解決策への道が明らかになります。

于 2012-04-25T16:27:36.310 に答える
2

正規表現エクストラクタが間違った場所にあります。リクエストへのレスポンスから値を抽出して、同じリクエストで送信することはできません。これを達成する唯一の方法はタイムマシンを使用することですが、これらはまだ存在しておらず、たとえあったとしてもおそらく機能しないでしょう.

通常、GET への応答でビューステートを取得し、後で同じページの POST でそれが必要になります。そのため、login.xhtml ページが (GET として) 最初に呼び出される GET 呼び出しのとして、正規表現エクストラクタを配置します。記録にこの GET 呼び出しが含まれていない場合は、手動で追加するか、ログイン POST の前に以前の呼び出しの応答を調べて見つけます。おそらく、GETホームページ.xhtml(または同様のもの)に含まれます。

于 2012-05-05T16:10:08.447 に答える