用途
本技能用于对 API、Web 服务和分布式系统进行负载测试、压力测试与性能基准测试。当用户提出加载测试 API、对服务器做压力测试、对某个端点做基准测试、运行性能测试或创建 k6 脚本等需求时使用。
性能测试类型
资料给出五种测试类型及其目的、模式和时长:
- 负载测试:验证预期并发用户数,逐步提升到目标负载,持续 15-60 分钟。
- 压力测试:寻找系统崩溃点,将负载提升到超出预期容量,持续 30-60 分钟。
- 尖峰测试:应对突发流量激增,瞬间跳到峰值负载,持续 5-15 分钟。
- 浸泡测试:检测内存泄漏、资源耗尽,保持中等稳定负载,持续 4-24 小时。
- 断点测试:确定最大容量,逐步递增直到失败为止。
关键指标
- 吞吐量:系统每秒处理的请求数(RPS)。
- 延迟百分位:p50、p90、p95、p99 响应时间。
- 错误率:失败请求占比,目标低于 1%。
- 并发用户数:同时活跃的连接数。
- Apdex 分数:应用性能指数,取值 0 到 1。
测试阶段通常分为 Ramp-Up(爬坡)、Hold(稳态,在此测量)和 Ramp-Down(回落)三个阶段。
支持的工具与使用方式
k6(Grafana k6)
资料将 k6 列为大多数负载测试场景的推荐工具,使用 JavaScript 编写测试脚本。安装方式包括 macOS 的 brew、Linux(Debian/Ubuntu)的 apt 仓库、Docker 和 Windows 的 choco。基本测试通过 options 中的 stages 定义爬坡/稳态/回落,用 thresholds 定义 p95、p99 延迟、错误率和吞吐量阈值;脚本内用 check 做断言,sleep 模拟思考时间。运行方式为 k6 run,可用 -e 传环境变量、--vus 与 --duration 覆盖脚本参数。
k6 还支持高级场景(constant-arrival-rate、ramping-arrival-rate、ramping-vus 等执行器及自定义 Rate、Trend 指标)、文件上传与 multipart 测试、WebSocket 测试(k6/ws)、gRPC 测试(k6/net/grpc),并可将结果输出为 JSON、CSV,或写入 InfluxDB(供 Grafana 面板使用)、通过 Remote Write 写入 Prometheus,且支持多输出同时使用。
Artillery
适合偏好 YAML 配置且需要内置 HTTP、WebSocket、Socket.IO 等协议支持的团队。通过 npm 全局安装或 npx 运行。配置中可定义 target、phases(含 arrivalRate)、defaults 请求头、ensure.thresholds 阈值,以及带 weight 的多种 scenario 流程(get、post、think、capture、expect)。运行命令包括 artillery run,可用 --target 覆盖目标、--output 生成 JSON 再转换为 HTML 报告;也支持 artillery quick 快速测试。可配合 processor 指定自定义 JavaScript 处理器生成测试数据。
JMeter
基于 Java 的工具,适合复杂测试计划,提供 GUI 设计界面和 CLI 执行方式。资料推荐在 CI/CD 中使用非 GUI 模式:jmeter -n -t test-plan.jmx -l results.jtl -e -o report/,可用 -J 传入线程数、爬坡、时长、主机等属性,或用 jmeter -g 从结果生成 HTML 报告。测试计划结构包括线程组、HTTP 请求默认值、HTTP 头管理器、CSV 数据源、HTTP 请求、响应断言、JSON 提取器以及汇总/聚合报告等。
Locust
适合 Python 团队,用 Python 代码定义用户行为。通过 pip 安装。示例中定义 HttpUser 子类,wait_time 设置思考时间,on_start 中登录并保存 token,用 @task 设置任务权重、@tag 分组。可带 Web UI 运行,也可用 --headless 配合 -u、-r、--run-time、--host、--csv 做 CI/CD 无头运行,支持按 --tags 筛选,并支持 --master/--worker 分布式模式。
wrk 与 wrk2
轻量级高性能 HTTP 基准测试工具,用于最大吞吐量测试。安装示例为 macOS 的 brew install wrk。基本用法 wrk -t12 -c400 -d30s <url>,可加 --latency 查看延迟分布,或用 -s 加载 Lua 脚本自定义请求(如 POST 请求、动态请求生成、自定义统计输出)。wrk2 通过 -R 维持恒定请求速率。
ab(Apache Bench)
用于快速测试。资料中该部分内容被截断,具体使用方式暂未提供。
适用场景
- 验证 API 或 Web 服务在预期并发下的表现。
- 寻找系统崩溃点或最大容量。
- 应对流量突发或长时间运行的资源泄漏检测。
- 在 CI/CD 中执行无头性能测试并生成报告。
限制
资料未说明各工具的具体版本要求、许可条款、收费与价格信息,也未提供平台兼容性的完整清单;ab 部分的说明不完整。