本文以在线教育的典型业务场景为例,为您介绍如何在PTS中编排压测场景并发起压测。
场景说明
某在线教育网站需要压测选课相关网页。根据业务逻辑,选课流程划分为三步,每一步的压测需求如下:
登录在线教育系统
需要构造用户的登录信息,如用户名和密码。
用户的登录信息(即Cookie)需要传递给后面两个请求查看课程列表和提交选课。
查看课程列表
将课程ID传递给提交选课请求。
提交选课
使用上一个请求中的课程ID,构造提交选课的请求。
判断提交选课是否成功。
基本压测场景设置如下所示。
前提条件
步骤一:配置压测场景
登录PTS控制台,选择 ,然后单击PTS压测。
添加参数文件到数据源
单击数据源管理,并在文件数据源页签中单击+ 上传文件,选择本地参数文件并上传。
选中首行作为参数名,选中后无需手动定义参数名,PTS读取参数文件时将跳过首行的数据。如果参数文件第一行不是参数名,则必须根据业务场景定义每列数据的参数名。
添加数据配置节点
在场景配置页签中添加压测API,然后单击添加指令右侧的下拉箭头,选择数据配置。
在数据源参数设置页签下,选择设置好的参数名。
说明选中数据轮询一次能够保证在使用数据文件组装请求时,每行只用到一次,避免重复使用。当数据轮询一次用尽,不论设置的压测量级是多少,该压测场景将停止生成新的压测请求。
若不选中数据轮询一次,导入的参数会在压测中循环使用。
数据轮询一次和基准列均只能指定一个参数,设置轮询一次之后基准列无法设置。
压测场景编排
配置登录接口
压测URL:输入您的待压URL,本示例使用
http://web.example.com/login
。请求方式:选择
POST
。Body定义:
Content-Type
类型选择x-www-form-urlencoded
,然后单击编辑区域右上角的文本编辑,在文本编辑框中输入{"username":"${username}","password":"${password}"}
。说明当前请求的Cookie信息(即用户登录信息),将自动共享给该压测场景的其他API,无需设置。
配置查看课程列表接口
单击添加压测API并选择HTTP,添加一个新的API节点。并配置基本请求信息。
压测URL:输入您的待压URL,本示例使用
http://web.example.com/mocks/online/list
。请求方式:选择
POST
。
为了将某个课程ID传递给下一个请求,需要提取当前API响应(Response)中的课程ID,作为出参。选择出参定义页签,填写以下信息。
出参名:填写自定义的参数名称。
来源:选择Body的解析格式,如JSON。
解析表达式:根据Response详情填写解析表达式。
假设,要提取第二个课程ID,则根据以下Response Body示例,解析表达式为:
schedule_list[1].ID
。{ "schedule_list": [ { "Name": "math", "ID": "001" }, { "Name": "english", "ID": "002" }, { "Name": "science", "ID": "003" } ] }
说明出参的解析表达式如何定义,是否正确,可以在调试功能里使用表达式调试的功能,正确之后再同步过来即可,具体操作步骤请参见调试场景。
配置提交选课接口
单击添加压测API并选择HTTP,添加一个新的API节点。并配置基本请求信息。
压测URL:输入您的待压URL,本示例使用
http://web.example.com/mocks/online/submit
。请求方式:选择
POST
。
选择Body定义页签,在
Body
中使用前一个API导出的课程ID。Content-Type:选择
x-www-form-urlencoded
格式。Key:填写自定义的Key,例如
ID_from_last_api
。Value:单击页面左下角的参数列表,查看业务会话参数(如“ID”),单击复制图标。在Value框中粘贴即可。
选择出参定义页签,并填写以下信息。
出参名:填写自定义的参数名称,例如
result
。来源:选择Body的解析格式,例如Body:TEXT。
说明来源要选择Body的解析格式为TEXT,同样地,您也可以在场景调试中使用表达式调试的功能调试您的解析表达式。
解析表达式:根据Response详情填写解析表达式。示例中的Response Body为
result:success
,则解析表达式为result:(.+)
。
在检查点(断言)页签,为该API设置检查点,可判断提交选课是否成功。
检查点类型:选择出参。
检查对象:选择result。
检查条件:选择等于。
检查内容:设置为
success
。
步骤二:压力模式配置
基本场景构建完成后,需要选择施压模式、设置施压量级等。
压力来源:选择国内公网,如果您在阿里云内网环境,可选择阿里云VPC内网。
压力模式:选择虚拟用户模式。以虚拟用户模式发起压测,更适合客户端发起的场景,而RPS模式是站在服务端的视角,衡量系统吞吐量。
递增模式:选择手动调速。
最大虚拟用户数:虚拟用户模式下,需要填写最大虚拟用户数,例如10。
压测总时长:例如1分钟。
其他可保留默认值。
步骤三:调试并启动场景
调试场景可验证配置是否合理,避免压测失败,建议您先调试场景。
单击保存去压测,在温馨提示页面,选择立即执行并勾选确认本次压测已获得准许并遵守当地法律,然后单击启动压测。
分析压测结果
压测结束后,系统会自动获取压测过程中的数据,例如压测场景指标、业务详情数据、监控详情数据和API采样日志等,生成压测报告,您可在压测报告页面查看。更多信息,请参见查看PTS压测报告。