性能测试之场景设计

前言

性能测试中的场景设计是实施性能测试的基础,只有合理的设计测试场景才能获得有价值的测试数据,为接下来的确认瓶颈、系统调优打下基础。场景(Scenario)是一种用来模拟大量用户操作的技术手段,通过配置和执行场景向服务器产生负载,验证系统的各项性能指标是否达到用户要求,而Controller可以帮助我们对场景的设计、执行以及监控进行管理。

Load runner Controller来管理和维护场景,可以在一台工作站控制一个场景中的所有虚拟用户(Vuser)。执行场景时,Controller会将该场景中的每个Vuser分配给一个负载生成器。负载生成器执行Vuser脚本,从而使Vuser可以模拟真实用户操作的计算机。

场景的分类

1. 人工场景(手动场景)

所谓人工场景,实际就是自定义模式,各因素完全由我们来设置的创建场景的方法。相比面向目标场景,人工场景在实际工作中应用的更为广泛。用赛车游戏来比喻,这种方法类似常规比赛,不同的汽车从同一起点出发,到同一终点结束,最终按照时间排出名次。

2. 面向目标场景

面向目标场景则与人工场景有所不同,它预先定义了一个测试目标,Load Runner将根据这个目标自动构建场景,有点类似向导模式。这种方法对于验证在项目性能说明书中列出、需要达到的性能目标很方便。还是用赛车游戏来比喻,面向目标场景有点类似计时赛或者追逐赛,不同的汽车从同一起点出发,在规定的时间内,走的最远者获胜。

在面向目标场景的“向导模式”中,设定了一个或者多个测试目标,比如要求系统达到每秒处理5个事务,Load Runner再根据这些目标自动创建场景。目前,Load Runner支持的测试目标有如下几种:

Ø 虚拟用户数量。

Ø 每秒点击次数(只对Web Vuser有效)

Ø 每秒事务数量

Ø 每分钟访问页面数量(也仅对Web Vuser有效)

Ø 事务响应时间

场景设置描述

㈠ .新场景设置对话框

image.png

字段解释:

Ø 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:

image.png

勾选Use the Percentage Mode to distribute the Vusers among the scripts:


image.png

②Goal-Oriented Scenario(面向目标场景):

image.png

允许Load Runner控制器根据具体的目标创建一个场景

Ø

image.png

脚本选择

由于Web应用比较复杂,在实际工作中需要创建一系列的脚本,比如登陆脚本、订票脚本、回复帖子脚本等。因此,可以通过选择不同的脚本组合来模拟不同虚拟用户的不同操作。

Ø Available Script(可用脚本):首先可以从此处选择可用的脚本。

Ø Scripts in Scenario(场景中的脚本):选择一个可用脚本后通过【Add】按钮将其添加到此处。

Ø Remove(移除):在Scripts in Scenario中选中一个在场景中的脚本,然后单击【Remove】按钮从Scripts in Scenario列表中移除。

Ø Browse(浏览):单击【Browse】按钮可以选择脚本。


image.png

Ø Record(录制):单击【Record】按钮可以录制脚本,弹出脚本录制界面:


image.png

Ø Quality Center…:连接服务器


image.png

.手动设置场景

image.png

Ø 图的最下方,有两个选项卡,分别是Design(设计)和Run(运行)。它们清楚地描述了手动场景的设置步骤就是:先设计,再执行。在此我们只讨论场景的设计。

Ø 左上方界面显示Scenario Groups为场景用户组设置界面


image.png

.


image.png

:开始执行场景

.


image.png

:场景中的虚拟用户设置

.


image.png

:增加用户组

.


image.png

:删除用户组

.


image.png

运行时设置

.


image.png

详细信息设置

.

查看脚本

Ø 右上方界面显示Service Level Agreement为服务协议界面

Ø 左下方界面显示Scenario Schedule为场景计划界面

①首先看此界面的主菜单设置:

.


image.png

image.png

New Scenario可以新建一个场景

.
image.png

Delete Scenario删除一个场景

.
image.png

Save new name保存更改的场景名

.
image.png

Start Time场景开始时间


image.png

包括:Without delay(立刻执行)、With a delay of(延时执行)可以设置具体时间之后再运行场景、At(定时执行)可以设置在何时(具体日期、小时)运行场景。

场景计划主体包括

Ø
image.png

更改场景名

Ø
image.png

计划按场景或用户组

1. 场景方式中所有用户组虚拟用户增长方式一致,用学校活动来比喻,类似全校所有班级参加团体体操比赛。

2. 用户组方式中各用户组中的虚拟用户增长方式可以不同,类似全校各班级自报节目的汇演。

Ø
image.png

[图片上传失败...(image-1d8cd7-1598582584287)]

运行方式选择

1. 真实情况计划这种方式可以修改持续运行(Duration)与停止虚拟用户(Stop Vuser)这两种在启动虚拟用户之后发生的场景操作属性,它相对第二种执行方式更接近真实情况。

2. 按脚本设置运行直到结束,这种方式则无法设置用户组启动后的各操作属性数值,脚本运行开始后,用户组的属性就维持不变了。

以上三个为设置执行场景的总体规则

以下为设置执行场景过程中各个分步操作的属性

image.png

Ø 主菜单分别为“添加”、“编辑”、“删除”、“上移”、“下移”Action

Ø 编辑Initialize初始化操作属性:

image.png

包括:

. Initialize all Vusers simultaneously(同时初始化所有的虚拟用户)

. Initialize –Vusers every---(每隔一段时间初始化一定数目的虚拟用户)

. Initialize each Vuser just before it runs(在运行之前初始化每一个虚拟用户)

Ø 编辑Start Vusers启动虚拟用户操作属性:

image.png

包括:Start—Vusers:总共启动多少个虚拟用户

然后选择这些需要启动的虚拟用户的启动方式:

. Simultaneously:同时启动

. --Vusers every HH:MM:SS:每隔一段时间加载一定数目的虚拟用户

Ø 编辑Duration持续时间操作属性

image.png

包括:

. Run until completion:场景持续运行直到完成

. Run for –day and HH:MM:SS:场景运行指定的时间

Ø 编辑Stop Vusers停止虚拟用户操作属性


image.png

包括:Stop—Vusers:总共停止多少个虚拟用户

然后选择这些需要停止的虚拟用户的停止方式:

. Simultaneously:同时停止

. --Vusers every HH:MM:SS:每隔一段时间停止指定数目的虚拟用户

Ø 右下方界面显示Interactive Schedule Graph为运行当前场景,达到场景目标所历经的过程趋势图

.面向目标的场景设置

image.png

Ø 左上方界面显示Scenario Scripts为当前场景中的脚本列表

Ø 右上方界面显示Service Level Agreement为服务协议界面

Ø 右下方界面显示图片区域为运行当前场景,达到场景目标所经历的过程趋势图

Ø 左下方界面显示Scenario Goal为场景目标信息显示和编辑(Edit Scenario Goal)区域


image.png

由图可知:系统默认选择了场景目标为-----每秒点击次数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编辑场景目标

image.png

image.png

Ø Goal Profile Name选择不同的目标:


image.png

Ø Define Scenario Goal修改场景目标具体数值:


image.png

包括:

Goal Type:目标类型

Reach goal of …hits per second:目标每秒点击数

Using a minimum of … and a maximum of … Vuser:虚拟用户的最小值和最大值

Ø Scenario Setting场景设置

.
image.png

此为达到目标后系统继续运行时间

.
image.png

此为【如果目标无法达到,系统的处理方式:(If target cannot be reached)】

Stop scenario and save results停止场景并保存结果

Continue scenario without reaching goal继续运行场景、无须达到目标

另外,还可以选中接受通知(Receive notification)使得测试人员了解测试目标无法达到这一情况

Ø Load Behavior负载行为设置为达到当前目标而增加负载


image.png

负载增加的行为方式有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不修改录制的思考时间


image.png

思考时间是用户在Web应用各操作之间的时间。因此,在与事务相关的场景目标设置中,若维持每秒事务数量不变,如果选中了此项,则虚拟用户数量要相应的增加。

Ø 面向目标的场景设置,同样可以设置场景的启动时间:


image.png

image.png

与手动场景设置一样同样包括:Without delay(立刻执行)、With a delay of(延时执行)可以设置具体时间之后再运行场景、At(定时执行)可以设置在何时(具体日期、小时)运行场景。

㈣.控制器的全局设置

前面了解的是创建手动场景和面向目标的场景的各种设置,这些设置都是针对具体的特定测试场景的,如果场景不同或者测试类型不同,数值一般不同。此处描述的控制器的全局设置则有些特殊,其中的数值对于该控制器下管理和实现的所有场景都有效。

Ø 打开控制器全局设置的方法:


image.png

Tools -----Options打开如图


image.png

Ø Timeout超时设置

当网络状况不好、场景中机器较多时,可以修改窗体中各个微调框的数值(单位均为秒)以免Load Runner返回错误。


image.png

此为控制器与虚拟用户初始化等活动的超时设置

① 可选框Enable timeout checks为允许超时设置,如果禁用超时限制,Load Runner将无限长地等待负载生成器进行连接和断开连接,并等待其执行“初始化”、“运行”、“暂停”和“停止”命令。

②Load Generator负载产生器:可以设置连接(Connect)和断开连接(Disconnect)超时时间。连接超时可以输入等待其他连接到任何负载生成器的时间限制。如果在指定的时间内连接不成功,负载生成器的状态将变为“失败”。断开连接超时可以输入等待从其他任何负载生成器断开连接的时间限制。如果在指定的时间内断开连接不成功,负载生成器的状态将变为“失败”。

③还可以输入Init、Run、Pause、Stop命令的最长时间限制


image.png

每4刷新虚拟用户状态一次。

Ø Run-Time Settings运行时设置


image.png

虚拟用户配额(Vuser Quote):要防止系统过载,可以为Vuser活动设置配额,用来设置负载生成器一次可以初始化的最大Vuser数。


image.png

停止运行时虚拟用户执行策略(When stopping Vusers):

1. 等待当前脚本迭代结束

2. 等待当前脚本操作结束

3. 立即结束


image.png

允许使用种子值来产生随机顺序。

每个种子值代表一个用于测试执行的随机值顺序。只要使用同一个种子值,就会为场景中的Vuser分配相同顺序的值。该设置将应用于使用Random方法从数据文件分配值的参数化Vuser脚本。

Ø Run-Time File Storage运行时文件存储位置


image.png

可以设置脚本和结果存储的位置:

1. 保存在本机

2. 保存在共享网路驱动盘(利于别人查看和分析)

Ø Path Translation Table路径转换表


image.png

路径转换表是一种映射,将控制器上的文件路径转换为远程主机上的文件路径。这样的设置对于网路中包含异类系统(比如既有Windows,也有Unix)是很有用的。

选择“Convert to UNC”复选框,指示Load Runner忽略路径转换表并将所有路径都转换为通用命名约定格式。

路径翻译表中的每一条记录应该类似如下的语句:

[]

Ø Monitors监视器

监视器好像公路上的电子眼,用于随时报告场景的各项信息,他可以按照规定的时间(也叫做数据采样率,单位为秒)获得服务器资源信息,并反映到控制器界面当中。


image.png

事务数据(Transaction Data)

启用事务监视器(Enable Transaction monitor):指在场景开始时开始监控事务。

频率(Frequency):用来选择联机监视器为生成“事务”、“数据点”、“Web资源”联机图而采集数据的频率(以秒为单位)。

默认值为5秒。对于小型场景,建议使用频率1;对于大型场景,建议使用频率3-5。频率越高,网络流量越低。


image.png

服务器资源采样率(Server Resource Sampling):采样速率是连续采样之间的时间间隔(以秒为单位)。用来输入Load Runner在场景中采集监控数据的速率。如果增大采样速率,则 数据的监控频率就会降低。

image.png

错误处理:可以将错误发送到输出窗口或者以提示信息框的形式显示出来(可能打断执行过程,对希望性能测试自动执行不利)。

image.png

调试信息与调试级别0-9:把与调试有关的消息发送至输出日志。

Ø Execution执行页

image.png

默认的场景计划:

1. 真实情况计划这种方式可以修改持续运行(Duration)与停止虚拟用户(Stop Vuser)这两种在启动虚拟用户之后发生的场景操作属性,它相对第二种执行方式更接近真实情况。

2. 按脚本设置运行直到结束,这种方式则无法设置用户组启动后的各操作属性数值,脚本运行开始后,用户组的属性就维持不变了。

Ø WAN Emulation 网络竞争页

image.png

排除来自于网络的主机(Exclude hosts from WAN emulation)

接下来是添加主机名和IP地址。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容