前言
近几年,k6
测试工具逐步出现在我们的视野中。其被人们称为新一代负载测试工具,对 Jmeter
、Locust
、Wrk
等传统负载测试工具提出了挑战。
关于 k6
k6
是用 Go
语言开发,使用 JavaScript
作为驱动脚本来进行负载测试的工具。其作为后起之秀,拥有灵活性高、并发能力强等特点。唯一的要求就是使用者需要熟悉 JavaScript
语法。
呆猫
安装 k6
Windows
windows
中 winget
是系统自带,但是速度堪忧;所以 windows
我建议使用 choco
安装 k6
,但是 choco
是需要我们手动安装的。
安装 choco
# cmd
@"%SystemRoot%System32WindowsPowerShellv1.0powershell.exe" -NoProfile -InputFormat None -ExecutionPolicy Bypass -Command "iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))" && SET "PATH=%PATH%;%ALLUSERSPROFILE%chocolateybin"
# powershell
Set-ExecutionPolicy Bypass -Scope Process -Force; iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
安装 k6
choco install k6
# 或者
winget install k6
MacOS
代码语言:javascript复制brew install k6
Linux
代码语言:javascript复制# apt系
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6
# dnf/yum系
sudo dnf install https://dl.k6.io/rpm/repo.rpm
sudo dnf install k6
# 或者
sudo yum install https://dl.k6.io/rpm/repo.rpm
sudo yum install k6
查看 k6
安装结果
k6 测试脚本
安装好了 k6
,我们就可以开始开发测试脚本了。
这个例子我们计划对 k6
官方测试接口进行负载测试。
import http from 'k6/http';
import { sleep } from 'k6';
export default function () {
http.get('http://test.k6.io');
sleep(1);
}
执行测试
测试命令
代码语言:javascript复制k6 run --vus 10 --duration 30s .demo.js
--vus
:虚拟用户数--duration
:持续测试时间
更多参数可以通过 k6 run --help
查询
测试结果指标
项目 | 释义 |
---|---|
data_received | k6 收到的数据和速率 |
data_sent | k6 发送的数据和速率 |
http_req_blocked | 请求发起前阻塞的时间 |
http_req_connecting | 和远程主机 TCP 链接所花费的时间 |
http_req_duration | 请求总共花费的时间,等于:发送 等待 接收 |
http_req_failed | 失败的请求比例和数量 |
http_req_receiving | 从远程主机接收数据花费的时间 |
http_req_sending | 数据发送到远程主机所花费的时间 |
http_req_tls_handshaking | 与远程主机 TLS 握手花费的时间 |
http_req_waiting | 等待远程主机响应所花费的时间 |
http_reqs | k6 总共生成的请求数和速率 |
iteration_duration | 完成一次测试花费的时间,包含 setup 和 teardown |
iterations | 测试中 VU 执行测试脚本的总次数 |
vus | 用户数范围 |
vus_max | 最大的虚拟用户数 |
对于如上的指标,我们比较关注的是 http_req_duration
(Time)、http_reqs
(TPS)。
对于以上测试,我们可以得出 Avg-Response-Time
是 622.59ms
、P90-Response-Time
是 1.05s
、TPS
为 7.6
。
以上就是我们今天的全部内容了,希望能够对你入门
k6
有所帮助。
参考:https://k6.io/docs/