PTS支持将Postman(JSON)、HTTP Archive Format(.har)、YAML和Swagger脚本(.yml,.json)转换为PTS原生的能力进行压测,提供RPS压测模式,支持实时调速、细致到单接口的监控等。
脚本说明
对HTTP或HTTPS协议的压测,PTS支持将Postman(JSON)、HTTP Archive Format(.har)、YAML和Swagger脚本(.yml,.json)中有关请求的基础信息解析为压测场景中的API。
Postman与PTS API压测的字段对应关系
|
Postman脚本字段 |
PTS API压测字段 |
|
|
info.name |
业务会话名 |
|
|
item[] |
为多个API |
|
|
item[0].name |
API名称 |
|
|
item[0].request.method |
请求方法 |
|
|
item[0].request.url.raw |
请求URL |
|
|
item[0].request.header |
key |
header的key |
|
value |
对应的value值 |
|
|
item[0].request.body |
请求体- POST类型下,根据content-type决定展示形式。 |
|
-
JSON脚本中,可以有多个info.name(业务会话),但info平级的只能是info不可以是item。
-
若从Postman中Collections导出JSON脚本,建议使用V2.1。
-
Postman(JSON)脚本仅支持GET、POST、PUT或DELETE方法。
-
Postman(JSON)脚本中不支持File模式。
-
暂未支持文件上传及二进制类的Content-Type,无法进行转换。
YAML与PTS API压测的字段对应关系
表 1. 基本概念类型
|
YAML脚本字段 |
PTS API压测字段 |
|
Relations |
业务会话的集合 |
|
Relation |
单个业务会话 |
|
Disabled |
业务会话是否被禁用 |
|
ID |
业务会话ID |
|
Name |
业务会话名称 |
|
Nodes |
节点集合 |
|
Name |
节点名称 |
|
NodeId |
节点ID |
|
NodeType |
节点类型 |
|
Config |
节点配置 |
表 2. 节点类型
|
YAML脚本字段 |
PTS API压测字段 |
|
chain |
API节点 |
|
wait |
思考时间节点 |
|
condition |
条件跳转节点 |
|
dam |
集合点 |
|
dataInit |
数据配置节点 |
|
dataStore |
数据导出节点 |
|
dataDefine |
数据指令节点 |
|
delay |
延时节点 |
|
repeatBegin |
循环指令开始节点 |
|
repeatEnd |
循环指令结束节点 |
|
ifBegin |
判断指令开始节点 |
|
ifEnd |
判断指令结束节点 |
表 3. 节点配置类型
|
类型 |
YAML脚本字段 |
PTS API压测字段 |
|
chain |
accessId |
协议ID。 |
|
beginStep |
虚拟用户模式时表示业务会话上的起始虚拟用户;RPS模式时表示API上的起始RPS。 |
|
|
checkPoints |
检查点配置:
|
|
|
endStep |
虚拟用户模式时表示业务会话上的最大虚拟用户;RPS模式时表示API上的最大RPS。 |
|
|
headers |
HTTP header配置:
|
|
|
method |
请求方法,只支持 GET/POST/PUT/DELETE。 |
|
|
postActions |
后置操作:
|
|
|
body |
请求方法为POST或PUT时,对应的请求body:
|
|
|
preActions |
前置操作。 |
|
|
protocol |
协议类型,默认http。 |
|
|
redirectCountLimit |
是否重定向,0表示否,10表示是。 |
|
|
timeoutInMilliSeconds |
以毫秒为单位的超时时间。 |
|
|
condition |
defaultAction |
默认行为:
|
|
actions |
叠加条件。 |
|
|
dam |
type |
配置类型。
|
|
target |
目标量级。 |
|
|
datalnit |
definitions |
键值对结构,对应自定义参数。 |
|
references |
引用的文件参数:
|
|
|
dataDefine |
definitions |
键值对结构。 |
|
dataStore |
dataSize |
数据导出量级。 |
|
dataConfig |
数据导出配置:
|
|
|
delay |
duration |
延时时长,单位为毫秒。 |
|
ifBegin |
ifEndNodeId |
匹配的判断结束指令节点ID。 |
|
operator |
操作符。 |
|
|
param |
表达式。 |
|
|
value |
对比值。 |
|
|
ifEnd |
ifBeginNodeId |
匹配的判断开始指令节点ID。 |
|
repeatBegin |
repeatEndNodeId |
匹配的循环结束指令节点ID。 |
|
repeatEnd |
repeatBeginNodeId |
匹配的循环开始指令节点ID。 |
|
repeatCount |
循环次数。 |
|
|
wait |
type |
|
|
base |
对于固定分布代表固定值,对于均匀分布代表延迟基准,对于正态分布代表均值。 |
|
|
scope |
对于固定分布无意义,对于均匀分布代表可变跨度,对于正态分布代表方差。 |
Swagger脚本与PTS API压测的字段对应关系如下:
|
Swagger脚本字段 |
PTS API压测字段 |
|
paths.key |
请求URL。 |
|
paths.key.key |
请求方法。 |
|
paths.key.key.parameters |
请求Query参数或请求体。 |
|
definitions |
请求体中使用的Schema。 |
|
tags[0].name |
业务会话名。 |
操作步骤
在创建场景页面选择脚本类型,并上传脚本,然后单击确认。
导入成功后,在创建PTS场景页面,您可以看到脚本内容已转化为对应的API压测信息。
-
文件名中不能包含特殊字符,否则会导入报错,如 ~ # % & * { } < > ; ? / + | " 空格。
-
可选择的脚本类型有Postman(JSON)、HTTP Archive Format(.har)、YAML和Swagger脚本(.yml,.json)。一个压测场景仅能导入一个脚本,在未保存场景配置前,可重新上传脚本覆盖之前的导入内容。
-
PTS支持导入的脚本说明及字段含义,请参见脚本说明。请勿导入包含PTS不支持的类型或协议的脚本,若导入的脚本不合规,控制台将弹出错误提示框。