脚本执行——性能测试学习笔记之 LoadRunner实战(5)

发表于:2018-1-26 11:36

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:杨婷 编著    来源:51Testing软件测试网原创

  已经是第三周了,VuGen的学习总算是告一段落,调试好的脚本还需要在Controller中运行,才能实现所谓的并发操作。下面我们将和Lucy一起学习Controller的使用。LR12中Controller除了包括场景设计和运行监控两个部分外,还增加了对J2EE/NET的诊断功能。本章节我们重点学习场景设计和数据监控功能。
  本章主要包括以下内容:
  ●Controller基本操作;
  ●场景设计操作演练;
  ●数据监控操作演练;
  ●本章小结。
  6.1  Controller基本操作
  6.1.1  创建场景
  进入Controller场景设计页面需要先创建场景,场景包括手动场景和目标场景两种,如图6-1所示。
  图6-1  选择场景类型
  Goal-Oriented Scenario:面向目标的场景,系统默认选项,允许Controller基于指定的目标创建场景。如图6-2所示。
  图6-2  场景目标
  用户可以选择目标场景类型,并设置具体的目标数,如图6-3所示。
  图6-3  编辑场景目标
  目标类型包括每秒单击次数、虚拟用户数、每秒事务数、事务响应时间和每分钟页数。使用者可以选择不同的场景目标,并拟定目标数,如果系统运行结果达到目标则性能测试通过,没有达到目标则需要进行性能分析与调优。
  Manual Scenario:手动场景,通过指定的虚拟用户数来管理负载测试,也可以使用百分比模式在脚本间分配Vuser,详见6.1.2章节“场景设计”。
  进入Controller的学习后Lucy对于场景类型选择有点迷糊,于是决定打电话给Mary咨询一下。
  Lucy:Mary,在Controller中创建场景有“手动场景”和“目标场景”两种,在实际的测试项目中一般选哪种呢?
  Mary:学习还挺快嘛,都到场景设计了。实际项目中两种场景都有用到,但手动场景居多。
  Lucy:能举例说明吗?现在我正犯迷糊呢。
  Mary:好的,如果该项目的性能需求足够明确,那么我们设计场景的时候就可以直接用目标场景,若目标达到则测试通过,没有达到则要进行性能优化;如果项目的性能需求并不明确,或者想要了解系统的极限是多少,这类项目往往就需要手动场景模式。
  Lucy:听你这么一说我大致理解了,这样看来目标场景的应用远没有手动场景灵活。
  Mary:是的,你可以这样理解,但目标场景也有另外一种用法。比如,手动测试场景找到了系统负载的峰值,系统调优后需要进行回归验证,我们可以用目标场景来进行回归。
  Lucy:谢谢Mary指点,那我先把重心放在手动场景的学习上。 
  选择好场景类型后,还需要选择在该场景中使用的脚本,脚本可以单选也可以多选,依据场景的需要来确定,如图6-4所示。
  图6-4  选择场景中使用的脚本
  学习笔记
  手动场景和目标场景的本质都是为了判断系统性能是否达到预期要求,两种模式只是在形式上略有不同,在脚本运行上没有本质区别,从实用性角度建议先学习手动场景细则,再辅助学习目标场景。
  6.1.2  场景设计
  Controller中的“Design”选项卡主要用于设计测试场景,模拟并发用户行为,是执行并发执行的“指挥官”。下面我们跟着Lucy一起来认识该窗体的三个组成区域。
  1.场景组Scenario Groups
  如图6-5所示。
  图6-5  场景组设置区
  场景组设置区的功能按导航栏从左到右的顺序进行介绍,主要包括如下部分。
  :表示运行场景组中指定的脚本,单击运行按钮后,系统自动跳转到运行选项卡。
  :表示操作指定脚本的虚拟用户,该按钮会弹出“Vusers”的对话框,如图6-6所示,Vusers可以对指定脚本的虚拟用户数进行增加或删除操作,还可以让同一个脚本中的虚拟用户来自不同的负载生成器(详见6.2.3“联机负载实践”)。
  图6-6  Vusers对话框
  :表示为场景组添加脚本,该按钮会弹出“Add Group”的对话框,如图6-7所示,Add Group可以指定需要添加的脚本路径,并在添加时设置初始虚拟用户数“Vuser Quantity”,以及联机负载用哪台设备“Load Generator Name”。
  图6-7  Add Group对话框
  :表示删除场景组中被勾选的脚本。
  :表示运行时设置选项,该按钮会弹出“Runtime Settings”的对话框,同VuGen中是一致的。
  【特别说明】:系统会默认将Think time的时间改为“As recorded”,建议选择“Use random percentage of recorded think time”(随机百分比模式);另外需要将Log类型改为“Standard log”,这样可以大大减少脚本占用的空间。
  :表示查看指定脚本的相关信息,该按钮会弹出“Group Information”的对话框,如图6-8所示,Group Information主要用于查看当前脚本的各类设置,包括脚本名称、负载生成器、脚本路径、脚本类型、虚拟位置、运行时设置等。并且可以打开VuGen中的脚本页面对脚本进行修改,修改后无需重新加载脚本,只需要在该对话框中使用“Refresh”功能,脚本会自动完成更新。
  图6-8  Group Information对话框
  :表示查看被勾选的当前脚本,系统会自动打开该脚本的VuGen页面。
  :表示服务虚拟化操作,该服务可以在被测应用程序所依赖的服务不可用或者还未开发完成的情况下,通过模拟所依赖服务外观的方式为被测应用程序提供支持,使测试能够顺利进行。同时还支持对模拟服务进行控制。例如,根据一定规则响应被测应用程序的请求。该按钮会弹出“Service Virtualization”的对话框,如图6-9所示。
  图6-9  Service Virtualization对话框
  2.服务水平协议Services Level Agreement(SLA)
  如图6-10所示。
  图6-10  服务器协议设置区
  服务水平协议(SLA)可以定义负载测试的目标。在负载测试期间,Controller 将收集性能数据。Analysis 会将该数据与在 SLA 中定义的目标进行比较,然后在 SLA 报告中显示结果。
  单击“New”,我们可以对以下指标进行阈值的度量,主要指标为事务、单击率和吞吐量,如图6-11所示。
  图6-11  目标定义对话框
  【特别说明】:在Controller中阈值的定义并不是必选项,除非已知目标场景精确的数据要求。例如,假设在某脚本的Login事务中,指定90%的Vusers需要在2秒内完成操作,那么我们可以在服务水平协议中设定事务的阈值,当运行结果大于2秒,将导致SLA失败,如图6-12所示。
  图6-12  事务阈值设置
  3.场景计划Scenario Schedule
  如图6-13所示。
  图6-13  场景计划区
  场景计划区分为3小块,我们可以为场景组中的脚本设计相同或不同的计划。
  (1)举例说明:假设当前场景组中有两个脚本,分别是“Login”和“Signup”,我们定义了一个场景计划,Schedule by选择“Scenario”,Run Mode选择“Real-world schedule”如图6-14所示。
  图6-14  场景+实际计划
  按场景+实际计划的设置方式,两个脚本的场景将完全相同,也就是说只能设置全局计划“Global Schedule”,如图6-15所示。
  图6-15  全局计划1
  全局计划的设置包括初始化Vuser,由启动Vuser的方式、持续运行时长和停止Vuser的方式组成,除初始化外,其余操作的设置都会对“计划交互图”产生影响,如图6-16所示。
  图6-16  全局计划交互图
  图中反映的正是在全局计划中的设置,一共20个Vuser,系统每隔15秒启动2个Vuser,直到20个Vuser全部启动,然后持续运行5分钟,5分钟结束后,每隔30秒退出5个Vuser。
  (2)举例说明:下面我们来假设另一种场景,场景组中依然有两个脚本,分别是“Login”和“Signup”,我们定义了一个场景计划,Schedule by选择“Group”,Run Mode选择“Real-world schedule”,如图6-17所示。
  图6-17  组+实际计划
  按组+实际计划的设置方式,两个脚本的场景可以单独设置。
  例如,我们将“Login”的脚本设计为,一共10个Vuser,系统每隔15秒启动2个Vuser,直到10个Vuser全部启动,然后持续运行5分钟,5分钟结束后,每隔15秒退出2个Vuser。如图6-18所示。
  图6-18  Login的组计划
  例如,我们将“Signup”的脚本设计为,一共10个Vuser,系统每隔30秒启动5个Vuser,直到10个Vuser全部启动,然后持续运行3分钟,3分钟结束后,每隔30秒退出5个Vuser,如图6-19所示。
  图6-19  Signup的组计划
  两个脚本的组计划均设置完成后,我们可以从计划交互图中看出差别,如图6-20所示。
  图6-20  组计划交互图
  【特别说明】:无论是在场景计划还是在组计划中,都极少会使用Basic Schedule(基本计划),这主要是基本计划的局限性所决定的。在基本计划中脚本无法设置持续运行时间,不能够实现复杂的场景设计。
  例如,在全局计划中要实现如下场景:一共20个Vuser,先启动10个Vuser,系统每隔15秒启动2个Vsuer,直到10个Vuser全部启动,然后持续运行5分钟;5分钟后又启动剩余的10个Vuser,系统每隔15秒启动2个Vsuer,直到剩余的10个Vuser全部启动, 最后持续运行3分钟,3分钟结束后,每隔30秒退出5个Vuser。
  以上场景在基本计划中是无法实现的,所以必须使用实际计划创建场景。如图6-21所示。
  图6-21  全局计划2
  “组+实际计划”同“场景+实际计划”都可以通过左上角的菜单栏进行多个峰值的设置,添加操作如图6-22所示,修改、删除、排序这里就不再细述。
  图6-22  添加Action
  学习笔记
  场景设计有很多学问在里面,每个细节都至关重要。虽然现在熟悉了场景设计的基本操作,但和真正运用还是有很大差距。就像学会了等价类的黑盒用例分析方法,真要到具体项目中实践的时候,又会觉得无从入手。后续学习一定要多做项目,多去看有经验的性能工程师是如何设计场景的。

本书读者交流QQ群:425860640,欢迎加入~~
本文选自《性能测试学习笔记之 LoadRunner实战》第六章,本站经人民邮电出版社和作者的授权。
版权声明:51Testing软件测试网获人民邮电出版社和作者授权连载本书部分章节。
任何个人或单位未获得明确的书面许可,不得对本文内容复制、转载或进行镜像,否则将追究法律责任。

脚本优化之参数化——性能测试学习笔记之 LoadRunner实战(4)
21/212>
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号