8

JMeter を使用して Web サイトの編集機能のパフォーマンスをテストしようとしています。ただし、テストしようとしているステップでは、フォームに 200 を超えるアイテムがポストされます。私は明らかに、すべてのアイテムがユーザーに表示されるフォームと同じであることを望んでいます (変更しようとしているものを除く)。正規表現エクストラクタを使用してこれが可能であることは承知していますが(質問JMeter - MVC : 動的データを含むフォーム投稿モデル を参照)、これはフォーム内のすべての要素に対して手動で設定する必要があります。

JMeter にすべてのフォーム要素を個別に設定することなくポストバックさせる方法はありますか? またはこれを行うためのプラグインはありますか?

どんな助けでも大歓迎です。

4

3 に答える 3

2

良い質問。多くの検索の結果、Jmeter がこれをよりエレガントにサポートしておらず、以前の GET 要求で受信したフォーム データを単純にポストバックするためのかなりの回避策が必要であることがわかりました。

ShGiji の回答を理解するのは少し難しく、Regular Expression Extractor などをセットアップするために掘り下げなければなりませんでした。以下は、私が取った手順です。

  1. 正規表現エクストラクタを設定して、GET リクエストのレスポンスからパラメータを取得します

    Jmeter に正規表現エクストラクタからリストを生成させるには、Match No. を -1 に設定する必要があります (ここに記載されているとおり)。パラメータ名と値もキャプチャする必要があることに注意してください。そのため、最終的には次のようになります...

正規表現エクストラクタの例

  1. オプションで、デバッグ ポスト プロセッサを追加します。その場合、選択した参照名のプレフィックスを持つ変数が存在することを確認できるはずです (上記の例では、変数fieldList_matchNr、などを期待する必要があります) fieldList_1_g1fieldList_1_g2

  2. Beanshell Post Processorを追加して、パラメータを後続の POST リクエストのフォーム データに追加します。

    次のスクリプトは、Jmeter 2.11 (執筆時点の最新バージョン) で動作します。Integer.parseIntではなくの使用に注意してくださいInteger.valueOf

Beanshell ポスト プロセッサ:

log.info("=====================");

count = Integer.parseInt(vars.getObject("fieldList_matchNr"));
log.info("Number of order details fields: " + count);

for (i=1; i <= count; i++) { 
  paramName = vars.getObject("fieldList_" + i + "_g1");
  paramVal = vars.getObject("fieldList_" + i + "_g2");  
  log.info("Adding request parameter: " + paramName + " = " + paramVal);
  sampler.addArgument(paramName, paramVal);
}

log.info("=====================");
于 2014-10-21T20:16:33.317 に答える
2

別のアプローチは、JMeter のプロキシ機能を使用することです。

JMeter を使用して (HTTP 要求の送信を自動化する機能とは別に)、ブラウザー内でのアクションを記録できます。その後、サイトにアクセスしてフォームを送信できます。Jmeter は HTTP リクエスト サンプラーを記録し、すべてのフォーム要素が抽出され、送信された値が取り込まれます。JMeter テストで別の値が必要な場合は、ブラウザーで送信されたものに対して、これらを正しい値に編集できます。完了したら、これをテスト計画として保存して実行できます。

これは、少数の要素を編集する場合にのみ機能します。すべての要素に、ブラウザで送信されたものとは異なる値を送信する必要がある場合は、上記のアプローチが適しています。

http://jmeter.apache.org/usermanual/jmeter_proxy_step_by_step.pdf

于 2013-06-21T08:34:24.803 に答える
2

正規表現エクストラクタを定義した後、

step1) すべての値を true にして「Debug PostProcessor」を作成します。

  • Jmeter プロパティ = true
  • Jmeter 変数 = true
  • サンプラー プロパティ = true
  • システム プロパティ = true

このポスト プロセッサを検査すると、すべてのポスト パラメータ値がリストに表示されます。Post リクエストと一緒に送信するのに適したものを見つけて、以下に示すように API を使用して paramName と paramVal を設定します。

必要なすべての投稿パラメーターを見つけるために、firebug を使用しました。その使用方法を知るには、このリンクをたどってください http://community.blazemeter.com/knowledgebase/articles/80479-how-to-use-jmeter-for-login-authentication

step2) このスクリプトで「Beanshell プリプロセッサ」を作成します。「hiddenList」は正規表現エクストラクタの参照名です。

log.info("=====================");

         count =  Integer.valueOf (vars.getObject("hiddenList_matchNr") ) ;

        log.info("Number of hidden fields in previous sampler: " + count);



        for (i=1; i <= count; i++) { 
            paramName = vars.getObject("hiddenList_"+ i + "_g1");
            paramVal = vars.getObject("hiddenList_"+ i + "_g2");  
            log.info("Adding request parameter: " + paramName + " = " + paramVal);
            sampler.addArgument(paramName, paramVal);
        } 

        log.info("=====================");

お役に立てれば。

于 2013-06-20T19:25:41.853 に答える