mcpField
T
testing-performance

testing-performance

github.com/alphaonedev测试与质量43 次安装
代码仓库

关于 testing-performance

面向开发与测试团队的性能测试技能,涵盖 k6、Locust 和 JMeter,可模拟负载并分析延迟、SLA 与性能瓶颈。

主要功能

  1. 01使用 k6 模拟虚拟用户负载
  2. 02通过 Locust 编写自定义负载配置
  3. 03用 JMeter 阈值检查 SLA
  4. 04分析 p50、p95 和 p99 延迟
  5. 05生成火焰图定位性能瓶颈
  6. 06支持多机分布式测试

适用场景

  1. 01发布前验证服务在负载下的表现
  2. 02在 CI/CD 中检查性能 SLA
  3. 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)。

具体使用示例

  1. 使用 k6 对电商 API 进行测试,模拟 100 个用户持续 5 分钟:编写一个包含 GET 请求的脚本,然后运行 k6 run -u 100 -d 5m script.js --threshold "http_req_duration{type:200} < 500"。分析输出中的 p95 延迟,并确保符合 SLA。
  2. 使用 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
  • 依赖项:用于指标分析的监控技能、用于环境设置的部署技能

评论

支持 Markdown