文档

在线教育压测示例

更新时间:

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

背景信息

要发起一次性能压测,首先需要创建一个压测场景。压测场景中包含一个或多个并行的业务,每个业务包含一个或多个串行的请求。

场景说明

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

  1. 登录在线教育系统。

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

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

  2. 查看课程列表。

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

  3. 提交选课。

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

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

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

基本场景配置

步骤一:配置压测场景

  1. 登录PTS控制台,在左侧导航栏选择性能测试 > 创建场景,然后单击PTS压测
  2. 创建PTS场景页面,填写场景名,例如在线教育示例

  3. 为模拟不同用户登录,需要使用文件参数构造用户登录信息,步骤如下。

    1. 在本地准备参数文件:新建一个.csv文件(用Excel编辑之后另存为.csv格式,或者用Apache的commons-csv来生成),构造两列数据,分别对应用户名和密码,示例如下。

      参数文件示例

    2. 创建PTS场景页面下方,单击数据源管理,然后在文件数据源页签单击+上传文件,将本地准备的参数文件上传到该场景中。

    3. 填写参数名,例如usernamepasswd

      rui

    4. 创建PTS场景页面的场景配置页签下,单击添加指令的下拉箭头,选择数据配置

    5. 单击数据配置一栏右侧的箭头图标展开更多详细设置,然后在文件参数设置页签中选择参数名

      数据配置

  4. 场景配置页签下,填写新的压测API名称、URL地址,并选择请求方法。示例如下。

    1. 填写基本请求信息

      • API名称:登录在线教育系统

      • 压测URL:http://www.example.com/mocks/online/login

      • 请求方式:POST

        说明

        该示例中,使用的域名为www.example.com,均为示例地址,压测中不产生真实请求,您可以根据真实业务场景填写压测URL。

        场景配置界面

    2. 选择Body定义页签,选择Body类型并使用用户登录信息,定义该压测API的Body内容。

      例如,Body是JSON格式,则Content-Type选择raw,在右侧下拉框中选择JSON (application/json)

      Body正文定义如下。

      {
       "username": "${username}",
       "password": "${passwd}"
      }                       

      如图所示:

      body定义

      说明

      Body正文中的 ${username} 和 ${passwd},为用户登录参数。您可以通过页面左下角的参数列表,快速查看并复制。

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

  5. 单击添加压测节点,填写第二个API的信息。示例如下。

    1. 填写基本请求信息

      • API名称:查看课程列表

      • 压测URL:http://www.example.com/mocks/online/list

      • 请求方法:POST

    2. 为了将某个课程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"
        }
        ]
        }                                
        说明

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

      如下图所示:

      设置出参

  6. 单击添加压测节点,填写第三个API的信息。示例如下:

    1. 填写基本请求信息

      • API名称:提交选课

      • 压测URL:http://www.example.com/mocks/online/submit

      • 请求方法:POST

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

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

      • Key:填写自定义的Key。

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

      如图所示:

      设置body

    3. 选择出参定义页签,并填写信息。

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

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

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

        示例中的Response Body如下,则解析表达式为result:(.+)

        result:success                                    
        说明

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

        设置出参2

    4. 为判断提交选课是否成功,为该API设置检查点。选择检查点(断言)页签,在断言区域填写对应的信息。

      • 检查点类型选择出参

      • 检查对象选择result

      • 检查条件选择等于

      • 检查内容设置为success

      如下图所示:设置检查点

步骤二:配置施压环境

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

  1. 选择施压配置页签,填写信息,示例如下:

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

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

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

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

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

    其他可保留默认值。

  2. 单击创建PTS场景页面下方的保存配置

步骤三:调试场景

  1. 单击创建PTS场景页面下方的调试场景。一般调试时间在10秒至30秒。

    调试结束后,可以查看所有API的调试详情。具体请参见调试场景

  2. 选择查看课程列表API,单击点此去测试出参正则表达式

    场景调试界面

  3. 选择来源,填写正则表达式,单击测试表达式,可验证提取的内容是否符合预期。

    测试表达界面

    您也可以单击同步出参配置,将此处的表达式同步为出参。

步骤四:启动压测

单击保存去压测,即可发起压测。

更多信息,请参见以下文档: