阿里云 PTS 压测场景管理

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

场景描述

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

  1. PTS 原生压测 —— 创建可配置 API、串联链路和负载模型的 HTTP/HTTPS 压测场景
  2. JMeter 压测 —— 上传并运行 JMeter 脚本,分布式负载生成

架构

用户 → Aliyun CLI → PTS 服务 → 目标应用
                         ↓
                   压测报告

预检查

预检查:需要 Aliyun CLI >= 3.3.3
运行 aliyun version 验证 >= 3.3.3。如果未安装或版本过低,
运行 curl -fsSL https://aliyuncli.alicdn.com/setup.sh | bash 安装/更新,
或参阅 references/cli-installation-guide.md 获取安装说明。
然后 [必须] 运行 aliyun configure set --auto-plugin-install true 启用插件自动安装。
[必须] 运行 aliyun plugin update 确保本地现有插件始终为最新版本。

验证 CLI 版本

aliyun version

启用插件自动安装

aliyun configure set --auto-plugin-install true


**[必须] CLI User-Agent** —— 每次调用 `aliyun` CLI 命令都必须包含:
`--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops`

超时设置

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

PTS 操作推荐超时设置

--read-timeout 60 --connect-timeout 10


- **read-timeout**:60 秒(压测操作可能耗时较长)
- **connect-timeout**:10 秒

环境变量

除 CLI 认证外,不需要额外环境变量。

参数确认

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

用户可自定义参数

参数名必填说明默认值
RegionIdPTS 服务地域cn-hangzhou
Scene Name压测场景名称-
Target URL要压测的 URL-
HTTP MethodGET、POST、PUT、DELETE 等GET
Concurrency并发用户数-
Duration测试时长(秒)-
JMX File是(JMeter)JMeter 脚本文件路径-
ModeCONCURRENCY 或 TPSCONCURRENCY

认证

本 Skill 依赖 Aliyun CLI 的默认凭证链。使用前确保 CLI 已认证。

验证当前认证:

aliyun configure get

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

RAM 策略

用户必须具有适当的 PTS 权限。详细策略见 references/ram-policies.md

幂等性

PTS API 不支持基于 ClientToken 的幂等性。场景名不唯一——多个

PTS 或 JMeter 场景可能共享相同的 SceneName。绝不要把“同名”当作一个资源;

始终使用 SceneId(由 API 返回)作为稳定标识符。

为防止超时或错误后重试时产生重复资源或意外副作用,

在每次写操作之前始终使用先检查后操作模式:

操作操作前检查如果已存在/运行中
创建 PTS 场景save-pts-scene不要按名称去重。成功后记录 SceneId如果先前调用结果未知,用 list-pts-scene 与用户一起消歧后再重试;不要盲目重试 save(每次重试可能创建另一个场景)。
创建 JMeter 场景save-open-jmeter-scene同 PTS——名称可能重复;仅用 SceneId同样的模式,用 list-open-jmeter-scenes + 用户消歧后再重试。
启动 PTS 测试start-pts-sceneget-pts-scene-running-status —— 检查状态如果 RUNNINGSYNCING,跳过;不要再启动
启动 JMeter 测试start-testing-jmeter-sceneget-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/alibabacloud-pts-ops

参数说明:

  • 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)
完整 JSON 结构(POST 请求、文件参数、全局变量等),见 references/pts-scene-json-reference.md

#### 任务 1.2:启动压测

[必须] 启动前安全检查 —— 启动压测会向目标系统发送大量流量。
执行 start-pts-scene 之前,以下所有检查必须通过:
1. 幂等性守卫 —— 运行 get-pts-scene-running-status --scene-id &lt;SCENE_ID&gt;
如果状态为 RUNNINGSYNCING,测试已在进行中——跳过启动命令并进入监控。
不要启动重复测试。
2. 检索并验证场景配置 —— 运行 get-pts-scene --scene-id &lt;SCENE_ID&gt;,确认响应包含有效的 SceneName、至少一个含非空 UrlRelationList 条目,以及有效的 LoadConfig(非零 MaxRunningTime 和并发)。
如果任何字段缺失或为空,中止并通知用户。
3. 展示测试摘要并要求用户明确确认 —— 向用户呈现以下内容并等待明确批准(例如“yes”/“确认”):
- 目标 URL
- 并发级别
- 测试时长
- 测试模式(并发/TPS)
没有用户明确的“开始”确认,不要继续。

幂等性守卫:如果测试已运行则跳过

aliyun pts get-pts-scene-running-status \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

↑ 如果状态为 RUNNING 或 SYNCING,跳过 start-pts-scene 并进入监控。

启动前检查:验证场景配置完整

aliyun pts get-pts-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

启动压测(仅在所有检查通过且用户确认后)

aliyun pts start-pts-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


#### 任务 1.3:监控测试状态

aliyun pts get-pts-scene-running-status \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


#### 任务 1.4:获取测试报告

aliyun pts get-pts-report-details \

--scene-id <SCENE_ID> \

--plan-id <PLAN_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


### 工作流 2:创建并运行 JMeter 压测

#### 任务 2.1:创建 JMeter 场景

