首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Artillery.io:如何生成每个场景的测试报告?

Artillery.io:如何生成每个场景的测试报告?
EN

Stack Overflow用户
提问于 2019-07-08 22:16:13
回答 3查看 3.3K关注 0票数 3

炮兵:如何按顺序运行场景,并在同一文件中显示每个场景的结果?

我目前正在使用artillery.io编写nodejs测试,以比较我实现的两个端点之间的性能。我定义了两个场景,我希望在相同的报告文件中获得每个场景的结果。测试的执行是不连续的,这意味着在测试结束时,我已经有了一个组合的结果,除了所有的结果之外,不可能知道每个结果的性能。

代码语言:javascript
复制
config:
  target: "http://localhost:8080/api/v1"
  plugins:
    expect: {}
    metrics-by-endpoint: {}
  phases:
    - duration: 60
      arrivalRate: 2
  environments:
    dev:
      target: "https://backend.com/api/v1"
      phases:
        - duration: 60
          arrivalRate: 2
scenarios:
  - name: "Nashhorn"
    flow:
      - post:
          url: "/casting/nashhorn"
          auth:
            user: user1
            pass: user1
          json:
            body:
              fromFile: "./casting-dataset-01-as-input.json"
              options:
                filename: "casting_dataset"
                conentType: "application/json"
          expect:
            statusCode: 200
          capture:
            regexp: '[^]*'
            as: 'result'
      - log: 'result= {{result}}'

  - name: "Nodejs"
    flow:
      - post:
          url: "/casting/nodejs"
          auth:
            user: user1
            pass: user1
          json:
            body:
              fromFile: "./casting-dataset-01-as-input.json"
              options:
                filename: "casting_dataset"
                conentType: "application/json"
          expect:
            statusCode: 200
          capture:
            regexp: '[^]*'
            as: 'result'
      - log: 'result= {{result}}'

如何按顺序运行场景,并在同一文件中显示每个场景的结果?

提前感谢您的回答

EN

回答 3

Stack Overflow用户

发布于 2021-01-07 02:32:24

据我所知,在现有的火炮逻辑下,没有一个好的方法来做到这一点。

使用此测试脚本:

代码语言:javascript
复制
scenarios:
   - name: "test 1"
     flow:
     - post:
       url: "/postman-echo.com/get?test=123"
       weight: 1
  - name: "test 2"
    flow:
    - post:
      url: "/postman-echo.com/get?test=123"
      weight: 1
... etc...


Started phase 0 (equal weight), duration: 1s @ 13:21:54(-0500) 2021-01-06
Report @ 13:21:55(-0500) 2021-01-06
Elapsed time: 1 second
  Scenarios launched:  20
  Scenarios completed: 20
  Requests completed:  20
  Mean response/sec: 14.18
  Response time (msec):
    min: 117.2
    max: 146.1
    median: 128.6
    p95: 144.5
    p99: 146.1
  Codes:
    404: 20

All virtual users finished
Summary report @ 13:21:55(-0500) 2021-01-06
  Scenarios launched:  20
  Scenarios completed: 20
  Requests completed:  20
  Mean response/sec: 14.18
  Response time (msec):
    min: 117.2
    max: 146.1
    median: 128.6
    p95: 144.5
    p99: 146.1
  Scenario counts:
    test 7: 4 (20%)
    test 5: 2 (10%)
    test 3: 1 (5%)
    test 1: 4 (20%)
    test 9: 2 (10%)
    test 8: 3 (15%)
    test 10: 2 (10%)
    test 4: 1 (5%)
    test 6: 1 (5%)
  Codes:
    404: 20

所以基本上你可以看到它们的权重是相等的,但运行起来并不一样。因此,我认为炮兵的代码本身需要添加一些东西。很高兴在这里犯了错。

票数 1
EN

Stack Overflow用户

发布于 2020-04-23 15:28:12

我想你错过了参数weight,这个参数定义了执行场景的概率。如果在第一个场景中将权重设置为1,在第二个场景中设置相同的值,则两者执行的概率都相同(50%)。

如果您在第一个方案中将weight设置为3,在第二个方案中设置weight为1,那么第二个方案将有25%的执行概率,而第一个方案将有75%的执行概率。

再加上arrivalRate参数,并将rampTo的值设置为2,将导致每秒执行两个场景,如果您将这两个场景的权重设置为1,则这两个场景将同时执行。

向下查找documentation中的场景权重

代码语言:javascript
复制
scenarios:
  - flow:
       - log: Scenario for GET requests
       - get: 
            url: /v1/url_test_1
        name: Scenario for GET requests
        weight: 1
  - flow:
       - log: Scenario for POST requets
       - post:
             json: {}
             url: /v1/url_test_2
        name: Scenario for POST
        weight: 1

我希望这对你有帮助。

票数 0
EN

Stack Overflow用户

发布于 2021-03-16 16:55:03

您可以使用per endpoint metrics插件为您提供每个端点的结果,而不是聚合。

https://artillery.io/docs/guides/plugins/plugin-metrics-by-endpoint.html

我看到你的配置中已经有这个了,但是如果它不能给你你需要的东西,它就不能工作。你安装它并添加到配置中了吗?

代码语言:javascript
复制
npm install artillery-plugin-metrics-by-endpoint

在顺序运行方面,我不确定你为什么要这样做,但假设你这样做了,你只需要将每个帖子定义为相同场景的一部分,而不是两个不同的场景。这样,第二步只会在第一步响应之后执行。我相信这个插件是针对每个端点的,而不是针对每个场景的,所以仍然会给出你想要的报告。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56936882

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档