mcpField
A
alibabacloud-pts-ops

alibabacloud-pts-ops

github.com/aliyun测试与质量281151 次安装1 天前更新
代码仓库

关于 alibabacloud-pts-ops

此 Agent Skill 通过 Aliyun CLI 管理 Alibaba Cloud PTS 压力测试场景,适用于需要验证应用性能、容量和稳定性的团队。它涵盖 PTS 原生 HTTP/HTTPS 测试与 JMeter 测试,并包含启动前检查、状态监控和报告查询流程。

主要功能

  1. 01创建和管理 PTS 压测场景
  2. 02配置 HTTP/HTTPS 请求与负载
  3. 03上传并运行 JMeter 脚本
  4. 04监控测试状态并查询报告
  5. 05启动前执行配置与重复运行检查

适用场景

  1. 01验证应用的性能和承载能力
  2. 02运行基于 JMeter 脚本的分布式压测
  3. 03查看压测进度及结果报告

安装

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

$npx skills add https://github.com/aliyun/alibabacloud-aiops-skills --skill alibabacloud-pts-ops

安装后在 Claude Code 中输入/alibabacloud-pts-ops确认已加载。

包含的文件

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

references/
acceptance-criteria.md
cli-installation-guide.md
pts-scene-json-reference.md
ram-policies.md
related-apis.md
verification-method.md

详细介绍

阿里云 PTS 压测场景管理

此技能可使用阿里云 PTS(性能测试服务)创建和管理压测场景,支持 PTS 原生 HTTP/HTTPS 压测和基于 JMeter 的压测。

场景说明

PTS(性能测试服务)是阿里云全托管的性能测试平台,可帮助你验证应用的性能、容量和稳定性。此技能涵盖:

  1. PTS 原生压测 - 创建 HTTP/HTTPS 压测场景,可配置 API、串行链路和负载模型
  2. JMeter 压测 - 上传并运行 JMeter 脚本,进行分布式负载生成
架构
User → Aliyun CLI → PTS Service → Target Application
                         ↓
                   Stress Testing Report

预检查

预检查:需要 Aliyun CLI >= 3.3.1 运行 aliyun version,确认版本 >= 3.3.1。如果尚未安装或版本过低, 请参阅 references/cli-installation-guide.md 获取安装说明。 然后**[必须]**运行 aliyun configure set --auto-plugin-install true,启用自动插件安装。

# Verify CLI version
aliyun version

# Enable auto plugin installation
aliyun configure set --auto-plugin-install true

超时设置

所有 CLI 命令都应包含超时参数,以避免命令挂起:

# Recommended timeout settings for PTS operations
--read-timeout 60 --connect-timeout 10
  • read-timeout:60 秒(压测操作可能需要更长时间)
  • connect-timeout:10 秒

环境变量

除 CLI 身份验证外,无需其他环境变量。

参数确认

重要:参数确认 — 执行任何命令或 API 调用之前, 必须与用户确认所有可自定义参数(例如 RegionId、场景名称、目标 URL、 并发数、持续时间、JMX 文件等)。 未经用户明确批准,不得假设或使用默认值。

可自定义参数
参数名称必填说明默认值
RegionId否PTS 服务所在地域cn-hangzhou
场景名称是压测场景的名称-
目标 URL是要进行压测的 URL-
HTTP 方法是GET、POST、PUT、DELETE 等GET
并发数是并发用户数-
持续时间是测试持续时间,单位为秒-
JMX 文件是(JMeter)JMeter 脚本文件路径-
模式否CONCURRENCY 或 TPSCONCURRENCY

身份验证

此技能使用 Aliyun CLI 的默认凭证链。请确保使用前 CLI 已完成身份验证。

验证当前身份验证状态:

aliyun configure get

如果 CLI 尚未配置,请参阅 references/cli-installation-guide.md 获取设置说明。

RAM 策略

用户必须拥有适当的 PTS 权限。有关详细策略,请参阅 references/ram-policies.md。

幂等性

PTS API 不支持基于 ClientToken 的幂等性。场景名称不唯一——多个 PTS 或 JMeter 场景可以使用相同的 SceneName。切勿将“名称相同”视为同一个资源;始终使用 API 返回的 SceneId 作为稳定标识符。

为避免因超时或错误后重试而创建重复资源或产生意外副作用,每次写操作前都必须使用先检查再执行模式:

