阿里云 PTS 压测场景管理
本 Skill 让你使用阿里云 PTS(性能测试服务)创建和管理压测场景。支持 PTS 原生 HTTP/HTTPS 压测和基于 JMeter 的压测。
场景描述
PTS(性能测试服务)是阿里云全托管性能测试平台,帮助你验证应用性能、容量和稳定性。本 Skill 涵盖:
- PTS 原生压测 —— 创建可配置 API、串联链路和负载模型的 HTTP/HTTPS 压测场景
- 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 文件等)都必须与用户确认。
未经用户明确批准,不要假设或使用默认值。
用户可自定义参数
| 参数名 | 必填 | 说明 | 默认值 |
|---|---|---|---|
| RegionId | 否 | PTS 服务地域 | cn-hangzhou |
| Scene Name | 是 | 压测场景名称 | - |
| Target URL | 是 | 要压测的 URL | - |
| HTTP Method | 是 | GET、POST、PUT、DELETE 等 | GET |
| Concurrency | 是 | 并发用户数 | - |
| Duration | 是 | 测试时长(秒) | - |
| JMX File | 是(JMeter) | JMeter 脚本文件路径 | - |
| Mode | 否 | CONCURRENCY 或 TPS | CONCURRENCY |
认证
本 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-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/alibabacloud-pts-ops
参数说明:
MaxRunningTime:时长,单位为分钟(非秒),范围 [1-1440]TestMode:并发用户测试用concurrency_mode,RPS 测试用tps_modeTimeoutInSecond:请求超时(秒)(推荐: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 <SCENE_ID>。
如果状态为RUNNING或SYNCING,测试已在进行中——跳过启动命令并进入监控。
不要启动重复测试。
2. 检索并验证场景配置 —— 运行get-pts-scene --scene-id <SCENE_ID>,确认响应包含有效的SceneName、至少一个含非空Url的RelationList条目,以及有效的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-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”/“确认删除”)。没有用户明确批准,不要继续。
删除前检查:验证场景未运行
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。
最佳实践
- 使用完整场景配置 - 始终包含
TimeoutInSecond、HeaderList(含 User-Agent)、CheckPointList和AdvanceSetting,确保测试可靠执行 - 始终确认参数 - 执行前与用户验证目标 URL、并发设置和时长
- 从低并发开始 - 从低并发开始并逐步增加,以识别性能阈值
- 验证实际执行 - 不要信任
start-pts-scene的Success: true;始终用--plan-id检查get-pts-scene-running-data - 先使用调试模式 - 对于 PTS 场景,先使用
start-debug-pts-scene在完整测试前验证配置 - 测试期间监控 - 压测期间定期检查运行状态
- 仔细审阅报告 - 分析报告中的响应时间、错误率和吞吐量
- 测试后清理 - 删除测试场景以避免不必要的成本
- 使用适当的测试时长 - 更长的测试提供更准确的结果但消耗更多资源
- 包含预热期 - 在测量峰值性能前给系统预热时间
参考链接
| 参考 | 说明 |
|---|---|
| cli-installation-guide.md | Aliyun CLI 安装和配置 |
| related-apis.md | 完整 API 和 CLI 命令参考 |
| ram-policies.md | RAM 权限策略 |
| verification-method.md | 各操作的验证步骤 |
| pts-scene-json-reference.md | 完整 PTS 场景 JSON 结构参考 |
| acceptance-criteria.md | Skill 验证的验收标准 |
阿里云skills
◯ 评论 0