【问题标题】:Stress Test POST with Multiple Body using Apache JMeter使用 Apache JMeter 进行多体压力测试 POST
【发布时间】:2021-05-25 08:08:18
【问题描述】:

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

这是我的身体数据:

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

我如何对它进行多体压力测试?

这样的例子:

{
  "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 的特定身体数据。不是这样brand = toyota, model = ertiga

【问题讨论】:

    标签: java post jmeter stress-testing


    【解决方案1】:

    您可以参数化波段/模型并尝试以 csv 文件格式读取 所以你的身体会如下所示

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

    您的 csv 文件将如下所示

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

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

    【讨论】:

      【解决方案2】:
      1. 首先,您需要将这些品牌/型号对存储在某处,即存储在如下所示的文件中:

        toyota,avanza
        suzuki,ertiga
        daihatsu,xenia
        
      2. 其次,您需要生成请求正文 JSON(顺便说一下,您的示例 is not valid,我的代码 sn-p 假定以下输出:

        [
          {
            "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

      更多信息:

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-03-28
        • 1970-01-01
        • 1970-01-01
        • 2015-08-30
        • 2023-04-10
        • 1970-01-01
        • 1970-01-01
        • 2015-01-06
        相关资源
        最近更新 更多