使用 Apache JMeter 对多个 Body 进行压力测试 POST

Stress Test POST with Multiple Body using Apache JMeter

如何使用指定的 body 数据对 POST 多个 Body 进行压力测试?

这是我的 Body 数据:

{
  "car": {
    "brand": "toyota",
    "model": "avanza",
  },
  "customer_id": "string"
}

如何使用多个 body 对其进行压力测试?

像这样的例子:

{
  "car": {
    "brand": "toyota",
    "model": "avanza",
  },
  "customer_id": "string"
}

{
  "car": {
    "brand": "daihatsu",
    "model": "xenia",
  },
  "customer_id": "string"
}

{
  "car": {
    "brand": "suzuki",
    "model": "ertiga",
  },
  "customer_id": "string"
}

我试过使用 User Defined Variables,但我不能使用这个,因为我需要来自 brandmodel 的特定 body 数据。不是这样的brand = toyota, model = ertiga

您可以参数化 band/model 并尝试读取表格 csv 文件 所以你的身材会是这样

"car": {
    "brand": "${BRAND}",
    "model": "${MODEL}"},
"customer_id": "string"}

您的 csv 文件将如下所示

BRAND,MODEL
toyota,avanza
suzuki,ertiga
daihatsu,xenia

要从 CSV 中读取数据,请查看 CSV_Data_Set_Config

  1. 首先,您需要将这些 brand/model 对存储在某处,即存储在如下所示的文件中:

    toyota,avanza
    suzuki,ertiga
    daihatsu,xenia
    
  2. 其次,你需要生成请求体JSON(顺便说一句,你的例子is not valid,我的代码片段假定以下输出:

    [
      {
        "car": {
          "brand": "toyota",
          "model": "avanza"
        },
        "customer_id": "string"
      },
      {
        "car": {
          "brand": "daihatsu",
          "model": "xenia"
        },
        "customer_id": "string"
      },
      {
        "car": {
          "brand": "suzuki",
          "model": "ertiga"
        },
        "customer_id": "string"
      }
    ]
    

    JSR223 PreProcessor 添加为要参数化的请求的子项,并将以下代码放入“脚本”区域:

    def payload = []
    
    new File('test.csv').readLines().each { line ->
        def car = [:]
        car.put('brand', line.split(',')[0])
        car.put('model', line.split(',')[1])
        def car_entry = [:]
        car_entry.put('car', car)
        car_entry.put('customer_id', 'string')
        payload.add(car_entry)
    }
    
    vars.put('payload', new groovy.json.JsonBuilder(payload).toPrettyString())
    
  3. 就是这样,您应该能够将生成的请求正文引用为 ${payload} JMeter Variable 需要的地方

更多信息: