2

我正在处理一些测试要求,当 p95>100ms 时我必须使负载测试场景失败。我写了下面的测试片段:

config:
  target: "https://news.google.com"
  # Responses have to be sent within 10 seconds or the request will be aborted
  timeout: 10
  ensure:
      p95: 800
  phases:
    - duration: 10
      arrivalRate: 1

scenarios:
  - name: "Hit news google"
    flow:
    - get:
          url: "/dssw.js_data?_reqid=34556&rt=j"
          expect:
            - statusCode: 300
            - contentType: json

我希望这个测试场景在某种报告中可见,因为有多少测试用例失败并通过。Artillery 生成的报告仅显示性能统计信息,但如何根据测试性能断言显示报告在某种报告中失败。

4

1 回答 1

2

一种选择是在 javascript 中实现一个钩子,它查看状态代码,如果认为状态为失败,则通过函数返回错误next

示例 js 钩子函数:

function exitOnFail(requestParams, response, context, ee, next) {
  const statusCode = parseInt(response.statusCode);
  if (statusCode > 399) {
    next(new Error(`${requestParams.url} StatusCode: ${statusCode}`));
  } else {
    next();
  }
}

并将钩子连接到请求:

config:
 ...
 processor: './scriptfile.js'

 ...

scenarios:
  - flow:
    - get:
        url: some/url
        ...
        afterResponse: 'exitOnFail'


于 2021-04-05T15:47:18.833 回答