操作执行前检查如果已存在/正在运行
创建 PTS 场景(save-pts-scene)不要按名称去重。成功后,记录 SceneId。如果上一次调用的结果未知,请与用户一起使用 list-pts-scene 进行确认,再重试;切勿盲目重试保存操作(每次重试都可能创建另一个场景)。
创建 JMeter 场景(save-open-jmeter-scene)与 PTS 相同——名称可能重复;只能使用 SceneId。使用相同模式:重试前,通过 list-open-jmeter-scenes 并与用户确认。
启动 PTS 测试(start-pts-scene)使用 get-pts-scene-running-status 检查状态如果状态为 RUNNING 或 SYNCING,则跳过;切勿再次启动
启动 JMeter 测试(start-testing-jmeter-scene)使用 get-open-jmeter-scene 检查状态如果已在运行,则跳过;切勿再次启动
删除 PTS 场景(delete-pts-scene)确认目标 SceneId 仍然存在(例如,使用 list-pts-scene/get-pts-scene)如果该 SceneId 已不存在,则视为成功(已删除)
删除 JMeter 场景(remove-open-jmeter-scene)确认目标 SceneId 仍然存在如果该 SceneId 已不存在,则视为成功(已删除)

核心工作流

重要:确认参数——执行任何命令或 API 调用之前,必须与用户确认所有可由用户自定义的参数(例如 RegionId、场景名称、目标 URL、并发数、持续时间等)。 未经用户明确同意,切勿假设或使用默认值。

工作流 1:创建并运行 PTS 原生压力测试
任务 1.1:创建 PTS 场景

**注意:**使用 save-pts-scene,不要使用 create-pts-scene。--scene 参数直接接受 JSON 对象(不需要包装在 Scene 字段中)。

**幂等性:**多个场景的 SceneName 可能重复。切勿仅根据名称跳过创建或选择场景。save-pts-scene 成功后,记录返回的 SceneId,供后续所有步骤使用。如果命令失败或超时且结果未知,请与用户一起使用 list-pts-scene 确定目标 SceneId,再进行重试——避免盲目重试,以免创建多余场景。

aliyun pts save-pts-scene \
  --scene '{
    "SceneName": "<SCENE_NAME>",
    "RelationList": [
      {
        "RelationName": "serial-link-1",
        "ApiList": [
          {
            "ApiName": "api-1",
            "Url": "<TARGET_URL>",
            "Method": "<HTTP_METHOD>",
            "TimeoutInSecond": 10,
            "RedirectCountLimit": 10,
            "HeaderList": [
              {
                "HeaderName": "User-Agent",
                "HeaderValue": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
              }
            ],
            "CheckPointList": [
              {
                "CheckPoint": "",
                "CheckType": "STATUS_CODE",
                "Operator": "eq",
                "ExpectValue": "200"
              }
            ]
          }
        ]
      }
    ],
    "LoadConfig": {
      "TestMode": "concurrency_mode",
      "MaxRunningTime": <DURATION_MINUTES>,
      "AutoStep": false,
      "Configuration": {
        "AllConcurrencyBegin": <CONCURRENCY>,
        "AllConcurrencyLimit": <CONCURRENCY>
      }
    },
    "AdvanceSetting": {
      "LogRate": 1,
      "ConnectionTimeoutInSecond": 5
    }
  }' \
  --user-agent AlibabaCloud-Agent-Skills

参数说明:

  • MaxRunningTime:持续时间,单位为分钟(不是秒),范围为 [1-1440]
  • TestMode:并发用户测试使用 concurrency_mode,RPS 测试使用 tps_mode
  • TimeoutInSecond:请求超时时间,单位为秒(建议:10)
  • RedirectCountLimit:允许的最大重定向次数(普通情况使用 10,禁用时使用 0)
  • HeaderList:HTTP 请求头,建议设置 User-Agent,以提高兼容性
  • CheckPointList:用于验证响应的断言(STATUS_CODE、BODY_JSON 等)
  • AdvanceSetting.LogRate:日志采样率(1-100)
  • AdvanceSetting.ConnectionTimeoutInSecond:连接超时时间(建议:5)

关于包含所有字段(POST 请求、文件参数、全局变量等)的完整 JSON 结构,请参阅 references/pts-scene-json-reference.md

任务 1.2:开始压力测试

