微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

金牛座:性能测试“请求”块运行的次数不同

如何解决金牛座:性能测试“请求”块运行的次数不同

我目前正在针对我的登台虚拟机编写针对应用程序的性能测试,并且遇到了一个问题,即已定义的请求未按顺序运行,或者次数不相同

由于测试是针对我的暂存环境运行的,因此,我希望这些请求尽可能按顺序运行并且次数相同。如果没有,我相信我的某些清理代码可能无法正常工作,这将导致集成测试成为CICD等的一部分。

这是我的YAML文件

execution:
- concurrency: 10
  ramp-up: 1s
  hold-for: 1m
  throughput: 10
  scenario: myScenario

scenarios:
  myScenario:
    variables:
      staging_url: http://${__P(staging_host)}/api/endpoint
    requests:
      - url: ${staging_url}
        method: POST
        headers:
          Content-Type: application/json
        body-file: performance_testing/data_to_post.json
      - url: ${staging_url}/search?searchForPrevIoUslyPostedData
        method: GET
        headers:
          Content-Type: application/json
        extract-jsonpath:
          id: $[0]['id']
      - url: ${staging_url}/${id}
        method: PATCH
        headers:
          Content-Type: application/json
        body-file: performance_testing/data_to_patch.json

如您所见,某些请求块还取决于先前的请求,这就是为什么我希望能够按顺序运行这些块的原因

谢谢,我希望这很清楚

解决方法

  1. Taurus在后台运行JMeter,而JMeter颠倒执行Samplers,因此您可以立即执行顺序执行。您有10个并发线程,它们以最快的速度执行Samplers,因此,如果在.jtl文件中看到请求的非顺序顺序,则意味着它们源自不同的线程。您可以使用__threadNum()__iterationNum()函数来区分来自不同虚拟用户/迭代的请求。

    您可以通过运行bzt your-test.yml -gui命令来查看生成的JMeter脚本

    更多信息:Navigating your First Steps Using Taurus

  2. 由于使用Concurrency Thread Group会启动10个线程1分钟,并且线程开始尽快执行采样器,因此无法保证请求的总数。

  3. 您正在使用Throughput Shaping Timer将吞吐量限制为每秒10个请求。计时器只能暂停以将JMeter减慢到所需速度,并且如果您的响应时间波动并且超过1秒,则可能需要添加额外的线程才能达到10个请求/秒(假设您的应用程序能够处理此类负载)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。