软件测试开发学习之旅----Loadrunner
Posted 赵jc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了软件测试开发学习之旅----Loadrunner相关的知识,希望对你有一定的参考价值。
Loadrunner
loadrunner性能测试(并发)
Loadrunner是业界公认的权威性能测试工具,被誉为工业级的性能测试工具,支持广泛的协议和平台。
Loadrunner安装
现在以Loadrunner12为例,说明一下安装过程。
- 1、双击HP LoadRunner 12.53 CommunityEdition.exe启动安装程序2、安装程序开始解压,
- 2、选择默认路径即可,点击install
- 3、Loadrunner程序会使用到Visual C++的库,如果缺少这些库,安装程序会提示安装,这时选择“确定”进行安装即可,过程中如果提示重启,按要求重启即可,重启后会继续进行安装过程。
- 4、按照默认操作一步步进行安装
- 5、安装过程中会有如下的提示。若无指定代理使用的证书,则去掉勾选。
- 6、至此,Loadrunner已安装完毕。
Loadrunner的基本概念
基本概念
- 功能:LoadRunner是一种适用于许多软件体系架构的自动负载测试工具,从用户关注的响应时间、吞吐量,并发用户和 性能计数器等方面来衡量系统的性能表现,辅助用户进行系统性能的优化。
- 原理:LR启动以后,在任务栏会有一个Agent进程,通过Agent进程,监视各种协议的Client与Server端的通讯,用LR的一套C语言函数来录制脚本,所以只要LR支持的协议,就不会存在录制不到的,然后LR调用这些脚本向服务器端发出请求,接受服务器的响应。至于服务器内部如何处理,它不关心。
LoadRunner通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,优化性能和加速应用系统的 发布周期。
- 组成:LoadRunner主要包括三个前台功能组件,分别为VuGen(虚拟用户脚本生成器)、Controller(测试控制器)和Analysis(结果分析器)。系统会自动调用后台功能组件LG(负载生成器)和Proxy(用户代理)来完成性能测试工作。
VuGen 是录制与便携脚本的地方。通过录制或编写脚本来模拟用户的行为。
Controller是执行负载测试管理和监控的中心。在这里指定具体的性能测试方案,执行性能测试,收集测试数据,监控 测试指标。监控工具将测试过程中收集到的客户机、服务器和网络性能指标数据显示在监控页面上,便于测试人员对系 统表现进行随时掌握。
LG是模拟多用户并发访问被测试系统的组件。模拟多用户访问系统的前提是已经具备了虚拟用户脚本,VuGen是录制和编 辑虚拟用户脚本的工具,录制好的脚本是不同语言表达的文本文件,在LG执行时被解析和执行。脚本录制和回放过程是 在Proxy支持下完成的。
Analysis在测试完成后,对测试过程中收集到的各种性能数据进行计算、汇总和处理,生成各种图表和报告,为系统性 能测试结果分析提供支持。
在使用loadrunner之前,先了解一下几个概念:
- Scenario:场景。所谓场景,是指在每一个测试过程中发生的事件。
Vusers
:虚拟用户。LoadRunner使用多线程或多进程来模拟用户对应用程序操作时产生的压力。一个场景可能包括多个虚拟用户,甚至成千上万个虚拟用户。- Vuser Script: 脚本用脚本来描述Vuser在场景中执行的动作。
Transactions
:事务。事务代表了用户的某个业务过程,需要衡量这些业务过程的性能。rendezvous
:集合。当我们测试多个用户并发时,每个用户执行到该事务脚本的先后顺序是不确定的,所以得到的测试结果也并不是一个完全
并发的极限测试结果。在开始事务之前,插入一个“集合点”,那么在多用户执行时,就可以将用户请求停下来,直到用户数量达到满足的条件(默认是100%的用户都到达集合点)。那么,所有的用户都将同时发出接下来的请求。
Loadrunner的性能测试过程:
- 制定性能测试计划
这部分内容已经在上一节进行了讲述。主要实现以下内容: 分析应用程序、确定测试目标、计划怎样执行
- 开发测试脚本
LoadRunner 使用虚拟用户的活动来模拟真实用户来操作Web 应用程序,而虚拟用户的活动就包含在测试脚本中,所以说测试脚本对于测试来说是非常重要的。
开发测试脚本要使用 VuGen 组件。
测试脚本要完成的内容有:
每一个虚拟用户的活动
参数化
定义事物
定义检查点
- 设计运行场景
运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator 机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。
- 运行、监视测试
一切配置妥当,开始运行测试。在运行过程中,需要监视各个服务器的运行情况(DataBase Server、Web Server等)。
- 分析测试结果
所有前面的准备都是为了这一步。我们需要分析大量的图表,生成各种不同的报告,最后会得出结论。
LoadRunner用3个主要功能模块来覆盖性能测试的基本流程。Virtual User Generator 、Controller 、Analysis
其中Virtual User Generator使用在创建VU脚本阶段,Controller用在定义场景阶段和运 行场景阶段,Analysis用在分析结果阶段。
开发测试脚本
下面以Loadrunner安装时附带的样例程序Web Tours进行讲解。
C:\\Program Files (x86)\\HP\\LoadRunner\\WebTours(自己安装时选的目录),选择StartServer.bat启动服务。
录制基本的用户脚本
- 1、启动 Visual User Generator 后,选择新建脚本,因为要测试的是web项目,所以选择协议为Web-
HTTP/html,点击创建后,进入主窗体
- 2、在解决方案资源管理器中可以看到该脚本的组成部分。简单说明一下:VuGen 中的脚本分为三部分:
vuser_init、vuser_end
和Action。vuser_init用于用户初始化,vuser_end用于用户清理工作。Action用于具体的需要测试的操作。类似于unittest等测试框架。
注意:在重复执行测试脚本时,vuser_init 和vuser_end 中的内容只会执行一次,重复执行的只是Action 中的部分。
-
3、选择录制操作,可以开始一次录制操作,在录制中需要填写URL,这里以http://127.0.0.1:1080/WebTours/为 例。录制到操作说明是将脚本放置到哪里。在录制中也可以修改脚本放置的地方。 已注册的用户名和密码查看地址:xxx\\HP\\LoadRunner\\WebTours\\cgi-bin\\users开始录制中,“立即”默认情况下是选中的,说明应用程序一旦启动,VuGen 就会开始录制脚本;如果没有选中,应用程序启动后,VuGen出现对话框,待确认后才开始录制。一般默认即可。
-
4、在以上页面上有录制选项可以进行一些高级选项的设置,这里一般不需要改动。
-
5、点击开始录制,loadrunner会自动调用IE,并开始录制操作。这里以注册为例进行录制,录制完毕后,点击停止,录制停止,返回到脚本界面,可以看到已录制的脚本。
录制过程中,在屏幕上会有一个工具条出现。录制提供了暂停、停止、新增操作,增加事务、增加集合点等操作。
插入事务
当录制完一个基本的用户脚本后,在正式使用前我们还需要完善测试脚本,增强脚本的灵活性。一般情况下,我们 通过以下方法来完善测试脚本。
事务(Transaction):为了衡量服务器的性能,我们需要定义事务。比如:我们在脚本中有一个数据查询操作, 为了衡量服务器执行查询操作的性能,我们把这个操作定义为一个事务,这样在运行测试脚本时,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。插入事务操作可以在录制过程中进行,也可以在录制结束后进行。LoadRunner 可以在脚本中插入不限数量的事务。
通过菜单设计—在脚本中插入—开始事务、结束事务来进行事务的添加。
事务的状态默认情况下是 LR_AUTO。一般情况下,我们也不需要修改,除非在手工编写代码时,有可能需要手动设置事务的状态。可以通过步骤导航器来查看步骤的参数选项。
插入集合点
插入集合点是为了衡量在加重负载的情况下服务器的性能情况。在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,从而达到测试计划中的需求。
注意:集合点经常和事务结合起来使用。集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。
具体的操作方法如下:在需要插入集合点的前面,通过菜单操作:菜单设计—在脚本中插入—集合
参数化输入
如果用户在录制脚本过程中,填写提交了一些数据,比如要增加数据库记录。这些操作都被记录到了脚本中。当多 个虚拟用户运行脚本时,都会提交相同的记录,这样不符合实际的运行情况,而且有可能引起冲突。为了更加真实 的模拟实际环境,需要各种各样的输入。
参数化输入是一种不错的方法。
用参数表示用户的脚本有两个优点:
- ① 可以使脚本的长度变短。
- ② 可以使用不同的数值来测试你的脚本。例如,如果你企图搜索不同名称的图书,你仅仅需要写提交函数一次。在回放的过程中,你可以使用不同的参数值,而不只搜索一个特定名称的值。
参数化包含以下两项任务:
- ① 在脚本中用参数取代常量值。
- ② 设置参数的属性以及数据源。
参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。
插入检查点
在进行压力测试时,为了检查Web 服务器返回的网页是否正确,VuGen 允许我们插入Text 检查点,这些检查点验证网页上是否存在指定的Text,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。检查点的含义和unittest中的断言功能基本上一致。
通过菜单—查看—快照,可以查看到http数据视图,选择检查的文本,选择添加文本检查步骤,即可添加一个检查 点。
关联
很多时候,一个项目的请求所以带的参数会来源于前面请求返回的结果,而我们录制的内容,则只是完整地记录当 时的请求参数,这通常不是我们想要的。
单机运行测试脚本
经过以上的各个步骤后,脚本就可以运行了。运行脚本可以通过菜单或者工具栏来操作。
执行“运行”命令后,VuGen 先编译脚本,检查是否有语法等错误。如果有错误,VuGen将会提示错误。双击错误提示,VuGen 能够定位到出现错误的那一行。为了验证脚本的正确性,我们还可以调试脚本,比如在脚本中加断点等。
如果编译通过,就会开始运行。然后会出现运行结果。
创建运行场景
运行场景描述在测试活动中发生的各种事件。一个运行场景包括一个运行虚拟用户活动的Load Generator 机器列表,一个测试脚本的列表以及大量的虚拟用户和虚拟用户组。创建运行场景使用 Controller。
打开controller,出现如下页面:
在新建场景的窗口,选择一种场景类型。下面对三种类型进行简单的说明。
- 1、手动场景:该项要完全手动的设置场景。
- 2、 面向目标的场景: 在测试计划中,一般都包括性能测试要达到的目标。选择该项后,LoadRunner 基于这个目标,自动为你创建一个场景。在场景中,我们只要定义好我们的目标即可。
分析以及监控运行场景
在运行过程中,可以监视各个服务器的运行情况(DataBase Server、Web Server 等)。监视场景通过添加性能计数器来实现。实际中更多的会使用第三方工具,例如nmon来监控linux等。这里以windows服务器为例:
在运行页面,系统资源图中选中windows资源,在windows资源图中点击右键,选择“添加度量”。添加localhost为 监控的服务器。之后可以查看各个计数器的值,通过这些值可以分析系统的瓶颈在哪里。
利用Analysis 分析结果
在场景执行完毕后,可以进行分析,在Controller选择菜单结果–分析结果,会调用Analysis 进行结果分析。菜单图–添加新图,可以选择所有结果图。
性能测试报告的编写
性能测试报告一般会包括如下部分:
- 测试目标:
指标要求:本次测试预期达到的性能要求。(TPS,ART,交易成功率,并发数等)
- 测试概要描述:
系统结构
测试时间
测试地点和测试人员
工具和环境
测试过程简介
- 测试结果和分析:
测试场景
测试结果
结果分析
- 测试结论:
遗留问题
缺陷列表
测试结论
建议
测试结果的限制
以上是关于软件测试开发学习之旅----Loadrunner的主要内容,如果未能解决你的问题,请参考以下文章