mcpField
L
load-testing-apis

load-testing-apis

github.com/jeremylongshore测试与质量2.9k42 次安装2 天前更新
代码仓库

关于 load-testing-apis

用于规划和分析 API 负载、压力及浸泡测试的技能,可生成 k6、Artillery 等工具的脚本,模拟流量并按阈值报告性能与瓶颈。

主要功能

  1. 01规划负载、压力和浸泡测试
  2. 02生成 k6 与 Artillery 脚本
  3. 03配置流量场景
  4. 04设置通过与失败阈值
  5. 05生成性能和瓶颈报告

适用场景

  1. 01依据 SLO 衡量 API 性能
  2. 02测试 API 应对流量突增的能力
  3. 03查找持续负载测试中的瓶颈

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/jeremylongshore/tons-of-skills-marketplace --skill load-testing-apis

安装后在 Claude Code 中输入/load-testing-apis确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
errors.md
examples.md
implementation.md

详细介绍

API 负载测试

概述

执行全面的负载、压力和浸泡测试,以验证 API 性能、找出瓶颈并建立吞吐量基准。生成适用于 k6、Artillery 或 wrk 的测试脚本,通过可配置的虚拟用户递增、请求分布和失败阈值断言来模拟真实流量模式。

前置条件

  • 已安装负载测试工具:k6(推荐)、Artillery、wrk 或 Apache JMeter
  • 目标 API 已部署在预发布或性能测试环境中(除非有防护措施,否则切勿对生产环境进行负载测试)
  • 可访问监控系统:Grafana/Prometheus、Datadog 或 CloudWatch,用于将测试结果与服务器指标相关联
  • 用于测试的 API 身份验证凭据(API 密钥、测试用户 JWT 令牌)
  • 已定义性能基准 SLO(目标 p95 延迟、最大错误率、最低吞吐量)

说明

  1. 使用 Glob 和 Read 阅读 API 规范和路由定义,整理完整的端点清单,并找出高流量路径和资源密集型操作。
  2. 定义模拟真实用户行为的测试场景:浏览(80% 为读取操作)、结账(读写混合)和流量激增模式,并为请求之间设置合适的思考时间。
  3. 生成 k6 或 Artillery 测试脚本,并配置各阶段:递增(2 min)、持续负载(10 min)、流量激增(以 3x 负载持续 2 min)和降载(2 min)。
  4. 配置请求分布以匹配生产流量模式——按权重在各端点间随机选择,而非均匀分布。
  5. 为通过/失败标准添加阈值断言:p95 响应时间 < 500ms、错误率 < 1%、吞吐量 > 100 requests/second。
  6. 使用 CSV 或 JSON 测试数据固定文件实现数据驱动请求,包括真实的负载数据、唯一用户 ID 和多样化的查询参数,避免测试只依赖缓存。
  7. 在预期生产负载下执行基准测试,然后逐步提升到 2x、5x 和 10x,以找出临界点和饱和行为。
  8. 分析结果:将延迟峰值与服务器指标(CPU、内存、DB 连接、事件循环延迟)相关联,找出瓶颈(数据库、网络、计算),并记录分析结果。
  9. 生成性能报告,将测试结果与 SLO 阈值进行比较,并提出优化建议。

完整实现指南请参阅 ${CLAUDE_SKILL_DIR}/references/implementation.md。

输出

  • ${CLAUDE_SKILL_DIR}/load-tests/scenarios/ - 按流量场景划分的 k6/Artillery 测试脚本
  • ${CLAUDE_SKILL_DIR}/load-tests/data/ - 测试数据固定文件(用户、负载数据、令牌)
  • ${CLAUDE_SKILL_DIR}/load-tests/thresholds.json - 通过/失败阈值配置
  • ${CLAUDE_SKILL_DIR}/reports/load-test-results.json - 包含计时数据的原始测试结果
  • ${CLAUDE_SKILL_DIR}/reports/load-test-summary.md - 易读的性能分析报告
  • ${CLAUDE_SKILL_DIR}/reports/bottleneck-analysis.md - 已识别的瓶颈及修复建议

错误处理

错误原因解决方案
连接被拒绝目标服务器的文件描述符耗尽或连接池已满提高服务器的 ulimit 和连接池大小;注意并发连接限制
递增负载时出现超时峰值服务器无法处理连接建立速率提前预热连接;延长递增时长;添加连接池
429 响应占据结果的大部分负载测试期间触发了速率限制器在速率限制器中将负载测试源 IP 加入白名单;或单独测试速率限制器行为
基准测试结果不一致共享的预发布环境中存在其他流量隔离测试环境;在非工作时间运行测试;使用专用性能测试环境
检测到内存泄漏浸泡测试显示内存持续数小时增长通知开发团队;通过隔离测试场景找出发生泄漏的端点

详细的错误模式请参阅 ${CLAUDE_SKILL_DIR}/references/errors.md。

示例

电商结账流程:模拟 500 个并发用户浏览商品(GET,占 70%)、加入购物车(POST,占 20%)和完成结账(POST,占 10%),并在操作间设置 2–5 秒的思考时间。

API 突发测试:在 30 秒内将虚拟用户数从 50 提升至 1000,以模拟营销活动上线带来的流量激增,验证自动扩缩容是否响应,以及延迟能否在 60 秒内恢复。

内存泄漏浸泡测试:让 200 个并发用户持续运行 4 小时,监控服务器内存、连接数和响应时间,查找表明资源泄漏的性能退化模式。

更多示例请参阅 ${CLAUDE_SKILL_DIR}/references/examples.md。

资源

评论

支持 Markdown