K6 压力测试工具入门指南:安装与基础使用
K6 压力测试工具入门指南:安装与基础使用 K6 是一款由 Grafana 实验室开发的高性能开源负载测试工具,适用于 API、微服务和网站的性能测试。它采用 JavaScript 编写脚本,支持高并发模拟,适合 DevOps 流程。 安装方法: Windows:通过 Chocolatey (choco install k6) 或手动下载安装包 macOS/Linux:使用 Homebrew (b
·
K6 压力测试工具入门指南:安装与基础使用
1. 什么是 K6?
K6 是一款由 Grafana 实验室开发的开源 现代化负载测试工具,专为开发者和测试人员设计,用于对 API、微服务和网站进行性能测试。
与传统的 JMeter 不同,K6 具有以下优势:
- 脚本化测试:用 JavaScript(ES6)编写测试用例,灵活易用。
- 高性能:基于 Go 语言开发,单机可模拟数万并发用户。
- 开发者友好:支持 CI/CD 集成,适合 DevOps 流程。
2. 安装 K6
2.1 Windows 安装
方法 1:通过Powershell安装 Chocolatey(推荐)
# 安装 Chocolatey(如果未安装)
Set-ExecutionPolicy Bypass -Scope Process -Force
[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072
iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
# 安装 K6
choco install k6
方法 2:手动下载
- 访问 https://k6.io/docs/get-started/installation/
- 下载 Windows 版
.msi
安装包并运行。
2.2 macOS/Linux 安装
macOS(Homebrew)
brew install k6
Linux(Debian/Ubuntu)
sudo apt-get update
sudo apt-get install k6
2.3 验证安装
运行以下命令检查是否安装成功:
k6 version
输出类似 v1.1.0
的版本号即表示安装成功。
3. 第一个 K6 测试脚本
3.1 创建测试文件
新建一个名为 ceshi.js
的文件,内容如下:
import http from 'k6/http';
import { check } from 'k6';
export default function () {
// 测试访问一个公共的测试API(无需认证)
const res = http.get('https://httpbin.org/get');
// 验证响应
check(res, {
'状态码是200': (r) => r.status === 200,
'响应时间合理': (r) => r.timings.duration < 500, // 要求响应时间<500ms
});
}
3.2 运行测试
在终端中执行:
k6 run ceshi.js
3.3 预期输出
✓ 状态码是200
✓ 响应时间合理
checks_succeeded: 100.00%
表示所有检查通过。http_req_duration: avg=293.94ms
显示平均响应时间。
4. 进阶:并发测试
修改 test.js
,模拟 10个并发用户持续30秒:
import http from 'k6/http';
import { check, group } from 'k6';
export const options = {
vus: 10,
duration: '30s',
thresholds: {
http_req_failed: ['rate<0.1'], // 失败率阈值
http_req_duration: ['p(95)<1000']
}
};
export default function () {
group('API测试', () => {
const res = http.get('https://httpbin.org/get');
check(res, {
'状态码200': (r) => r.status === 200,
'响应有效': (r) => r.json().url === 'https://httpbin.org/get'
});
});
}
export function handleSummary(data) {
// 防御性编程 + 新版数据格式兼容
const metrics = data.metrics || {};
const httpReqs = metrics.http_reqs || { values: { count: 0, rate: 0 } };
const vusMax = metrics.vus_max || { values: { value: 0 } };
const failedRate = metrics.http_req_failed ? metrics.http_req_failed.rate : 0;
return {
stdout: [
'\n█ 核心指标',
`吞吐量(RPS): ${httpReqs.values.rate.toFixed(1)}/s`,
`最大并发量: ${vusMax.values.value}`,
`失败率: ${(failedRate * 100).toFixed(2)}%`,
`总请求数: ${httpReqs.values.count}`,
'\n█ 延迟指标',
`平均延迟: ${metrics.http_req_duration.values.avg.toFixed(0)}ms`,
`P95延迟: ${metrics.http_req_duration.values['p(95)'].toFixed(0)}ms`
].join('\n')
};
}
运行命令:
k6 run test.js
输出将显示 吞吐量(RPS) 和 系统并发量。
5. k6关键术语解释表
术语 | 缩写/符号 | 含义 | 示例值 |
---|---|---|---|
Virtual Users | VUs | 模拟的并发用户数量 | 1 max VUs |
Iteration | iter | 单个虚拟用户完整执行一次脚本的周期 | 1 iterations |
Duration | - | 测试运行的总时间(含缓冲停止时间) | 10m30s max duration |
Checks | ✓/✗ | 断言检查结果(✓通过,✗失败) | ✓ 状态码是200 |
http_req_duration | - | HTTP请求耗时(从发送到接收响应的时间) | avg=290.89ms |
Percentile | p(90)/p(95) | 百分位延迟(如p(95)表示95%请求快于此值) | p(95)=290.89ms |
Throughput | RPS | 吞吐量(Requests Per Second,每秒请求数) | 0.752831/s |
Data Received | - | 接收的数据量(通常为响应体大小) | 4.9 kB |
Data Sent | - | 发送的数据量(通常为请求头+请求体大小) | 601 B |
Graceful Stop | - | 优雅停止时间(测试结束时逐步停止VU的缓冲期) | gracefulStop: 30s |
6. 总结
以下是通过本文完成的目标:
- 安装 K6(Windows/macOS/Linux)。
- 编写第一个测试脚本(验证HTTP请求)。
- 运行并发测试(模拟多用户压力)。
更多推荐
所有评论(0)