【问题标题】:Load testing using Jmeter for POST with very large post data使用 Jmeter 进行负载测试以进行具有非常大的 post 数据的 POST
【发布时间】:2018-03-13 07:15:51
【问题描述】:

我有一个post请求如下:

POST /views/<VIEW_ID>/bulk_update.json HTTP/1.1
Host: api.abcd.com
Content-Type: application/json
Cache-Control: no-cache

有帖子数据:

{
"api_key":"XXXXXXXXXXXXX",
"updates":[
{"timestamp":"2018-01-31 09:25:0 -0500","value1":30},
{"timestamp":"2018-01-31 09:26:0 -0500","value1":20},
{"timestamp":"2018-01-31 09:27:0 -0500","value1":40},
{"timestamp":"2018-01-31 09:28:0 -0500","value1":70},
{"timestamp":"2018-01-31 09:29:0 -0500","value1":80},
{"timestamp":"2018-01-31 09:30:0 -0500","value1":100},
{"timestamp":"2018-01-31 09:31:0 -0500","value1":1},
{"timestamp":"2018-01-31 09:32:0 -0500","value1":11},
{"timestamp":"2018-01-31 09:33:0 -0500","value1":111},
{"timestamp":"2018-01-31 09:34:0 -0500","value1":1111},
.
.
.
.
.(total of >1000 updates)
.
.
.
.
{"timestamp":"2018-01-31 09:35:0 -0500","value1":876},
]
}

我有一个 csv 文件来存储所有时间戳和值。

有没有一种简单的方法来提及所有 1000 个更新,而不是手动输入所有 1000 个更新?

这方面的任何线索都会非常有帮助。

【问题讨论】:

    标签: rest jmeter performance-testing load-testing


    【解决方案1】:
    1. JSR223 PreProcessor 添加为HTTP Request 采样器的子对象,您要构建哪个主体
    2. 将以下代码放入“脚本”区域:

      def data = new ArrayList()
      
      1.upto(1000, {
          def entry = new groovy.json.internal.LazyMap()
          entry.put('timestamp', new Date().format('yyyy-MM-dd hh:mm:S ZZZZ') as String)
          entry.put('value1', it)
          data.add(entry)
      
      })
      
      def builder = new groovy.json.JsonBuilder()
      
      builder(
              api_key: "xxxxxx",
      
              updates: data.collect {
                  [
                          timestamp: it.get('timestamp'),
                          value1   : it.get('value1')
                  ]
              }
      )
      sampler.getArguments().removeAllArguments()
      sampler.setPostBodyRaw(true)
      sampler.addNonEncodedArgument('',builder.toPrettyString(),'')
      
    3. 就是这样,您的请求正文将从 Groovy 代码构建(如果需要,根据您的需要进行修改)

    参考资料:

    【讨论】:

    • 我有一个带有时间戳的 csv 文件,value1。我有另一个带有 id 的 csv,api_key。我尝试在 JSR223 PreProcessor 中使用上述代码。如何在代码中使用 csv 文件中的数据。我不太明白那部分。谢谢你帮忙。 @德米特里
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多