在线教育压测示例

本文以在线教育的典型业务场景为例,为您介绍如何在PTS中编排压测场景并发起压测。

场景说明

某在线教育网站需要压测选课相关网页。根据业务逻辑,选课流程划分为三步,每一步的压测需求如下:

  1. 登录在线教育系统

    • 需要构造用户的登录信息,如用户名和密码。

    • 用户的登录信息(即Cookie)需要传递给后面两个请求查看课程列表提交选课

  2. 查看课程列表

    课程ID传递给提交选课请求。

  3. 提交选课

    • 使用上一个请求中的课程ID,构造提交选课的请求。

    • 判断提交选课是否成功。

基本压测场景设置如下所示。

基本场景配置

前提条件

  • 开通PTS服务

  • 准备一个CSV格式的参数文件,格式如下。关于参数文件的更多要求,请参见参数文件规范

    username,password
    user1,Password1
    user2,Password2
    user3,Password3
    

步骤一:配置压测场景

  1. 登录PTS控制台,选择性能测试 > 创建场景,然后单击PTS压测

  2. 添加参数文件到数据源

    1. 单击数据源管理,并在文件数据源页签中单击+ 上传文件,选择本地参数文件并上传。

    2. 选中首行作为参数名,选中后无需手动定义参数名,PTS读取参数文件时将跳过首行的数据。如果参数文件第一行不是参数名,则必须根据业务场景定义每列数据的参数名。image

  3. 添加数据配置节点

    1. 场景配置页签中添加压测API,然后单击添加指令右侧的下拉箭头,选择数据配置

    2. 数据源参数设置页签下,选择设置好的参数名。

      说明
      • 选中数据轮询一次能够保证在使用数据文件组装请求时,每行只用到一次,避免重复使用。当数据轮询一次用尽,不论设置的压测量级是多少,该压测场景将停止生成新的压测请求。

      • 若不选中数据轮询一次,导入的参数会在压测中循环使用。

      • 数据轮询一次基准列均只能指定一个参数,设置轮询一次之后基准列无法设置。

      image

  4. 压测场景编排

    1. 配置登录接口

      压测URL:输入您的待压URL,本示例使用http://web.example.com/login

      请求方式:选择POST

      Body定义Content-Type类型选择x-www-form-urlencoded,然后单击编辑区域右上角的文本编辑,在文本编辑框中输入{"username":"${username}","password":"${password}"}

      image

      说明

      当前请求的Cookie信息(即用户登录信息),将自动共享给该压测场景的其他API,无需设置。

    2. 配置查看课程列表接口

      单击添加压测API并选择HTTP,添加一个新的API节点。并配置基本请求信息。

      • 压测URL:输入您的待压URL,本示例使用http://web.example.com/mocks/online/list

      • 请求方式:选择POST

      为了将某个课程ID传递给下一个请求,需要提取当前API响应(Response)中的课程ID,作为出参。选择出参定义页签,填写以下信息。

      image

      • 出参名:填写自定义的参数名称。

      • 来源:选择Body的解析格式,如JSON。

      • 解析表达式:根据Response详情填写解析表达式。

        假设,要提取第二个课程ID,则根据以下Response Body示例,解析表达式为:schedule_list[1].ID

        {
        "schedule_list": [
        {
        "Name": "math",
        "ID": "001"
        },
        {
        "Name": "english",
        "ID": "002"
        },
        {
        "Name": "science",
        "ID": "003"
        }
        ]
        }                                
        说明

        出参的解析表达式如何定义,是否正确,可以在调试功能里使用表达式调试的功能,正确之后再同步过来即可,具体操作步骤请参见调试场景

    3. 配置提交选课接口

      单击添加压测API并选择HTTP,添加一个新的API节点。并配置基本请求信息。

      • 压测URL:输入您的待压URL,本示例使用http://web.example.com/mocks/online/submit

      • 请求方式:选择POST

      选择Body定义页签,在Body中使用前一个API导出的课程ID。

      设置body

      • Content-Type:选择x-www-form-urlencoded格式。

      • Key:填写自定义的Key,例如ID_from_last_api

      • Value:单击页面左下角的参数列表,查看业务会话参数(如“ID”),单击复制图标。在Value框中粘贴即可。

      选择出参定义页签,并填写以下信息。

      设置出参2

      • 出参名:填写自定义的参数名称,例如result

      • 来源:选择Body的解析格式,例如Body:TEXT

        说明

        来源要选择Body的解析格式为TEXT,同样地,您也可以在场景调试中使用表达式调试的功能调试您的解析表达式。

      • 解析表达式:根据Response详情填写解析表达式。示例中的Response Body为result:success,则解析表达式为result:(.+)

      检查点(断言)页签,为该API设置检查点,可判断提交选课是否成功。

      设置检查点

      • 检查点类型:选择出参

      • 检查对象:选择result

      • 检查条件:选择等于

      • 检查内容:设置为success

步骤二:压力模式配置

基本场景构建完成后,需要选择施压模式、设置施压量级等。

  • 压力来源:选择公网,如果您在阿里云内网环境,可选择阿里云VPC内网

  • 压力模式:选择虚拟用户模式。以虚拟用户模式发起压测,更适合客户端发起的场景,而RPS模式是站在服务端的视角,衡量系统吞吐量。

  • 递增模式:选择手动调速

  • 最大虚拟用户数:虚拟用户模式下,需要填写最大虚拟用户数,例如10。

  • 压测总时长:例如1分钟。

其他可保留默认值。

说明

发起压测涉及费用问题,建议您合理选择施压量级,如需了解更多信息,请参见计费概述压力模式与量级配置

步骤三:调试并启动场景

  1. 调试场景可验证配置是否合理,避免压测失败,建议您先调试场景。

  2. 单击保存去压测,在温馨提示页面,选择立即执行并勾选确认本次压测已获得准许并遵守当地法律,然后单击启动压测

分析压测结果

压测结束后,系统会自动获取压测过程中的数据,例如压测场景指标、业务详情数据、监控详情数据和API采样日志等,生成压测报告,您可在压测报告页面查看。更多信息,请参见查看PTS压测报告image