前言
性能测试中的场景设计是实施性能测试的基础,只有合理的设计测试场景才能获得有价值的测试数据,为接下来的确认瓶颈、系统调优打下基础。场景(Scenario)是一种用来模拟大量用户操作的技术手段,通过配置和执行场景向服务器产生负载,验证系统的各项性能指标是否达到用户要求,而Controller可以帮助我们对场景的设计、执行以及监控进行管理。
Load runner Controller来管理和维护场景,可以在一台工作站控制一个场景中的所有虚拟用户(Vuser)。执行场景时,Controller会将该场景中的每个Vuser分配给一个负载生成器。负载生成器执行Vuser脚本,从而使Vuser可以模拟真实用户操作的计算机。
场景的分类
1. 人工场景(手动场景)
所谓人工场景,实际就是自定义模式,各因素完全由我们来设置的创建场景的方法。相比面向目标场景,人工场景在实际工作中应用的更为广泛。用赛车游戏来比喻,这种方法类似常规比赛,不同的汽车从同一起点出发,到同一终点结束,最终按照时间排出名次。
2. 面向目标场景
面向目标场景则与人工场景有所不同,它预先定义了一个测试目标,Load Runner将根据这个目标自动构建场景,有点类似向导模式。这种方法对于验证在项目性能说明书中列出、需要达到的性能目标很方便。还是用赛车游戏来比喻,面向目标场景有点类似计时赛或者追逐赛,不同的汽车从同一起点出发,在规定的时间内,走的最远者获胜。
在面向目标场景的“向导模式”中,设定了一个或者多个测试目标,比如要求系统达到每秒处理5个事务,Load Runner再根据这些目标自动创建场景。目前,Load Runner支持的测试目标有如下几种:
Ø 虚拟用户数量。
Ø 每秒点击次数(只对Web Vuser有效)
Ø 每秒事务数量
Ø 每分钟访问页面数量(也仅对Web Vuser有效)
Ø 事务响应时间
场景设置描述
㈠ .新场景设置对话框
字段解释:
Ø Select Scenario Type(选择场景类型):此选项区域列出了场景的两种类型:
① Manual Scenario(手动场景或人工场景):
手动场景设置我们可以设置不同的业务组 用户数量,同时编辑计划指定相关的运行时刻,虚拟用户加载策略等完成场景设计工作。在创建脚本的过程中若选择了“Use the Percentage Mode to distribute the Vusers among the scripts”选项,则可以指定虚拟用户总体数量,而后针对每个业务组设置用户数百分比的形式完成场景设置。
未勾选Use the Percentage Mode to distribute the Vusers among the scripts:
勾选Use the Percentage Mode to distribute the Vusers among the scripts:
②Goal-Oriented Scenario(面向目标场景):
允许Load Runner控制器根据具体的目标创建一个场景
Ø
脚本选择
由于Web应用比较复杂,在实际工作中需要创建一系列的脚本,比如登陆脚本、订票脚本、回复帖子脚本等。因此,可以通过选择不同的脚本组合来模拟不同虚拟用户的不同操作。
Ø Available Script(可用脚本):首先可以从此处选择可用的脚本。
Ø Scripts in Scenario(场景中的脚本):选择一个可用脚本后通过【Add】按钮将其添加到此处。
Ø Remove(移除):在Scripts in Scenario中选中一个在场景中的脚本,然后单击【Remove】按钮从Scripts in Scenario列表中移除。
Ø Browse(浏览):单击【Browse】按钮可以选择脚本。
Ø Record(录制):单击【Record】按钮可以录制脚本,弹出脚本录制界面:
Ø Quality Center…:连接服务器
㈡ .手动设置场景
Ø 图的最下方,有两个选项卡,分别是Design(设计)和Run(运行)。它们清楚地描述了手动场景的设置步骤就是:先设计,再执行。在此我们只讨论场景的设计。
Ø 左上方界面显示Scenario Groups为场景用户组设置界面
.
:开始执行场景
.
:场景中的虚拟用户设置
.
:增加用户组
.
:删除用户组
.
运行时设置
.
详细信息设置
.
查看脚本
Ø 右上方界面显示Service Level Agreement为服务协议界面
Ø 左下方界面显示Scenario Schedule为场景计划界面
①首先看此界面的主菜单设置:
.
New Scenario可以新建一个场景
.Delete Scenario删除一个场景
.Save new name保存更改的场景名
.Start Time场景开始时间
包括:Without delay(立刻执行)、With a delay of(延时执行)可以设置具体时间之后再运行场景、At(定时执行)可以设置在何时(具体日期、小时)运行场景。
②场景计划主体包括:
Ø更改场景名
Ø计划按场景或用户组
1. 场景方式中所有用户组虚拟用户增长方式一致,用学校活动来比喻,类似全校所有班级参加团体体操比赛。
2. 用户组方式中各用户组中的虚拟用户增长方式可以不同,类似全校各班级自报节目的汇演。
Ø[图片上传失败...(image-1d8cd7-1598582584287)]
运行方式选择
1. 真实情况计划这种方式可以修改持续运行(Duration)与停止虚拟用户(Stop Vuser)这两种在启动虚拟用户之后发生的场景操作属性,它相对第二种执行方式更接近真实情况。
2. 按脚本设置运行直到结束,这种方式则无法设置用户组启动后的各操作属性数值,脚本运行开始后,用户组的属性就维持不变了。
以上三个为设置执行场景的总体规则
以下为设置执行场景过程中各个分步操作的属性
Ø 主菜单分别为“添加”、“编辑”、“删除”、“上移”、“下移”Action
Ø 编辑Initialize初始化操作属性:
包括:
. Initialize all Vusers simultaneously(同时初始化所有的虚拟用户)
. Initialize –Vusers every---(每隔一段时间初始化一定数目的虚拟用户)
. Initialize each Vuser just before it runs(在运行之前初始化每一个虚拟用户)
Ø 编辑Start Vusers启动虚拟用户操作属性:
包括:Start—Vusers:总共启动多少个虚拟用户
然后选择这些需要启动的虚拟用户的启动方式:
. Simultaneously:同时启动
. --Vusers every HH:MM:SS:每隔一段时间加载一定数目的虚拟用户
Ø 编辑Duration持续时间操作属性
包括:
. Run until completion:场景持续运行直到完成
. Run for –day and HH:MM:SS:场景运行指定的时间
Ø 编辑Stop Vusers停止虚拟用户操作属性
包括:Stop—Vusers:总共停止多少个虚拟用户
然后选择这些需要停止的虚拟用户的停止方式:
. Simultaneously:同时停止
. --Vusers every HH:MM:SS:每隔一段时间停止指定数目的虚拟用户
Ø 右下方界面显示Interactive Schedule Graph为运行当前场景,达到场景目标所历经的过程趋势图
㈢ .面向目标的场景设置
Ø 左上方界面显示Scenario Scripts为当前场景中的脚本列表
Ø 右上方界面显示Service Level Agreement为服务协议界面
Ø 右下方界面显示图片区域为运行当前场景,达到场景目标所经历的过程趋势图
Ø 左下方界面显示Scenario Goal为场景目标信息显示和编辑(Edit Scenario Goal)区域
由图可知:系统默认选择了场景目标为-----每秒点击次数100
其他属性为:
. Min Number of Vusers:50
最小虚拟用户50
. Max Number of Vusers:150
最大虚拟用户150
. Scenario Duration:30min after the target has been achieved
场景持续时间:目标完成后30min
. Load Behavior: Reach target hits per second using automatic ramp up
性能负载:目标每秒点击自动增加
Ø Edit Scenario Goal编辑场景目标
Ø Goal Profile Name选择不同的目标:
Ø Define Scenario Goal修改场景目标具体数值:
包括:
Goal Type:目标类型
Reach goal of …hits per second:目标每秒点击数
Using a minimum of … and a maximum of … Vuser:虚拟用户的最小值和最大值
Ø Scenario Setting场景设置
.此为达到目标后系统继续运行时间
.此为【如果目标无法达到,系统的处理方式:(If target cannot be reached)】
Stop scenario and save results停止场景并保存结果
Continue scenario without reaching goal继续运行场景、无须达到目标
另外,还可以选中接受通知(Receive notification)使得测试人员了解测试目标无法达到这一情况
Ø Load Behavior负载行为设置为达到当前目标而增加负载
负载增加的行为方式有3种:
. Automatic 自动:默认方式,无须设置
. Reach target number of hits per second after ..时间间隔:这种方式可以设置当前场景在达到目标之前需要运行多长时间,以小时:分钟:秒为单位。
. Step up by…hits per second every …:渐进式:这种方式可以采取一种渐进增加的策略执行场景,比如上图为每隔2分钟增加20个虚拟用户。其他的目标具体设置内容和数值有所不同。
Ø Do not change recorded think time不修改录制的思考时间
思考时间是用户在Web应用各操作之间的时间。因此,在与事务相关的场景目标设置中,若维持每秒事务数量不变,如果选中了此项,则虚拟用户数量要相应的增加。
Ø 面向目标的场景设置,同样可以设置场景的启动时间:
与手动场景设置一样同样包括:Without delay(立刻执行)、With a delay of(延时执行)可以设置具体时间之后再运行场景、At(定时执行)可以设置在何时(具体日期、小时)运行场景。
㈣.控制器的全局设置
前面了解的是创建手动场景和面向目标的场景的各种设置,这些设置都是针对具体的特定测试场景的,如果场景不同或者测试类型不同,数值一般不同。此处描述的控制器的全局设置则有些特殊,其中的数值对于该控制器下管理和实现的所有场景都有效。
Ø 打开控制器全局设置的方法:
Tools -----Options打开如图
Ø Timeout超时设置
当网络状况不好、场景中机器较多时,可以修改窗体中各个微调框的数值(单位均为秒)以免Load Runner返回错误。
此为控制器与虚拟用户初始化等活动的超时设置
① 可选框Enable timeout checks为允许超时设置,如果禁用超时限制,Load Runner将无限长地等待负载生成器进行连接和断开连接,并等待其执行“初始化”、“运行”、“暂停”和“停止”命令。
②Load Generator负载产生器:可以设置连接(Connect)和断开连接(Disconnect)超时时间。连接超时可以输入等待其他连接到任何负载生成器的时间限制。如果在指定的时间内连接不成功,负载生成器的状态将变为“失败”。断开连接超时可以输入等待从其他任何负载生成器断开连接的时间限制。如果在指定的时间内断开连接不成功,负载生成器的状态将变为“失败”。
③还可以输入Init、Run、Pause、Stop命令的最长时间限制
每4刷新虚拟用户状态一次。
Ø Run-Time Settings运行时设置
虚拟用户配额(Vuser Quote):要防止系统过载,可以为Vuser活动设置配额,用来设置负载生成器一次可以初始化的最大Vuser数。
停止运行时虚拟用户执行策略(When stopping Vusers):
1. 等待当前脚本迭代结束
2. 等待当前脚本操作结束
3. 立即结束
允许使用种子值来产生随机顺序。
每个种子值代表一个用于测试执行的随机值顺序。只要使用同一个种子值,就会为场景中的Vuser分配相同顺序的值。该设置将应用于使用Random方法从数据文件分配值的参数化Vuser脚本。
Ø Run-Time File Storage运行时文件存储位置
可以设置脚本和结果存储的位置:
1. 保存在本机
2. 保存在共享网路驱动盘(利于别人查看和分析)
Ø Path Translation Table路径转换表
路径转换表是一种映射,将控制器上的文件路径转换为远程主机上的文件路径。这样的设置对于网路中包含异类系统(比如既有Windows,也有Unix)是很有用的。
选择“Convert to UNC”复选框,指示Load Runner忽略路径转换表并将所有路径都转换为通用命名约定格式。
路径翻译表中的每一条记录应该类似如下的语句:
[]
Ø Monitors监视器
监视器好像公路上的电子眼,用于随时报告场景的各项信息,他可以按照规定的时间(也叫做数据采样率,单位为秒)获得服务器资源信息,并反映到控制器界面当中。
事务数据(Transaction Data)
启用事务监视器(Enable Transaction monitor):指在场景开始时开始监控事务。
频率(Frequency):用来选择联机监视器为生成“事务”、“数据点”、“Web资源”联机图而采集数据的频率(以秒为单位)。
默认值为5秒。对于小型场景,建议使用频率1;对于大型场景,建议使用频率3-5。频率越高,网络流量越低。
服务器资源采样率(Server Resource Sampling):采样速率是连续采样之间的时间间隔(以秒为单位)。用来输入Load Runner在场景中采集监控数据的速率。如果增大采样速率,则 数据的监控频率就会降低。
错误处理:可以将错误发送到输出窗口或者以提示信息框的形式显示出来(可能打断执行过程,对希望性能测试自动执行不利)。
调试信息与调试级别0-9:把与调试有关的消息发送至输出日志。
Ø Execution执行页
默认的场景计划:
1. 真实情况计划这种方式可以修改持续运行(Duration)与停止虚拟用户(Stop Vuser)这两种在启动虚拟用户之后发生的场景操作属性,它相对第二种执行方式更接近真实情况。
2. 按脚本设置运行直到结束,这种方式则无法设置用户组启动后的各操作属性数值,脚本运行开始后,用户组的属性就维持不变了。
Ø WAN Emulation 网络竞争页
排除来自于网络的主机(Exclude hosts from WAN emulation)
接下来是添加主机名和IP地址。