📅  最后修改于: 2023-12-03 15:17:07.439000             🧑  作者: Mango
K6 是一个现代的开源负载测试工具,它使用类似 JavaScript 的语法编写测试脚本。它支持 HTTP、WebSocket、gRPC、TCP 等协议的测试,并且具有实时性和高并发性。在这篇文章中,我们将探讨如何使用 K6 来控制实时测试。
首先,我们需要在项目中引入 K6:
import http from 'k6/http';
import { check } from 'k6';
http
模块用于发起 http 请求,check
是 K6 提供的一个有用的功能,用于在测试过程中检查断言。
接下来,我们编写一个测试脚本 realtime.js
,该脚本将不断地发起 http 请求,直到得出测试结果为止。具体步骤如下:
export let options = {
vus: 100,
duration: '30s',
};
该代码片段中,我们设置了 100 个用户同时进行测试,并且测试时长为 30 秒。
export default function () {
let res = http.get('http://test.com/api');
check(res, {
'status is 200': (r) => r.status === 200,
});
}
该代码片段中,我们在每个用户都会执行的 default
函数中发起了一个 http 请求,请求 http://test.com/api
接口。接着,我们使用 check
检查请求状态是否为 200。
k6 run realtime.js
这个命令将运行 realtime.js
测试脚本。在执行过程中,我们可以看到 K6 实时输出的测试结果:
running (0s), 00/100 VUs, 0 complete and 0 interrupted iterations
running (1s), 75/100 VUs, 3008 complete and 0 interrupted iterations
running (2s), 100/100 VUs, 6021 complete and 0 interrupted iterations
...
completed ✓
duration: 30s
iterations: 9296
vus: 100
start_time: 2021-10-19T06:02:42Z
end_time: 2021-10-19T06:03:12Z
data_received: 4.1MB
data_sent: 326kB
http_reqs: 9296
http_req_duration_avg: 371.25ms
http_req_duration_max: 6.40s
http_req_duration_min: 5.51ms
http_req_duration_p50: 226.7ms
http_req_duration_p90: 692.97ms
http_req_duration_p95: 1.36s
http_req_duration_p99: 3.33s
http_req_failed: 0
http_req_loading_time_avg: 348.35ms
http_req_loading_time_max: 2.79s
http_req_loading_time_min: 146.94ms
http_req_loading_time_p50: 237.79ms
http_req_loading_time_p90: 588.34ms
http_req_loading_time_p95: 1.03s
http_req_loading_time_p99: 2.11s
http_req_sending_time_avg: 4.49ms
http_req_sending_time_max: 259.46ms
http_req_sending_time_min: 0.42ms
http_req_sending_time_p50: 1.23ms
http_req_sending_time_p90: 5.58ms
http_req_sending_time_p95: 10.83ms
http_req_sending_time_p99: 61.36ms
http_req_tls_handshaking_time_avg: 0s
http_req_tls_handshaking_time_max: 0s
http_req_tls_handshaking_time_min: 0s
http_req_tls_handshaking_time_p50: 0s
http_req_tls_handshaking_time_p90: 0s
http_req_tls_handshaking_time_p95: 0s
http_req_tls_handshaking_time_p99: 0s
iterations_per_second: 309.87
vus_max: 100
在本文中,我们介绍了如何使用 K6 来控制实时测试。首先,我们引入了 K6,然后编写了一个测试脚本,最后使用 k6 run
命令运行测试脚本。如果你希望了解更多关于 K6 的信息,可以访问官方网站 https://k6.io/。