在GitHub Action中使用K6时测试脚本应使用哪个URL
需求可行性结论
该需求完全可实现。K6原生定位就是API性能测试工具,各类入门教程中用普通网页URL做示例仅为降低上手门槛,不存在只能测试静态网页的限制,完全支持对自有REST、GraphQL、gRPC等各类协议的API做压力测试,结合GitHub Action可以很方便地嵌入生产部署前的卡点流程。
完整实现方案
1. 编写适配自有API的K6测试脚本
和测试普通网页的逻辑区别仅在于请求地址、请求方法、请求参数、响应断言的配置调整,核心压测逻辑完全一致。基础脚本示例如下:
import http from 'k6/http'; import { check, sleep } from 'k6'; // 压测配置,可根据需求调整并发数、压测时长、性能阈值 export const options = { vus: 50, // 模拟50个并发用户 duration: '30s', // 持续压测30秒 thresholds: { http_req_failed: ['rate<0.01'], // 接口错误率必须低于1% http_req_duration: ['p(95)<500'], // 95%的请求响应时间必须低于500ms }, }; export default function () { // 替换为你的自有API路径,支持GET/POST/PUT/DELETE等所有HTTP方法 const res = http.post(`${__ENV.TARGET_API_URL}/user/login`, JSON.stringify({ username: 'test_user', password: 'test_pass' }), { headers: { 'Content-Type': 'application/json' } }); // 自定义接口响应校验规则 check(res, { 'login success': (r) => r.status === 200, 'response has token': (r) => r.json('data.token') !== '', }); sleep(1); }
如果你的API需要鉴权,不要把密钥硬编码在脚本中,后续通过环境变量注入即可。
2. 配置GitHub Action工作流
工作流建议配置为生产部署任务的前置依赖,只有压测通过才会触发后续生产部署步骤。注意不要直接把压测请求打向正在运行的生产环境,推荐先把待发布版本部署到和生产配置1:1对齐的预发布环境,再对预发布环境执行压测。基础工作流配置示例:
name: Pre-deploy K6 Load Test on: push: tags: - 'v*.*.*' # 打生产版本标签时触发,可根据你的部署触发规则调整 jobs: k6-load-test: runs-on: ubuntu-latest steps: - name: Checkout code uses: actions/checkout@v4 - name: Run K6 test uses: grafana/k6-action@v0.3.1 with: filename: ./load-test/script.js # 你的K6脚本存放路径 env: TARGET_API_URL: ${{ secrets.STAGING_API_URL }} // 预发布环境地址存在GitHub密钥中 API_TOKEN: ${{ secrets.TEST_API_TOKEN }} // 接口鉴权密钥同样从密钥读取 // 压测通过后再添加后续生产部署步骤即可
3. 卡点规则配置
脚本中thresholds字段定义的性能阈值会直接决定K6进程的退出码,只要压测结果不满足你预设的错误率、响应时间要求,K6就会返回非0退出码,GitHub Action会直接标记任务失败,阻断后续生产部署流程,实现自动卡点。
测试脚本的目标URL选择规则
- 优先选择和生产环境规格、配置完全一致的预发布(Staging)环境API地址:这是部署前压测的最优选择,既不会影响线上真实用户,压测结果也具备足够的参考价值,能提前发现版本性能问题。
- 禁止在无防护的情况下直接使用生产环境URL:部署前流程直连生产压测很容易打垮线上服务、影响正常用户访问,如果确实需要做线上压测,必须单独配置流量隔离、服务熔断、数据隔离逻辑,放在专门的压测时段执行。
- 轻量校验可选择PR预览环境地址:如果你的CI流程会为每个Pull Request生成独立的临时预览部署环境,也可以将压测目标指向该地址,在代码合入前就做基础的接口性能校验。
内容的提问来源于stack exchange,提问作者Simon Balling
相关产品推荐
相关产品推荐

