PTS支持将JMeter脚本(JMX)、Postman(JSON)和YAML脚本转换为PTS原生的能力进行压测,提供更强的RPS压测模式,支持实时调速、细致到单接口的监控等。

背景信息

对HTTP或HTTPS协议的压测,PTS支持将JMeter脚本(JMX)、Postman(JSON)和YAML脚本中有关请求的基础信息解析为压测场景中的API。

JMeter脚本与PTS API压测的字段对应关系如下:

Jmeter脚本字段 PTS-API压测字段
测试计划Test Plan 压测场景
线程组Thread Group 串联链路
采样器Sampler(仅支持HTTP Request) Name 压测API名称
Server Name or IP Path Port Number 压测URL
Method 请求方法
Parameters/Body Data Body定义下的内容
HTTP Header Manager Headers Header定义下的Key和Value。全局或者区域生效的Header会填充到对应区域的API中。
HTTP Cookie Manager User-Defined Cookies Header定义下的Cookie。全局或者区域生效的Cookie会填充到对应区域的API中。
说明
  • HTTP Header Manager、HTTP Cookie Manager和HTTP Request Default导入时会取所有的并集到每个API中。
  • Cookie相关的设置中,暂不支持导入domain和path。
  • 导入时Content-Type默认都为x-www-form-urlencode,如果需要切换为raw请先复制,否则会清空Body的内容。
  • 对于不支持导入的信息,您可以使用PTS提供的功能实现,例如断言指令(思考时间、集合点等)、参数化等。

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或DELECT方法。
  • Postman(JSON)脚本中不支持File模式。
  • 暂未支持同时上传及二进制类的Content-Type,无法进行转换。

YAML脚本与PTS API压测的字段对应关系如下:

类型 YAML脚本字段 PTS-API压测字段
基本概念 Relations 串联链路的集合
Relation 单个串联链路
Disabled 串联链路是否被禁用
ID 串联链路ID
Name 串联链路名称
Nodes 节点集合
Name 节点名称
NodeId 节点ID
NodeType 节点类型
Config 节点配置
节点类型 chain API节点
wait 思考时间节点
condition 条件跳转节点
dam 集合点
dataInit 数据配置节点
dataStore 数据导出节点
dataDefine 数据指令节点
delay 延时节点
repeatBegin 循环指令开始节点
repeatEnd 循环指令结束节点
ifBegin 判断指令开始节点
ifEnd 判断指令结束节点
节点配置 chain accessId 协议ID
beginStep 并发模式时表示串联链路上的起始并发;RPS模式时表示API上的起始RPS。
checkPoints 检查点配置
  • checkers:单个检查点配置
    • expectValue:期望值
    • operator:操作符;有gt|gte|lt|lte|eq|n_eq|ctn|n_ctn|exist|n_exist|belong|n_belong|regex_match,分别表示:大于|大于等于|小于|小于等于|等于|不等于|包含|不包含|存在|不存在|属于|不属于|正则匹配
  • point:检查对象
  • type:检查点类型
    • BODY_TEXT表示文本响应体
    • BODY_JSON表示JSON格式的响应体
    • HEADER表示header
    • COOKIE表示cookie
    • STATUS_CODE表示响应状态码
    • EXPORTED_PARAM表示出参
endStep 并发模式时表示串联链路上的最大并发;RPS模式时表示API上的最大RPS。
headers HTTP header配置
  • name:header的key
  • value:header的value
method 请求方法,只支持 GET/POST/PUT/DELETE。
postActions 后置操作
  • type:类型,目前只支持 export,表示出参。
  • params:出参配置
    • name:出参名
    • value:出参表达式
    • type:同检查点类型type
body 请求方法为POST|PUT时,对应的请求body
  • contentType:类型
  • value:body内容
preActions 前置操作,预留字段,暂无用处。
protocol 协议类型,默认http
redirectCountLimit 是否重定向,0表示否,10表示是。
timeoutInMilliSeconds 以毫秒为单位的超时时间
condition defaultAction 默认行为
  • action:动作,jump|continue|return 分别表示跳转|继续|结束。
  • target:目标API的ID
  • conditions:判断条件
    • param:参数名
    • operator:运算符
    • value:对比值
actions 叠加条件
dam type 配置类型,BY_TIME|BY_USER 分别表示按时间、按用户集合。
target 目标量级
datalnit definitions 键值对结构,对应自定义参数。
references 引用的文件参数
  • column:列名
  • fileKey:文件索引
  • fileName:文件名
  • useOnce:是否只轮询一次
  • asBase:是否作为基准列
  • accessMethod:读取方式,inOrder|inRandom分别表示按顺序读取及随机读取。
  • index:列索引
dataDefine definitions 键值对结构
dataStore dataSize 数据导出量级
dataConfig 数据导出配置
  • type:COOKIE|FILE|PARAM|INSTRUCTION 分别表示 cookie|文件参数|出参|数据指令。
  • params:参数列表
delay duration 延时时长,单位为毫秒
ifBegin ifEndNodeId 匹配的判断结束指令节点ID
operator 操作符
param 表达式
value 对比值
ifEnd ifBeginNodeId 匹配的判断开始指令节点ID
repeatBegin repeatEndNodeId 匹配的循环结束指令节点ID
repeatEnd repeatBeginNodeId 匹配的循环开始指令节点ID
repeatCount 循环次数
wait type FIXED|NORMAL|UNIFORM分别表示固定分布、均匀分布、正态分布。
base 对于固定分布代表固定值,对于均匀分布代表延迟基准,对于正态分布代表均值。
scope 对于固定分布无意义,对于均匀分布代表可变跨度,对于正态分布代表方差。

操作步骤

  1. 登录PTS控制台
  2. 选择以下任意一种方式进入导入脚本的页面。
    • 在控制台的左侧导航栏单击概览,单击快速压测,选择导入脚本
    • 在控制台的左侧导航栏选择创建压测 > 创建PTS场景,单击创建压测页面左下角的更多创建方式 > 导入模板
  3. 导入脚本对话框选择脚本类型,并单击上传图标上传脚本。
    说明
    • 可选择的脚本类型有JMeter脚本(JMX)、Postman(JSON)脚本、YAML脚本。一个压测场景仅能导入一个脚本,在未保存场景配置前,可重新上传脚本覆盖之前的导入内容。暂不支持在已有场景中导入脚本。
    • PTS支持导入的脚本说明及字段含义,请参见背景信息。请勿导入包含PTS不支持的类型或协议的脚本,若导入的脚本不合规,控制台将弹出错误提示框。
  4. 导入脚本对话框中单击确定
    导入成功后,在创建压测页面,您可以看到脚本内容已转化为对应的API压测信息。Import Script Result

相关操作

脚本导入成功后,您可以使用PTS提供的高级功能编排压测场景并发起压测,可参考以下文档: