web-dev-qa-db-ja.com

Jmeterがフィールドを抽出/ JSON応答を解析する

応答本文に次のJSON形式があります

[
    {
        "Name" : "Prashant",
        "City" : "Sydney"
    },
    {
        "Name" : "Yogi",
        "City" : "London"
    }
]

この配列にレコードがあるかどうかを確認するためのより良い方法は何ですか。ある場合は、最初の配列インデックスの「名前」を教えてください。 jMeter用のjp @ gcJSONエクストラクタプラグインを使用しています。

プラグインを使用してこれを解析することは可能ですか、それとも正規表現を使用して解析する必要がありますか?

17
prashant

bik Load Pack バージョン3.0以降のJMeterの一部であるJMeterのJSONプラグイン(寄贈プラグイン)を使用して JSON Extractor 、あなたはそれを行うことができます:

テスト計画の概要:

enter image description here

ULP_JSONポストプロセッサー:

enter image description here

コントローラーの場合:

enter image description here

そして、これが実行結果です:

enter image description here

ご覧のとおり、私たちのソリューションで可能です

10
UBIK LOAD PACK

プラグインについてはよくわかりませんが、JSONパス式をサポートしている場合は可能です。
次の式を試してください:$.[0].Name

これは私が使用するプラグインです: http://jmeter-plugins.org/wiki/JSONPathExtractor/ そして与えられた式はそれで動作します。

JSONパス式の詳細については、 http://goessner.net/articles/JsonPath/index.html#e2 を参照してください。

6
MoD

JMeterはJSONが発明されるずっと前に設計されていたため、JMeterでのJSONの操作はそれほど簡単ではありません。ただし、作業を楽にする拡張機能がいくつかあります。

http://www.ubik-ingenierie.com/blog/extract-json-content-efficiently-with-jmeter-using-json-path-syntax-with-ubik-load-pack/

5
Hans

応答から値をフェッチするための正規表現エクストラクタを追加できます。

このような:

Regular expression extractor

3
daitha shankar

休憩サービスサンプルを入手:

{
    "ObjectIdentifiers": {
        "internal": 1,
        "External1": "221212-12121",
        "External3": "",
        "Name": "koh"
    },
    "PartyType": "naturalPerson",
    "NaturalPerson": {
        "idNo": "221212-12121",
        "Title": "Mr",
        "Name": "koh",
        "FirstName": "",

プロジェクトでは、jmeterを使用してjson応答を解析するための同様の要件がありました。要件は、json応答のすべてのフィールドを検証することであり、フィールドの期待値は外部データソースから提供されます。

この場合、Groovyスクリプトを実装できるため、JSR223PostProcessorが非常に便利であることがわかりました。最近のJmeterバージョンにはデフォルトのプラグインとして付属しています


編集:

以下はコードスニペットです。

//get the JSON response from prev sampler
String getResponse = prev.getResponseDataAsString();

//parse the response and convert to string
JSONParser parser = new JSONParser(JSONParser.MODE_JSON_SIMPLE);
String parResponse = parser.parse(getResponse);

String preResponse = parResponse.toString();

JsonObject NaturalPerson = JsonObject.readFrom(preResponse);


//replace all commas with a semi-colon
String csvResponse = preResponse.replaceAll(",", ";");

//log response to file
logFileName = "C:/Apache-jmeter-5.1.1/Web_Service_Output.csv";
BufferedWriter outLog = new BufferedWriter(new FileWriter(logFileName, true));
outLog.write(csvResponse + "\n");
outLog.close();
0
Sufi

可能であれば、常にRegular Expression Extractorを使用してください。 JSON/XPATH /その他のエクストラクターは避けてください。それらは使いやすいように見えるかもしれません。しかし、それらはより多くのメモリと時間を消費します。テスト計画のパフォーマンスに影響します。

sourcehttp://www.testautomationguru.com/jmeter-response-data-extractors-comparison/

0
vins