K6 - 每个 api 请求的结果分解

K6 - breakup of results for each api request

我正在使用 HTTP 请求调用为一个工作流开发负载测试。在工作流中,一个 API 调用的响应在下一个 API 的调用中用作参数或请求正文。所以,API的调用顺序很重要。

我的问题是关于结果的。 K6 中是否有任何机制可以分解执行每个 API 调用所花费的时间?

是的,您可以按(默认或自定义)标签过滤指标。这是一个例子:

import { check } from 'k6';
import 'http' from 'k6/http';

export const options = {
  thresholds: {
    'http_req_duration{name:${}/endpoint1}': [ 'avg>0' ], // arbitrary threshold
    'http_req_duration{name:${}/endpoint2}': [ 'avg>0' ],
  },
};

export default function() {
  const server = 'http://example.com';
  const token = http.get(http.url`${server}/endpoint1`).json('token');
  check(
    http.post(http.url`${server}/endpoint2`, 'token=' + token),
    {
      'token accepted': r => r.status === 200,
    });
}

带有 http.url 标签的字符串模板会自动为您的请求设置 name 标签,让您可以轻松过滤一部分请求。