用 k6 对“http_req_duration”的偏差进行阈值化?

Posted

技术标签:

【中文标题】用 k6 对“http_req_duration”的偏差进行阈值化?【英文标题】:Thresholding the deviation in `http_req_duration` with k6? 【发布时间】:2020-03-30 22:46:00 【问题描述】:

我想使用k6 创建一个自定义指标,用于对服务进行负载测试。我想测量旧版本(代码更改之前)和新版本(代码更改)之间的http_req_duration 之间的偏差,并对差异设置一个阈值。可以在k6 做吗?如果是,我应该怎么做?

【问题讨论】:

【参考方案1】:

使用下面的代码:

import http from "k6/http";
import Trend from "k6/metrics";

var diffT = new Trend("DiffTrend", true); // this true is just so in the summary it shows them as times

var oldURL = "https://test.loadimpact.com";
var newURL = "https://test.k6.io";

export default function() 
    // you can use http.get, but this way the two requests will be done at the same time which will save time and probably be a better comparison
    var res = http.batch([
        ["GET", oldURL, null, "tags": "varaint": "old"],
        ["GET", newURL, null, "tags": "varaint": "new"],
    ])
    diffT.add(res[0].timings.duration - res[1].timings.duration);

您可以通过两种不同的方式使用它:

    使用可能是最简单的 diffT 指标,但我认为除了最简单的情况外,它不会有任何好处,因为它只处理请求差异的请求,而不是整体情况......但是你将 10 个请求区分到同一个 API,这可能已经足够了。

    您可以使用标签“variant”来区分和比较新旧请求之间的每个和所有请求的任何指标。这是 IMO 更好的方法,使用 Grafana 会更强大,并为您提供更好的画面。

【讨论】:

以上是关于用 k6 对“http_req_duration”的偏差进行阈值化?的主要内容,如果未能解决你的问题,请参考以下文章

使用 k6 测试 graphql 订阅

golang性能测试框架k6源码分析

开源负载测试工具k6比JMeter更容易的5件事

开源负载测试工具k6比JMeter更容易的5件事

如何在k6工具中模拟/脚本AD集成SSO登录

K6:测试生命周期中的授权