关于 alibabacloud-pts-ops
此 Agent Skill 通过 Aliyun CLI 管理 Alibaba Cloud PTS 压力测试场景,适用于需要验证应用性能、容量和稳定性的团队。它涵盖 PTS 原生 HTTP/HTTPS 测试与 JMeter 测试,并包含启动前检查、状态监控和报告查询流程。
主要功能
- 01创建和管理 PTS 压测场景
- 02配置 HTTP/HTTPS 请求与负载
- 03上传并运行 JMeter 脚本
- 04监控测试状态并查询报告
- 05启动前执行配置与重复运行检查
适用场景
- 01验证应用的性能和承载能力
- 02运行基于 JMeter 脚本的分布式压测
- 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.mdcli-installation-guide.mdpts-scene-json-reference.mdram-policies.mdrelated-apis.mdverification-method.md详细介绍
阿里云 PTS 压测场景管理
此技能可使用阿里云 PTS(性能测试服务)创建和管理压测场景,支持 PTS 原生 HTTP/HTTPS 压测和基于 JMeter 的压测。
场景说明
PTS(性能测试服务)是阿里云全托管的性能测试平台,可帮助你验证应用的性能、容量和稳定性。此技能涵盖:
- PTS 原生压测 - 创建 HTTP/HTTPS 压测场景,可配置 API、串行链路和负载模型
- 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 或 TPS | CONCURRENCY |
身份验证
此技能使用 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_modeTimeoutInSecond:请求超时时间,单位为秒(建议: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前,以下检查必须全部通过:
- 幂等性检查 — 运行
get-pts-scene-running-status --scene-id <SCENE_ID>。 如果状态为RUNNING或SYNCING,表示测试已在进行中 — 跳过启动命令,继续监控。 不要启动重复测试。- 获取并验证场景配置 — 运行
get-pts-scene --scene-id <SCENE_ID>,并确认响应中包含有效的SceneName、至少一个Url不为空的RelationList条目,以及有效的LoadConfig(MaxRunningTime和并发数均非零)。 如果任何字段缺失或为空,请中止操作并通知用户。- 显示测试摘要并要求用户明确确认 — 向用户展示以下内容,并等待用户明确批准(例如“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前,以下检查必须全部通过:
- 幂等性检查 — 运行
get-open-jmeter-scene --scene-id <SCENE_ID>并检查场景状态。如果测试已在运行,跳过启动命令,继续监控。不要启动重复测试。- 验证场景配置 — 确认同一响应中包含有效的
SceneName、非空的TestFile,以及非零的Duration和Concurrency。 如果任何字段缺失或为空,请中止操作并通知用户。- 显示测试摘要并要求用户明确确认 — 向用户展示以下内容,并等待用户明确批准(例如“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:应大于 0Concurrency:应与配置值一致TotalRequestCount:应持续增加
清理
不再需要时删除场景。
[MUST] 删除前安全检查 — 删除任何场景前,必须通过以下所有 检查:
- 幂等性保护 — 使用目标
SceneId(而非名称)确认场景仍然存在 (例如,list-pts-scene/list-open-jmeter-scenes或get-*)。如果该SceneId不存在, 则视为已完成删除,跳过删除命令。- 检查场景当前是否正在运行 — 执行
get-pts-scene-running-status --scene-id <SCENE_ID>(PTS),或检查 JMeter 场景状态。 如果场景状态为RUNNING或SYNCING,必须先使用stop-pts-scene/stop-testing-jmeter-scene停止场景,并等待其完全停止后再删除。 请勿删除正在运行的场景。- 要求用户明确确认 — 向用户显示场景名称和 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。
最佳实践
- 使用完整的场景配置 - 始终包含
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 | 技能验证的验收标准 |