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
标签,让您可以轻松过滤一部分请求。
我正在使用 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
标签,让您可以轻松过滤一部分请求。