附录J:接口与性能测试
CukeTest 支持结合 k6 负载引擎开展接口功能测试与性能压测。安装 k6 Dashboard & Runner 扩展后,可以直接在编辑器内编写测试脚本、启动压测,并查看实时监控仪表盘与 HTML 测试报告。

一、概述与工作机制
k6 是轻量且高性能的接口与负载测试引擎,测试脚本基于 JavaScript 或 TypeScript 编写。在实际测试中,同一套脚本既能单次执行校验接口功能,也能配置并发参数直接开展性能压测:
- 接口测试:发送请求并通过
check验证状态码、响应正文及业务字段,配合thresholds设置测试门禁。 - 性能测试:通过设置虚拟用户(VU)、加压阶段(Stages)或场景(Scenarios),模拟高并发与持续运行,统计吞吐量(RPS)、响应耗时和百分位时延。
二、安装与环境准备
在开展测试前,需要准备好 k6 引擎与 CukeTest 扩展:
- 安装 k6 引擎:本地安装 k6(可从 k6 官网 下载),并确保其在系统 PATH 中,或在扩展设置中手动指定 k6 可执行文件路径。
- 安装扩展插件:在 CukeTest 扩展面板中搜索并安装 k6 Dashboard & Runner。
- 运行配置:支持按需自定义 k6 可执行文件路径、仪表盘端口以及采样周期。
三、编写测试脚本
1. 常用协议支持
k6 原生支持常见的网络协议:
| 协议类型 | 支持方式 | 说明 |
|---|---|---|
| HTTP / HTTPS | 原生内置 | 支持 GET、POST、PUT、DELETE 等常用方法,以及 Header、Cookie 和 TLS 配置 |
| WebSocket | 原生内置 | 支持双向通信、消息收发与连接保活 |
| gRPC | 原生内置 | 支持基于 Protocol Buffers 的 RPC 调用 |
2. 检查点(Check)与测试门禁(Thresholds)
测试脚本中主要通过两项机制来判定系统表现是否达标:
- Check(检查点):针对单次请求进行断言,比如检查 HTTP 状态码或响应内容。检查失败不会中断压测执行,只会统计到失败率中。
- Thresholds(阈值):设定整个测试运行的合格指标(例如“95% 的请求响应时间低于 500ms”或“错误率低于 0.5%”)。任何一项阈值不满足,测试结束时都会返回非零状态码,直接阻断流水线。
3. 多阶段加压模型(Stages)
压测通常不是一上来就打满并发。通过 stages 配置,可以模拟真实的流量变化过程:
- 预热:并发数平缓上升,让数据库连接池和应用缓存建立起来。
- 持续负载:保持目标并发稳定运行一段时间,观察系统吞吐与稳定性。
- 流量峰值(浪涌):短时间内把并发拉到高位,测试服务的瞬时抗压能力。
- 降压收尾:逐步释放连接,确认服务在压力回落后资源能否正常回收。
4. 指标体系与自定义指标
压测时 k6 会自动收集网络与请求指标:
| 指标名称 | 含义 | 说明 |
|---|---|---|
http_reqs |
请求数与请求速率(RPS) | 统计每秒发送和完成的请求量 |
http_req_duration |
响应耗时 | 涵盖网络连接、服务端处理及数据传输的总耗时 |
http_req_failed |
失败率 | 发生超时或返回错误状态码的请求比例 |
vus / vus_max |
并发用户数 | 当前活跃及配置的最大虚拟用户数 |
data_received / data_sent |
网络传输量 | 上行与下行流量统计 |
iterations |
迭代次数 | 脚本完整跑完的次数,可反映业务事务速率(TPS) |
百分位时延
平均响应时间容易被极端慢请求拉偏,实际分析中通常更看重百分位指标:
- P50:中位数,代表一半用户的体验。
- P90 / P95:常作为接口响应达标的基准线。
- P99:长尾延迟,帮助发现偶发的性能抖动或锁竞争。
自定义业务指标
除了底层网络请求指标,很多时候还需要关注上层业务行为(比如“下单成功率”或“支付耗时”)。k6 提供了几类自定义指标:

- Counter(计数器):累计计数,如业务失败总笔数。
- Rate(比例):统计百分比,如特定业务流程的成功率。
- Trend(耗时趋势):统计平均值及各百分位耗时,如订单处理时间。
- Gauge(仪表值):记录瞬时值,如当前连接数或剩余库存。
5. 结合智能体编写与调优脚本
编写复杂的加压逻辑或处理长接口链时,可以让 CukeTest 智能体 协助:
- 从接口定义生成脚本:将 Swagger/OpenAPI 文档、cURL 命令或接口说明直接发给智能体,让其生成带有请求、参数和
check断言的测试脚本。 - 配置加压策略与阈值:用自然语言说明测试目标(例如“压测 5 分钟,先从 0 爬升到 100 VU,P95 响应时间不能超过 200ms”),由智能体转换成对应的
stages和thresholds配置。 - 关联传参与错误排查:协助处理登录 Token 提取、数据驱动参数化,并在脚本报错时快速定位问题。
四、测试执行与结果分析
脚本编写完成后,可以在扩展仪表盘中选择本地脚本启动压测,并支持随时停止任务。
1. 实时监控看板
测试运行时,扩展面板会实时呈现各项关键指标走势:
- 实时概况:当前的并发数(VU)、请求吞吐(RPS)及整体错误率。
- 时延曲线:实时响应耗时以及 P90、P95 曲线,方便定位耗时突增的时间点。
- 状态码分布:直观查看 2xx 成功请求与 4xx/5xx 异常比例。
- 自定义指标:按业务模块分别查看成功率和处理耗时。

2. 离线 HTML 报告
压测结束后,扩展会在脚本目录下生成一份单文件 HTML 报告,可以在面板中单击直接打开查看。报告包含完整的时序图表与各项指标统计,可直接分享或归档:


五、分布式执行分片
如果单台机器的 CPU 或网络带宽跑不满目标压力,可以利用 k6 的执行分片(Execution Segment)机制,将测试负载横向拆分到多台机器执行:
- 按比例分片:把总体并发按比例切分,各节点分别运行自己的分片任务。
- 多机协同发压:各执行节点配置相同的测试脚本,接收统一指令后同时进入加压阶段,合力达到预期并发规模。
六、与 GUI 自动化的分工协同
在完整的测试工程中,不同层级的测试侧重点各有不同:
| 测试类型 | 侧重点 | 优势与局限 | 典型场景 |
|---|---|---|---|
| 接口测试 | 数据校验、状态流转、异常边界 | 执行极快,定位精准,但无法验证界面渲染和前端交互 | 日常构建验证、代码合并门禁 |
| 性能测试 | 系统承载力、并发时延、服务稳定性 | 能模拟大量并发流量,但需要专门规划加压模型与资源环境 | 容量评估、架构调优、大促与上线前压测 |
| GUI 自动化测试 | 真实用户体验、跨页面流程闭环 | 最贴近用户操作,但执行时间较长、维护成本较高 | 核心业务冒烟、主流程回归 |
实际落地时,通常建议分层实施:先用接口测试覆盖大部分业务逻辑和异常分支,确保核心服务可用;在此基础上复用脚本执行基准压测;最后通过 CukeTest 的 桌面与 Web 自动化能力 跑通关键的 UI 端到端主流程。