> **幂等性:** `SceneName` 可能在 JMeter 场景间重复。**不要**按名称去重。
> `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/alibabacloud-pts-ops


#### 任务 2.2:启动 JMeter 测试

> **[必须] 启动前安全检查** —— 启动 JMeter 压测会向目标系统发送大量流量。
> 执行 `start-testing-jmeter-scene` 之前,以下所有检查必须通过:
>
> 1. **幂等性守卫** —— 运行 `get-open-jmeter-scene --scene-id <SCENE_ID>` 并检查
>    场景状态。如果测试已运行,跳过启动命令并进入监控。不要启动重复测试。
> 2. **验证场景配置** —— 从同一响应确认包含有效 `SceneName`、非空 `TestFile`、非零 `Duration` 和 `Concurrency`。
>    如果任何字段缺失或为空,中止并通知用户。
> 3. **展示测试摘要并要求用户明确确认** —— 向用户呈现以下内容并等待明确批准(例如“yes”/“确认”):
>    - 场景名和 JMX 文件
>    - 并发级别
>    - 测试时长
>
>    没有用户明确的“开始”确认,不要继续。

幂等性守卫 + 启动前检查:验证场景配置并检查是否已运行

aliyun pts get-open-jmeter-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

↑ 如果已运行,跳过启动命令。如果配置不完整,中止。

启动 JMeter 测试(仅在所有检查通过且用户确认后)

aliyun pts start-testing-jmeter-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


#### 任务 2.3:获取 JMeter 报告

aliyun pts get-jmeter-report-details \

--report-id <REPORT_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


### 工作流 3:管理场景

#### 任务 3.1:列出所有 PTS 场景

aliyun pts list-pts-scene \

--page-number 1 \

--page-size 10 \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


#### 任务 3.2:列出所有 JMeter 场景

aliyun pts list-open-jmeter-scenes \

--page-number 1 \

--page-size 10 \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


#### 任务 3.3:获取场景详情

PTS 场景

aliyun pts get-pts-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

JMeter 场景

aliyun pts get-open-jmeter-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


#### 任务 3.4:调试场景(仅 PTS)

aliyun pts start-debug-pts-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


#### 任务 3.5:停止运行中的测试

停止 PTS 测试

aliyun pts stop-pts-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

停止 JMeter 测试

aliyun pts stop-testing-jmeter-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

成功验证方法

重要: start-pts-scene 即使压测实际未启动(例如因目标站点防护或配置缺失),也可能返回 Success: true。始终验证实际执行状态。

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

验证场景创建:

使用 list-pts-scene 而非 get-pts-scene(更可靠)

aliyun pts list-pts-scene \

--page-number 1 \

--page-size 10 \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


**验证压测实际运行:**

先检查运行状态

aliyun pts get-pts-scene-running-status \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

然后用运行数据验证(需要 start-pts-scene 返回的 plan-id)

aliyun pts get-pts-scene-running-data \

--scene-id <SCENE_ID> \

--plan-id <PLAN_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops


**成功执行的关键指标:**
- `Status`:应为 "RUNNING" 或 "SYNCING"(不是立即 "STOPPED")
- `AliveAgents`:应 > 0
- `Concurrency`:应匹配配置值
- `TotalRequestCount`:应递增

清理

不再需要时删除场景。

[必须] 删除前安全检查 —— 删除任何场景之前,以下所有检查必须通过:
1. 幂等性守卫 —— 使用目标 SceneId(非名称),验证它仍存在
(例如 list-pts-scene / list-open-jmeter-scenesget-*)。如果该 SceneId 不存在,
视为删除已完成并跳过删除命令。
2. 检查场景当前是否运行 —— 运行
get-pts-scene-running-status --scene-id &lt;SCENE_ID&gt;(PTS)或检查 JMeter 场景状态。
如果场景状态为 RUNNINGSYNCING,你必须先用
stop-pts-scene / stop-testing-jmeter-scene 停止它,并等待完全停止后再删除。
不要删除运行中的场景。
3. 要求用户明确确认 —— 向用户展示场景名和 ID,并
要求明确删除确认(例如“yes”/“确认删除”)。没有用户明确批准,不要继续。

删除前检查:验证场景未运行

aliyun pts get-pts-scene-running-status \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

删除 PTS 场景(仅在确认未运行且用户批准后)

aliyun pts delete-pts-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

删除 JMeter 场景(仅在确认未运行且用户批准后)

aliyun pts remove-open-jmeter-scene \

--scene-id <SCENE_ID> \

--user-agent AlibabaCloud-Agent-Skills/alibabacloud-pts-ops

API 与命令表

完整 API 和 CLI 命令参考见 references/related-apis.md

最佳实践

  1. 使用完整场景配置 - 始终包含 TimeoutInSecondHeaderList(含 User-Agent)、CheckPointListAdvanceSetting,确保测试可靠执行
  2. 始终确认参数 - 执行前与用户验证目标 URL、并发设置和时长
  3. 从低并发开始 - 从低并发开始并逐步增加,以识别性能阈值
  4. 验证实际执行 - 不要信任 start-pts-sceneSuccess: 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.mdSkill 验证的验收标准