Manual Scenario(手工场景)
目标
- 理解手工场景的设计
- 理解手工场景的启动模式
一、Manual Scenario(手工场景)【重点】
在实际性能测试工作中,应用最多的还是基于手工设置的场景;
1.1 为什么工作中选择手工场景?
在手工场景模式内可以最大程度模拟业务场景(虚拟用户的增加、减少、虚拟用户对混合场景的应用)
1.2 手工场景的创建
1) 启动 选择手工场景
启动:
1). 启动Controller工具
2). Select Scenario Type:Manual Scenario(手工场景)说明:
1). Use the Percentage Mode to ... 选项:为使用百分比模式
2). 场景添加脚本参考-目标场景添加脚本
2) 手工场景界面
1. 标1:手工场景的基础计划(脚本名称为组名称、虚拟用户数量默认为10);
2. 标2:标1基础计划的默认计划选项(计划方式:场景模式、运行模式:实际计划)
3. 标3:标1计划运行模式
(虚拟用户初始化方式、虚拟用户启动加载方式、计划持续运行时间方式、计划完成用户退出方式)
4. 标4:标3计划运行策略直观图
以上4点为手工场景的核心,是手工场景的重要组成
二、手工场景-各区域
2.1 默认基础计划
标1:
1). 1:运行场景
2). 2:编辑虚拟用户
3). 3:添加组(脚本)
4). 4:删除组(脚本)
5). 5:运行设置-场景内设置 快捷键:F4
6). 6:查看当前选中组的详情信息(刷新功能)
7). 7:查看当前选中组脚本-切换回VuGen中
标2:
1). Group Name: 组名称(脚本名称)
2). Script Path:组路径(脚本路径)
3). Quantity:虚拟用户数量
4). Load Generators:当前组使用的负载机
2.2 编辑/创建计划
- Schedule by - 计划方式
- Run Mode - 运行模式
1) Schedule by(计划方式)
1. Scenario(场景):以场景计划为单位,Controller同时运行所有参与场景的Vuser组;
(定义的场景运行计划同时会应用于所有Vuser组)
2. Group(组):以Vuser组为单位,参与场景计划的Vuser组,每个组都按其自己的单独计划运行;
(每个Vuer组(脚本)都要设置单独的运行计划策略)
提示:
1. 计划方式一般情况下选择Scenario(场景),这样面对混合场景时,计划运行策略只需要设置一次;
2. Group(组):场景中如果存在业务依赖关系时,必须使用Group组,详情请看Group(组)应用图
Group(组)应用图
依赖关系:两个业务脚本有先后执行顺序
(假设模拟订票业务20个并发,前提必须先注册20个用户(注册业务)执行20次,再使用这些新注册用户去订票)
2) Run Mode(运行模式)
1. Real-world schedule(实际计划):场景根据模拟用户实际计划操作来运行【推荐】
(可以通过添加用户组的Action来改变组的虚拟用户策略)
2. Basic schedule(基本计划):和实际计划相同,不同之处,基本计划只能设置虚拟用户在场景一次的启动和
停止策略
2.3 全局计划运行策略
- 计划运行策略是根据Schedule by(计划方式)与Run Mode-模式的组合而产生不同的策略
- 全局计划策略、计划改变模式改变、都会影响计划图的改变
1) 全局计划 场景+真实计划(Scenario + Real-world schedule)
1. Initialize(虚拟用户初始化策略)
1:Controller运行Vuser之前对所有Vuser同时进行初始化
2:Controller在运行指定数目的Vuser之前,根据指定时间间隔对Vuser逐渐进行初始化
3:Controller在每个Vuser开始运行之前对其进行初始化【推荐默认】
提示:
1). Controller运行虚拟用户(线程)之前必须初始化
2). 一般采取默认,运行每个Vuser之前对其初始化
2. Start Vusers(虚拟用户启动策略) 【重点】
1:要启动的虚拟用户数;默认为场景内个Vuser组的Vuser用户总和;
2:同步启动1设定的虚拟用户数;
3:逐渐运行1设定的虚拟用户数;默认15秒启动指定虚拟用户。
3. Duration(持续运行) 【重点】
1:脚本执行一次,如果有迭代,那么执行到迭代次数完成
2:当前场景运行指定时长 (如果选择此项,那么脚本内如果设置有迭代次数,迭代次数设置将失去作用)
提示:
1). 持续运行策略需要根据场景需求来选择,如:持续压测5分钟,就选第二条
2). 如果脚本有迭代次数,需要迭代完毕就停止场景的话,就选择第一条
4. Stop Vuser(虚拟用户停止策略)
1:停止的虚拟用户数,默认All(所有用户),或指定用户数
2:同步停止1设定的用户数
3:逐渐停止1设定的用户数,默认:30秒停止5个虚拟用户
2) 全局计划 用户组+真实计划(Group + Real-world schedule)
1). Start when group ...... finishes:指定某一用户组(脚本)执行完毕后,执行当前组(脚本);
(脚本有依赖关系时使用,比如:必须先注册再登录)
2). 其他选项参考(Scenario + Real-world schedule)说明
三、案例1
- 场景搭建是模拟真实应用场景,而真实场景一般都为混合模式(多个业务)
- 结合LR自带机票网站,模拟真实场景来学习混合场景的搭建
场景:
1. 根据需求分析WebTours订票网站高峰期时25人访问,其中80%用户在使用订票业务,20%用户在使用注册业务;
2. 混合场景 = 注册业务(5) + 订票业务(20)
需求:
1. 登录业务时间小于5秒;
2. 订票业务小于10秒;
提示:
1. 注册业务:录制/手工编写注册脚本
2. 订票业务:录制/手工编写订票脚本,脚本内需要插入登录事务和订票事务
3. WebTours 项目中用户注册后生成文件的存放路径为:
例如:C:\LoadRunner安装根目录\WebTours\MercuryWebTours\users
3.1 案例1 难点分析
- 先注册20个账户,再使用这20个新注册账户订票;
- 订票脚本依赖注册脚本(Schedule by: Group)
- 注册脚本参数化:行的选择和更新值方式(Unique + Each iteration + Abort Vuser)
(Abort Vuser:当没有唯一行时处理方式,终止用户) - 购票脚本参数化:行的选择和更新值方式(Sequential + Once)