[MUST] 启动前安全检查 — 开始压力测试会向目标系统发送大量流量。执行 start-pts-scene 前,以下检查必须全部通过:

  1. 幂等性检查 — 运行 get-pts-scene-running-status --scene-id <SCENE_ID>。 如果状态为 RUNNING 或 SYNCING,表示测试已在进行中 — 跳过启动命令,继续监控。 不要启动重复测试。
  2. 获取并验证场景配置 — 运行 get-pts-scene --scene-id <SCENE_ID>,并确认响应中包含有效的 SceneName、至少一个 Url 不为空的 RelationList 条目,以及有效的 LoadConfig(MaxRunningTime 和并发数均非零)。 如果任何字段缺失或为空,请中止操作并通知用户。
  3. 显示测试摘要并要求用户明确确认 — 向用户展示以下内容,并等待用户明确批准(例如“yes”/“确认”):
    • 目标 URL
    • 并发级别
    • 测试持续时间
    • 测试模式(并发 / TPS)
    未获得用户明确的“同意开始”确认前,不要继续。
# Idempotency guard: Skip if test is already running
aliyun pts get-pts-scene-running-status \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills
# ↑ If status is RUNNING or SYNCING, skip start-pts-scene and go to monitoring.

# Pre-flight check: Verify scene configuration is complete
aliyun pts get-pts-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills

# Start stress testing (only after all checks pass and user confirms)
aliyun pts start-pts-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills
任务 1.3:监控测试状态
aliyun pts get-pts-scene-running-status \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills
任务 1.4:获取测试报告
aliyun pts get-pts-report-details \
  --scene-id <SCENE_ID> \
  --plan-id <PLAN_ID> \
  --user-agent AlibabaCloud-Agent-Skills
工作流 2:创建并运行 JMeter 压力测试
任务 2.1:创建 JMeter 场景

幂等性: JMeter 场景的 SceneName 可能重复。不要按名称去重。 save-open-jmeter-scene 成功后,记录返回的 SceneId。如果不确定操作是否失败,请先使用 list-open-jmeter-scenes 与用户确认并区分场景,再重试。

aliyun pts save-open-jmeter-scene \
  --open-jmeter-scene '{
    "SceneName": "<SCENE_NAME>",
    "TestFile": "<JMX_FILENAME>",
    "Duration": <DURATION>,
    "Concurrency": <CONCURRENCY>,
    "Mode": "CONCURRENCY"
  }' \
  --user-agent AlibabaCloud-Agent-Skills
任务 2.2:开始 JMeter 测试

[MUST] 启动前安全检查 — 开始 JMeter 压力测试会向目标系统发送大量流量。执行 start-testing-jmeter-scene 前,以下检查必须全部通过:

  1. 幂等性检查 — 运行 get-open-jmeter-scene --scene-id <SCENE_ID> 并检查场景状态。如果测试已在运行,跳过启动命令,继续监控。不要启动重复测试。
  2. 验证场景配置 — 确认同一响应中包含有效的 SceneName、非空的 TestFile,以及非零的 Duration 和 Concurrency。 如果任何字段缺失或为空,请中止操作并通知用户。
  3. 显示测试摘要并要求用户明确确认 — 向用户展示以下内容,并等待用户明确批准(例如“yes”/“确认”):
    • 场景名称和 JMX 文件
    • 并发级别
    • 测试持续时间
    未获得用户明确的“同意开始”确认前,不要继续。
# Idempotency guard + pre-flight check: Verify scene config and check if already running
aliyun pts get-open-jmeter-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills
# ↑ If already running, skip start command. If config is incomplete, abort.

# Start JMeter testing (only after all checks pass and user confirms)
aliyun pts start-testing-jmeter-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills
任务 2.3:获取 JMeter 报告
aliyun pts get-jmeter-report-details \
  --report-id <REPORT_ID> \
  --user-agent AlibabaCloud-Agent-Skills
工作流 3:管理场景
任务 3.1:列出所有 PTS 场景
aliyun pts list-pts-scene \
  --page-number 1 \
  --page-size 10 \
  --user-agent AlibabaCloud-Agent-Skills
任务 3.2:列出所有 JMeter 场景
aliyun pts list-open-jmeter-scenes \
  --page-number 1 \
  --page-size 10 \
  --user-agent AlibabaCloud-Agent-Skills
任务 3.3:获取场景详情
# PTS scenario
aliyun pts get-pts-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills

# JMeter scenario
aliyun pts get-open-jmeter-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills
任务 3.4:调试场景(仅限 PTS)
aliyun pts start-debug-pts-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills
任务 3.5:停止正在运行的测试
# Stop PTS test
aliyun pts stop-pts-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills

# Stop JMeter test
aliyun pts stop-testing-jmeter-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills

成功验证方法

重要: 即使压力测试实际上未能启动(例如,由于目标网站的防护机制或缺少配置),start-pts-scene 也可能返回 Success: true。请务必验证实际执行状态。

每次操作后,请使用 references/verification-method.md 中的验证命令确认是否成功。

验证场景创建:

# Use list-pts-scene instead of get-pts-scene (more reliable)
aliyun pts list-pts-scene \
  --page-number 1 \
  --page-size 10 \
  --user-agent AlibabaCloud-Agent-Skills

验证压力测试是否实际运行:

# Check running status first
aliyun pts get-pts-scene-running-status \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills

# Then verify with running data (requires plan-id from start-pts-scene)
aliyun pts get-pts-scene-running-data \
  --scene-id <SCENE_ID> \
  --plan-id <PLAN_ID> \
  --user-agent AlibabaCloud-Agent-Skills

成功执行的关键指标:

  • Status:应为 "RUNNING" 或 "SYNCING"(不应立即变为 "STOPPED")
  • AliveAgents:应大于 0
  • Concurrency:应与配置值一致
  • TotalRequestCount:应持续增加

清理

不再需要时删除场景。

[MUST] 删除前安全检查 — 删除任何场景前,必须通过以下所有 检查:

  1. 幂等性保护 — 使用目标 SceneId(而非名称)确认场景仍然存在 (例如,list-pts-scene / list-open-jmeter-scenes 或 get-*)。如果该 SceneId 不存在, 则视为已完成删除,跳过删除命令。
  2. 检查场景当前是否正在运行 — 执行 get-pts-scene-running-status --scene-id <SCENE_ID>(PTS),或检查 JMeter 场景状态。 如果场景状态为 RUNNING 或 SYNCING,必须先使用 stop-pts-scene / stop-testing-jmeter-scene 停止场景,并等待其完全停止后再删除。 请勿删除正在运行的场景。
  3. 要求用户明确确认 — 向用户显示场景名称和 ID,并 询问是否明确确认删除(例如,“yes” / “确认删除”)。未经用户明确批准,请勿继续。
# Pre-delete check: Verify scenario is not running
aliyun pts get-pts-scene-running-status \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills

# Delete PTS scenario (only after confirming it is not running and user approves)
aliyun pts delete-pts-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills

# Delete JMeter scenario (only after confirming it is not running and user approves)
aliyun pts remove-open-jmeter-scene \
  --scene-id <SCENE_ID> \
  --user-agent AlibabaCloud-Agent-Skills

API 和命令表

完整的 API 和 CLI 命令参考请参阅 references/related-apis.md。

最佳实践

  1. 使用完整的场景配置 - 始终包含 TimeoutInSecond、HeaderList(含 User-Agent)、CheckPointList 和 AdvanceSetting,以确保测试可靠执行
  2. 始终确认参数 - 执行前与用户确认目标 URL、并发设置和持续时间
  3. 从低并发开始 - 先以低并发开始,再逐步提高,以确定性能阈值
  4. 验证实际执行情况 - 不要仅凭 start-pts-scene 返回 Success: true 就认为执行成功;始终使用 --plan-id 检查 get-pts-scene-running-data
  5. 先使用调试模式 - 对于 PTS 场景,先使用 start-debug-pts-scene 验证配置,再进行完整测试
  6. 测试期间进行监控 - 压力测试期间定期检查运行状态
  7. 彻底查看报告 - 分析报告中的响应时间、错误率和吞吐量
  8. 测试后进行清理 - 删除测试场景,避免产生不必要的费用
  9. 使用合适的测试时长 - 测试时间越长,结果越准确,但也会消耗更多资源
  10. 包含预热时段 - 测量峰值性能前,留出时间让系统完成预热

参考链接

参考资料描述
cli-installation-guide.mdAliyun CLI 安装与配置
related-apis.md完整的 API 和 CLI 命令参考
ram-policies.mdRAM 权限策略
verification-method.md各项操作的验证步骤
pts-scene-json-reference.md完整的 PTS 场景 JSON 结构参考
acceptance-criteria.md技能验证的验收标准

评论

支持 Markdown