关于 testing-performance
面向开发与测试团队的性能测试技能,涵盖 k6、Locust 和 JMeter,可模拟负载并分析延迟、SLA 与性能瓶颈。
主要功能
- 01使用 k6 模拟虚拟用户负载
- 02通过 Locust 编写自定义负载配置
- 03用 JMeter 阈值检查 SLA
- 04分析 p50、p95 和 p99 延迟
- 05生成火焰图定位性能瓶颈
- 06支持多机分布式测试
适用场景
- 01发布前验证服务在负载下的表现
- 02在 CI/CD 中检查性能 SLA
- 03排查 Web 服务或 API 的高延迟
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ alphaonedev/ openclaw-graph --skill testing-performance安装后在 Claude Code 中输入/testing-performance确认已加载。
详细介绍
性能测试
用途
此技能使用 k6、Locust 和 JMeter 等工具进行性能测试,模拟负载、压力和突发场景,测量 p50/p95/p99 延迟等指标、执行 SLA,并生成火焰图以分析瓶颈。
使用时机
在评估应用在负载下的性能、识别可扩展性问题、验证 SLA,或在生产环境部署前优化代码时使用此技能。可将其用于发布前测试、CI/CD 流水线,或在调试 Web 服务或 API 的高延迟问题时使用。
主要能力
- 使用 k6 和 VU(虚拟用户)及持续时间设置运行负载测试,模拟流量。
- 根据测试输出生成报告,包含 p50(中位数)、p95(第 95 百分位数)和 p99 延迟等指标。
- 通过 Python 脚本在 Locust 中定义负载配置,以自定义用户行为和爬升速率。
- 在 JMeter 中设置阈值并根据结果进行检查,以执行 SLA。
- 使用 k6 内置的分析功能或外部工具生成火焰图,可视化 CPU/内存使用情况。
- 支持在多台机器上进行分布式测试,以开展大规模模拟。
使用模式
要执行基础负载测试,请根据场景选择工具:使用 k6 编写快速脚本,使用 Locust 进行基于 Python 的自定义,或使用 JMeter 处理包含 UI 元素的复杂场景。务必先定义测试脚本,然后使用指定的配置运行。对于 CI/CD,可将其集成为代码变更时触发的步骤。针对不同环境(例如,预发布环境与生产环境)进行参数化,并务必在运行后分析结果。例如:为 API 端点编写 k6 测试,然后使用 Locust 扩展测试以模拟用户。
常用命令/API
对于 k6,通过 CLI 运行测试:k6 run -u 50 -d 1m script.js(设置 50 个虚拟用户,运行 1 分钟)。使用 --threshold p(95)<500 等阈值,确保 p95 延迟低于 500ms。脚本示例:
import http from 'k6/http';
export default function() { http.get('https://api.example.com'); }
对于 Locust,可使用以下命令启动:locust -f locustfile.py --host https://api.example.com --users 100 --spawn-rate 10(100 个用户,每秒启动 10 个)。Locustfile 代码片段:
from locust import HttpUser, task
class QuickUser(HttpUser):
@task
def endpoint(self): self.client.get("/health")
对于 JMeter,通过以下命令执行:jmeter -n -t test_plan.jmx -l results.jtl(非 GUI 模式)。JMeter 配置采用 .jmx XML 格式,包含线程组(50 次循环)和 HTTP 取样器等元素。API 端点:如果测试需要身份验证,请在脚本中设置 $K6_API_KEY 等环境变量(例如,运行前执行 export K6_API_KEY=your_key)。
集成说明
可通过在脚本或 GitHub Actions 等 CI 工具中包装命令,将此技能集成到工作流中:例如,在 YAML 步骤中使用 run: k6 run script.js。对于云服务,请通过环境变量(例如 $LOCUST_API_TOKEN)传递身份验证信息,以访问受保护的端点。可通过管道传递输出(例如,将 k6 JSON 结果发送至 Prometheus),与监控工具结合使用。确保通过包管理器安装工具(例如,npm install -g k6 或 pip install locust),并使用 Docker 镜像保持环境一致(例如,docker run loadimpact/k6 run - < script.js)。如果使用 API,k6 的云 API 等端点需要 $K6_CLOUD_TOKEN 才能上传数据。
错误处理
运行后检查退出代码:k6 在发生失败(例如,阈值未达标)时会返回非零代码。在脚本中,使用 try-catch 包装 Locust 命令(例如,在 Python 中:try: run_locust() except Exception as e: log(e))。对于 JMeter,解析 .jtl 日志以查找 "Assertion failure" 等错误,并设置监听器,在达到阈值时停止测试。常见问题:在脚本中添加重试来处理网络错误(例如,k6:http.get(url, { retries: 3 })),并使用 k6 run --verbose script.js 等详细输出标志进行调试。如果身份验证失败,请检查环境变量(例如,在执行前运行 echo $K6_API_KEY)。
具体使用示例
- 使用 k6 对电商 API 进行测试,模拟 100 个用户持续 5 分钟:编写一个包含 GET 请求的脚本,然后运行
k6 run -u 100 -d 5m script.js --threshold "http_req_duration{type:200} < 500"。分析输出中的 p95 延迟,并确保符合 SLA。 - 使用 Locust 模拟用户登录:创建一个包含登录和浏览任务的 locustfile.py,然后执行
locust -f locustfile.py --host https://app.example.com --users 200 --run-time 10m。监控错误并生成报告,以找出瓶颈。
图关系
- 相关项:testing(集群)、performance-test(标签)、k6(标签)、locust(标签)、load-test(标签)
- 关联方式:通过 testing 集群关联其他测试技能,例如 unit-testing 或 integration-testing
- 依赖项:用于指标分析的监控技能、用于环境设置的部署技能