炮兵:如何按顺序运行场景,并在同一文件中显示每个场景的结果?
我目前正在使用artillery.io编写nodejs测试,以比较我实现的两个端点之间的性能。我定义了两个场景,我希望在相同的报告文件中获得每个场景的结果。测试的执行是不连续的,这意味着在测试结束时,我已经有了一个组合的结果,除了所有的结果之外,不可能知道每个结果的性能。
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}}'如何按顺序运行场景,并在同一文件中显示每个场景的结果?
提前感谢您的回答
发布于 2021-01-07 02:32:24
据我所知,在现有的火炮逻辑下,没有一个好的方法来做到这一点。
使用此测试脚本:
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所以基本上你可以看到它们的权重是相等的,但运行起来并不一样。因此,我认为炮兵的代码本身需要添加一些东西。很高兴在这里犯了错。
发布于 2020-04-23 15:28:12
我想你错过了参数weight,这个参数定义了执行场景的概率。如果在第一个场景中将权重设置为1,在第二个场景中设置相同的值,则两者执行的概率都相同(50%)。
如果您在第一个方案中将weight设置为3,在第二个方案中设置weight为1,那么第二个方案将有25%的执行概率,而第一个方案将有75%的执行概率。
再加上arrivalRate参数,并将rampTo的值设置为2,将导致每秒执行两个场景,如果您将这两个场景的权重设置为1,则这两个场景将同时执行。
向下查找documentation中的场景权重
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我希望这对你有帮助。
发布于 2021-03-16 16:55:03
您可以使用per endpoint metrics插件为您提供每个端点的结果,而不是聚合。
https://artillery.io/docs/guides/plugins/plugin-metrics-by-endpoint.html
我看到你的配置中已经有这个了,但是如果它不能给你你需要的东西,它就不能工作。你安装它并添加到配置中了吗?
npm install artillery-plugin-metrics-by-endpoint在顺序运行方面,我不确定你为什么要这样做,但假设你这样做了,你只需要将每个帖子定义为相同场景的一部分,而不是两个不同的场景。这样,第二步只会在第一步响应之后执行。我相信这个插件是针对每个端点的,而不是针对每个场景的,所以仍然会给出你想要的报告。
https://stackoverflow.com/questions/56936882
复制相似问题