关于 performance-testing
performance-testing 是一项指导应用、API 和基础设施性能测试的技能,涵盖负载、压力和耐久性测试。内容还包括指标分析、瓶颈定位及测试自动化。
主要功能
- 01负载、压力与耐久性测试
- 02工作负载和场景设计
- 03延迟与吞吐量分析
- 04资源与瓶颈分析
- 05性能回归自动化
适用场景
- 01按 SLA 测试 API 延迟
- 02在流量高峰前测定容量上限
- 03通过长时间测试发现内存泄漏
- 04在 CI/CD 中加入性能检查
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ 404kidwiz/ claude-supercode-skills --skill performance-testing安装后在 Claude Code 中输入/performance-testing确认已加载。
详细介绍
性能测试技能
目的
提供全面的性能测试专业知识,专攻应用、API 和基础设施系统的负载测试、压力测试和耐久性测试。验证系统在各种负载条件下的行为,并找出容量限制。
适用场景
- 开展负载测试,模拟并发用户
- 执行压力测试,找出系统崩溃点
- 运行耐久性测试,检测内存泄漏
- 验证系统在负载增加时的可扩展性
- 衡量响应时间和吞吐量指标
- 分析资源利用模式
示例
示例 1:电商平台负载测试
场景: 某电商平台正准备迎接黑色星期五,需要验证系统在预期流量 10 倍的情况下的性能。
实现:
- 分析历史流量模式,建立逼真的负载模型
- 使用 JMeter 为关键路径(浏览、购物车、结账)创建测试场景
- 模拟 10,000 个并发用户,并设置渐增阶段
- 在负载下测试数据库查询,并发现 N+1 问题
- 验证自动扩缩容触发条件和阈值
结果:
- 找出 3 个关键瓶颈(2 个数据库、1 个 API)
- 将平均响应时间从 2.3s 缩短至 450ms
- 验证系统可处理 50,000 个并发用户
- 确认自动扩缩容会在 45 秒内启动
示例 2:API 性能基准测试
场景: 某金融服务 API 需要验证其性能是否符合 SLA 要求(P99 <200ms)。
实现:
- 为所有 API 端点创建 k6 测试脚本
- 在不同并发级别(100、500、1000)下进行测试
- 分析响应时间分布(P50、P90、P95、P99)
- 对导致响应缓慢的数据库查询进行性能分析
- 实施查询优化和缓存
结果:
- 将 P99 延迟从 850ms 降至 145ms
- 将吞吐量从 500 RPS 提升至 2,500 RPS
- 所有端点均符合 SLA 要求
- 创建性能回归测试套件
示例 3:微服务混沌测试
场景: 某微服务架构需要验证在部分服务故障时的表现。
实现:
- 针对服务故障设计混沌测试场景
- 实施延迟注入和错误响应
- 测试断路器功能和恢复能力
- 验证优雅降级行为
- 衡量混沌情况下的端到端请求流程
结果:
- 找出 2 个未正确配置断路器的服务
- 验证各种故障场景下的恢复时间
- 确认系统会优雅降级(而非灾难性崩溃)
- 为每种故障模式记录恢复流程
最佳实践
测试设计
- 逼真的工作负载建模:根据生产流量分析建立负载模式
- 加入思考时间:在请求之间加入符合实际情况的用户停顿时间
- 数据参数化:使用多样化的测试数据,避免缓存伪象
- 全面覆盖:测试所有关键用户旅程,而不仅是顺利路径
执行
- 类生产环境:在配置与生产环境相匹配的环境中测试
- 适当预热:在测量前加入渐增阶段
- 延长测试时长:压力测试应运行足够长的时间,以发现问题
- 监控错误率:同时跟踪响应时间和错误率
分析
- 百分位数分析:报告 P50、P90、P95、P99,而不仅是平均值
- 基线比较:始终与已确立的基线进行比较
- 趋势跟踪:持续监控性能,而非只看单次快照
- 聚焦关键指标:跟踪与 SLA 相关的指标,避免指标过多
工具
- 维护测试:将测试视为生产代码,持续维护和更新
- 集成 CI/CD:在部署流水线中自动运行性能测试
- 提供充足资源:确保负载生成器能够产生所需负载
- 分析结果:实现自动化分析和告警
概述
性能测试专家,专注于应用程序、API 和基础设施系统的负载测试、压力测试与性能优化。
性能测试类型
负载测试
- 并发用户模拟
- 事务量测试
- 可扩展性评估
- 资源利用率分析
- 响应时间测量
压力测试
- 确定崩溃点
- 故障模式分析
- 恢复时间测量
- 资源耗尽测试
- 系统稳定性验证
耐久性测试
- 长期稳定性评估
- 内存泄漏检测
- 性能退化分析
- 资源增长监控
- 系统可持续性测试
性能测试工具
开源工具
- Apache JMeter - 全面的性能测试
- Gatling - 高性能负载测试
- k6 - 使用 JavaScript 进行现代负载测试
- Locust - 基于 Python 的负载测试
- WRK - HTTP 基准测试工具
商业解决方案
- LoadRunner Professional
- NeoLoad
- Silk Performer
- BlazeMeter
- WebLOAD
云端平台
- AWS Load Testing
- Azure Load Testing
- Google Cloud Load Testing
- k6 Cloud
- BlazeMeter Cloud
性能指标与分析
关键性能指标
# Example patterns for performance analysis
grep -r "response_time\|latency\|throughput" logs/ --include="*.log" --include="*.txt"
grep -r "cpu\|memory\|disk" monitoring/ --include="*.metrics" --include="*.json"
grep -r "concurrent\|connections\|requests" load_tests/ --include="*.js" --include="*.py"
响应时间分析
- 平均响应时间
- 中位数(第 50 百分位数)
- 第 90、95、99 百分位数分析
- 最大响应时间
- 响应时间分布
吞吐量指标
- 每秒请求数(RPS)
- 每秒事务数(TPS)
- 数据传输速率
- 并发用户容量
- 峰值负载处理能力
资源利用率
- CPU 使用率监控
- 内存消耗跟踪
- 磁盘 I/O 分析
- 网络带宽使用情况
- 数据库连接池
测试设计与执行
测试场景规划
- 用户旅程映射
- 业务流程建模
- 峰值负载模拟
- 加压策略
- 思考时间设置
负载配置设计
- 恒定负载模式
- 尖峰测试场景
- 渐进式加压负载
- 自定义负载曲线
- 真实流量模拟
测试数据管理
- 测试数据生成
- 参数化策略
- 数据多样化创建
- 数据库状态管理
- 隐私保护措施
特定应用测试
Web 应用性能
- 页面加载时间分析
- 资源加载优化
- JavaScript 执行性能
- CSS 渲染性能
- 第三方依赖的影响
API 性能测试
- RESTful API 测试
- GraphQL 性能
- SOAP Web 服务测试
- 身份验证开销
- 速率限制验证
数据库性能
- 查询优化
- 索引效率分析
- 连接池
- 数据库扩展
- 锁竞争分析
移动应用测试
- 网络状况模拟
- 设备性能差异
- 电池消耗分析
- 应用启动时间
- 内存使用模式
高级性能测试
分布式测试
- 多个负载生成器
- 地理分布
- 网络延迟模拟
- 带宽限制
- 基于云的负载生成
真实用户监控(RUM)
- 前端性能跟踪
- 用户体验指标
- 地理性能分析
- 特定设备的性能
- 浏览器兼容性影响
持续性能测试
- 与 CI/CD 集成
- 自动化回归测试
- 性能阈值验证
- 告警与通知
- 趋势分析与报告
性能分析与优化
瓶颈识别
- CPU 限制分析
- 内存优化
- I/O 瓶颈检测
- 网络延迟分析
- 数据库查询优化
性能分析与诊断
- 应用程序性能分析
- 系统调用分析
- 内存泄漏检测
- 线程竞争分析
- 垃圾回收调优
缓存策略
- 应用层缓存
- 数据库查询缓存
- 内容分发网络
- 浏览器缓存优化
- 分布式缓存实现
监控与可观测性
应用性能监控(APM)
- 实时性能跟踪
- 分布式追踪
- 错误率监控
- 自定义指标收集
- 性能仪表板
基础设施监控
- 服务器资源监控
- 网络性能跟踪
- 数据库性能指标
- 云资源利用率
- 容器性能分析
日志分析
- 性能相关日志模式
- 错误日志关联
- 访问日志分析
- 自定义性能日志记录
- 日志聚合与搜索
性能测试自动化
测试自动化框架
- JMeter 自动化
- Gatling 脚本编写
- k6 JavaScript 自动化
- 基于 Python 的自动化
- CI/CD 集成
持续集成
- 自动化测试执行
- 性能回归检测
- 自动化报告
- 阈值验证
- 故障通知系统
基于云的自动化
- 可扩展的负载生成
- 地理分布
- 按需资源配置
- 成本优化
- 多云策略
不同环境中的性能测试
开发环境
- 早期性能验证
- 单元级性能测试
- 本地基准测试
- 开发反馈循环
- 性能最佳实践
预发布环境
- 类生产环境测试
- 容量规划验证
- 性能回归测试
- 集成性能测试
- 部署前验证
生产环境监控
- 实时性能跟踪
- 性能 SLA 监控
- 用户体验测量
- 事件响应
- 性能优化周期
报告与文档
性能测试报告
- 执行摘要
- 详细测试结果
- 性能对比
- 瓶颈分析
- 优化建议
性能仪表板
- 实时指标展示
- 历史趋势分析
- SLA 合规性跟踪
- 资源利用率图表
- 用户体验指标
基准测试文档
- 基线性能指标
- 行业对比
- 竞争分析
- 性能目标设定
- 进度跟踪
特定行业专业知识
电商性能
- 购物车性能
- 结账流程优化
- 搜索功能测试
- 产品目录性能
- 支付处理优化
金融服务
- 交易系统性能
- 风险计算速度
- 报告生成性能
- 数据处理效率
- 监管合规要求
医疗保健系统
- 患者数据检索
- 医学影像性能
- 实时监控系统
- 数据隐私合规
- 系统可用性要求
交付成果
测试计划与场景
- 全面的测试策略
- 详细测试场景
- 负载配置文件规范
- 测试数据要求
- 执行计划
性能报告
- 详细分析报告
- 执行摘要
- 技术建议
- 优化路线图
- 性能基准
自动化框架
- 自定义测试脚本
- CI/CD 集成代码
- 监控设置配置
- 告警系统设置
- 文档与培训材料
反模式
测试设计反模式
- 不切实际的工作负载:测试未能反映真实使用模式——先分析生产流量
- 缺少思考时间:连续发送请求,没有用户暂停时间——加入符合实际情况的用户延迟
- 仅使用静态数据:测试数据没有变化——使用参数化且多样化的测试数据
- 仅关注单一场景:只测试一条路径——覆盖所有关键用户旅程
执行反模式
- 测试环境差异:在缺乏代表性的环境中测试——确保配置与生产环境一致
- 未预热:系统尚未预热就开始测试——加入爬坡阶段
- 过早停止:尚未找到极限就结束测试——持续测试,直至发生故障
- 忽视错误率:只关注响应时间——也要监控错误率
分析反模式
- 只看平均值:仅依赖平均值——分析百分位数和分布
- 没有基线:测试时没有进行基线对比——建立性能基线
- 快照测试:只进行一次性测试,不追踪趋势——持续监控
- 指标过载:追踪过多无关指标——聚焦与 SLA 相关的指标
工具反模式
- 脚本只写一次:测试未维护或更新——将测试视为生产代码
- 手动创建测试:未自动生成测试——根据规范生成测试
- 未集成 CI:手动运行性能测试——将其集成到 CI/CD 流水线中
- 资源争用:负载生成器能力不足——确保具备足够的负载生成能力
评论
支持 Markdown