性能测试%lr

随着测试越来越重要,其中的性能测试也受到越来越多的关注。比较普遍的性能测试工具是 Loadrunner7.51 ,但是很多人对此性能工具不是很熟悉。本人也是总结心得体会,将做过的性能测试实例以饷大家,希望对各位做测试的朋友有所帮助。
该方案是针对某公司试题库的性能测试。该试题库是用来对公司内部员工培训结果的一个考核。试题库在公司内部 web 服务器上,假设开设 50 个账号和密码可供 50 个考生同时参加考试。要求,每台机器只能由一个用户使用,每个用户只能使用各自不同的账号登录考试系统,做完题目后,要求提交考试结果,若在制定的时间内不提交,则系统强制提交考试结果。
但是,一般测试部门不可能有 50 台机器同时进行测试的。所以,可以借 Loadrunner7.51 模拟 IP 地址,修改脚本来协助测试。但是,为了保证测试结果,建议搜罗公司中所有可用的机器进行复测,因为有时候是不可以完全信赖工具的。
现场测试环境
硬件: 50 台 PC 机, Web 服务器
软件: Loadrunner7.0 , Win2000 , IE5.0 和 IE6.0
人员:质控部 2 人,执行现场测试
项目部 22 人,提供现场环境
技术部各 1 人,提供技术支持
测试要求
50 个用户拥有独立 IP 地址,不同的用户及密码登录,试题完成后各自同时提交。
测试内容
50 个用户以不同的用户名和密码登录试题库。试题完成后,提交考试结果。测试考试结果是否能正常提交以及正确评分。
测试方案
1 、 完全 20 台实际的 PC 机进行现场测试。
( 1 ) 准备工作,并做计划。第一轮测试执行三遍,设定用户考试内容全部同时提交,第一遍全部使用 IE5.0 ,第二遍 10 台使用 IE5.0 , 10 台使用 IE6.0 ,第三遍全部使用 IE6.0
( 2 ) At 9 : 00 , 20 个用户同时登录系统
( 3 ) At 9 : 05 , 20 个用户同时全部提交
( 4 ) 分别记录第一轮测试(三遍)的结果
( 5 ) 第二轮测试准备工作,设定 15 个用户考试内容同时提交,另外 5 个用户延时 5 分钟提交,全部使用 IE5.0
( 6 ) At 9 : 15 , 20 个用户同时登录系统
( 7 ) At 9 : 20 , 15 个用户同时提交
( 8 ) At 9 : 25 ,剩余 5 个用户同时提交
( 9 ) 记录第二轮测试结果
( 10 ) 第三轮测试准备工作,设定 15 个用户考试内容同时提交,另外 5 个用户延时 5 分钟提交,全部使用 IE6.0
( 11 ) At 9 : 15 , 20 个用户同时登录系统
( 12 ) At 9 : 20 , 15 个用户同时提交
( 13 ) At 9 : 25 ,剩余 5 个用户同时提交
( 14 ) 记录第三轮测试结果
( 15 ) 第四轮测试准备工作,设定 15 个用户考试内容同时提交,另外 5 个用户延时 5 分钟提交,正常提交用户使用 IE5.0 ,延时提交用户使用 IE6.0
( 16 ) At 9 : 15 , 20 个用户同时登录系统
( 17 ) At 9 : 20 , 15 个用户同时提交
( 18 ) At 9 : 25 ,剩余 5 个用户同时提交
( 19 ) 记录第四轮测试结果
( 20 ) 第五轮测试准备工作,设定 15 个用户考试内容同时提交,另外 5 个用户延时 5 分钟提交,正常提交用户使用 IE6.0 ,延时提交用户使用 IE5.0
( 21 ) At 9 : 15 , 20 个用户同时登录系统
( 22 ) At 9 : 20 , 15 个用户同时提交
( 23 ) At 9 : 25 ,剩余 5 个用户同时提交
( 24 ) 记录第五轮测试结果
( 25 ) 第六轮测试准备工作,设定 15 个用户考试内容同时提交,另外 5 个用户延时 5 分钟提交,正常提交用户其中 10 个使用 IE5.0 , 5 个使用 IE6.0 ,延时提交用户使用 IE5.0
( 26 ) At 9 : 15 , 20 个用户同时登录系统
( 27 ) At 9 : 20 , 15 个用户同时提交
( 28 ) At 9 : 25 ,剩余 5 个用户同时提交
( 29 ) 记录第六轮测试结果
( 30 ) 第七轮测试准备工作,设定 10 个用户考试内容同时提交,另外 10 个用户分两次分别延时 5 分钟、 15 提交
( 31 ) At 9 : 35 , 20 个用户同时登录系统
( 32 ) At 9 : 40 , 10 个用户同时提交
( 33 ) At 9 : 45 ,剩余的其中 5 个用户同时提交
( 34 ) At 9 : 55 ,剩余的 5 个用户同时提交
( 35 ) 记录第七轮测试结果,参见第二轮测试-第六轮测试过程分别对 IE5.0 和 IE6.0 的情况进行测试
( 36 ) 第八轮测试准备工作,设定其中 10 个用户不提交,由系统强行提交
( 37 ) At 10 : 10 , 20 个用户同时登录系统
( 38 ) At 10 : 15 , 10 个用户同时提交
( 39 ) 其余用户的内容由系统强行提交
( 40 ) 记录第八轮测试结果,参见第二轮测试-第六轮测试过程分别对 IE5.0 和 IE6.0 的情况进行测试
( 41 ) 第九轮测试准备工作,设定其中 10 个用户同时提交, 5 个用户延时 5 分钟提交,其余用户由系统强行提交
( 42 ) At 10 : 25 , 20 个用户同时登录系统
( 43 ) At 10 : 30 , 10 个用户同时提交
( 44 ) At 10 : 35 ,剩余的其中 5 个用户同时提交
( 45 ) 剩余 5 个用户系统强制提交
( 46 ) 记录第九轮测试结果,参见第二轮测试-第六轮测试过程分别对 IE5.0 和 IE6.0 的情况进行测试
2 、 模拟 20 个用户进行测试。其中, 10 台是 PC 机,另外 10 台机器的 IP 地址是 Loadrunner 模拟出来的。
( 1 ) 在 10 台实际的 PC 机中抽取其中一台虚拟 10 个 IP 地址,包括自身的 IP 地址,该机器上共 11 个 IP 地址,这 11 个 IP 地址只能全部使用 IE5.0 或者全部使用 IE6.0
( 2 ) 其余 9 台实际的 PC 机分别由 9 个人操作,另外一台机器由一位质控部人员操作
( 3 ) 对于异常情况,延时提交和强制提交全部由实际的机器来模拟
( 4 ) 其余过程参见 1
3 、 模拟 20 个用户进行测试。其中, 5 台是 PC 机,另外 15 台机器的 IP 地址是用 Loadrunner 模拟出来的。
( 1 ) 在 5 台实际的 PC 机中抽取其中一台虚拟 15 个 IP 地址,包括自身的 IP 地址,该机器上共 16 个 IP 地址,这 16 个 IP 地址只能全部使用 IE5.0 或者全部使用 IE6.0
( 2 ) 其余 4 台实际的 PC 机分别由 4 个人操作,另外一台机器由一位质控部人员操作
( 3 ) 对于异常情况,延时提交和强制提交全部由实际的机器来模拟
( 4 ) 其余过程参见 1
4 、 模拟 35 个用户进行测试。其中, 20 台是 PC 机,另外 15 台机器的 IP 地址是用 Loadrunner 模拟出来的。
( 1 ) 在 20 台实际的 PC 机中抽取其中两台分别虚拟 7 个、 8 个 IP 地址,这 17 个 IP 地址只能全部使用 IE5.0 或者全部使用 IE6.0
( 2 ) 其余 18 台实际的 PC 机分别由 18 个人操作,另外两台机器由两位质控部人员操作
( 3 ) 对于异常情况,延时提交和强制提交全部由实际的机器来模拟
( 4 ) 其余过程参见 1
5 、 模拟 50 台用户进行测试。其中, 20 台是 PC 机,另外 30 台机器的 IP 地址是用分别用两台实际的 PC 机模拟出来的。记录测试结果。
( 1 ) 在 20 台实际的 PC 机中抽取其中两台分别虚拟 15 个 IP 地址,这 32 个 IP 地址只能全部使用 IE5.0 或者全部使用 IE6.0
( 2 ) 其余 18 台实际的 PC 机分别由 18 个人操作,另外两台机器由两位质控部人员操作
( 3 ) 对于异常情况,延时提交和强制提交全部由实际的机器来模拟
( 4 ) 其余过程参见 1
6 、 对 5 中所述情况重复测试两次。
7 、 为了保证结果的正确性,完全 50 台实际的 PC 机进行现场测试。过程参见 1
测试过程
注:该测试过程针对虚拟 IP 地址情况。
1 、 一台 PC 机上创建 15 个虚拟的 IP 地址。首先,启动 IP Wizard ,如下:开始程序- >Loadrunner - >Tools - >IP Wizard
点击 “Add” ,添加你计划虚拟的 IP 地址。但是注意不能添加已经被占用的 IP 地址。
2 、 启动 Virtual User Generator ,并录制脚本,由于 50 个用户的账号和密码各不相同,所以,要修改脚本,设置参数。我是录制了一个脚本,复制了 49 份,在每个脚本中手工修改了各自不同的地方。
3 、 启动 Loadrunner Controller ,先将刚才保存的脚本添加进来。然后点击 “Scenario” 菜单,激活其中的 “Enable IP Spoofer” 。
4 、 点击屏幕右方的 “Generators” ,添加已经建立的 IP ,然后 connect 建立连接。
5 、对连接起来的不同用户( IP 地址)分配不同的脚本,在 Controller 中的 “design” 中,点击 “Load Generators” 其中,每个脚本有一个用户执行。
6 、 执行 Scenario 。





Loadrunner的简介



     LoadRunner® 是一种预测系统行为和性能的工业级标准性能测试负载测试工具。通过以模拟上千万用户实施并发负载及实时性能监测的方式来确认和查找问题,LoadRunner 能够对整个企业架构进行测试。通过使用LoadRunner ,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。


目前企业的网络应用环境都必须支持大量用户,网络体系架构中含各类应用环境且由不

同供应商提供软件和硬件产品。难以预知的用户负载和愈来愈复杂的应用环境使公司时时担心会发生用户响应速度过慢,系统崩溃等问题。这些都不可避免地导致公司收益的损失。


        Mercury Interactive 的 LoadRunner 能让企业保护自己的收入来源,无需购置额外硬件而最大限度地利用现有的IT 资源,并确保终端用户在应用系统的各个环节中对其测试应用的质量,可靠性和可扩展性都有良好的评价。

LoadRunner 是一种适用于各种体系架构的负载测试工具,它能预测系统行为并优

化系统性能。LoadRunner 的测试对象是整个企业的系统,它通过模拟实际用户的操作行为

和实行实时性能监测,来帮助您更快的查找和发现问题。此外,LoadRunner 能支持广范的

协议和技术,为您的特殊环境提供特殊的解决方案。





Ø         安装注意事项:

    LR的版本:目前常见的:LR7.6,LR7.8,LR8.0,LR8.1,每个版本差别蛮大的,大家尽量使用高版本。我安装的的是LR8.1版本的,下载地址见:http://hi.baidu.com/ruanjianceshi/blog/item/16fc033bc92565ea15cecb9c.html



   操作系统选择:LR是个比较底层的软件,最好为Windows 2000,因为W2k的稳定性和兼容性都不错,有人把LR装在WinXp下面,是有问题的,出错现象:“应用程序正常初始化(0xc0000005)失败。是由于安装错误。在win2003,winXP下安装LR后会出现如此情况。


用LoadRunner测一个C/S系统,要用什么协议?


   用LR录完之后VuGen里产生不了脚本,这是协议选择的问题了,LR支持的协议和应用非常广泛,对于常见的,b/s系统,选择Web(Http/Html),
测一个C/S系统,根据C/S结构所用到的后台数据库来选择不同的协议,如果后台数据库是sybase,则采用sybaseCTlib协议,如果是sql server,则使用MS sql server的协议,至于oracle 数据库系统,当然就使用oracle 2-tier协议。
对于没有数据库的c/s(ftp,smtp)这些可以选择windwos wockets协议。
至于其他的ERP,EJB(需要ejbdetector.jar),选择相应的协议即可.


 LR的基本原理:
通过Agent进程,监视各种协议的client与server端的通讯,用LR的一套C语言函数来录制脚本,所以只要LR支持的协议,就不会存在捕捉不到的,这是它与Loadtest,WR,Robot(Gui)录制脚本的很大一个区别。WR必须对识别对象,才能录制到。然后它调用这些脚本向服务器端发出请求,接受服务器的返回。至于服务器内部如何处理,它不关心。




录制脚本前需要理解的几个基本概念:


1. 事务(Transaction)
事务(Transaction)是这样一个点,我们为了衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这样就定义了一个transaction,LoadRunner 运行到该事务的开始点时,LoadRunner 就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。
   插入事务操作可以在录制过程中进行,也可以在录制结束后进行。LoadRunner 运行在
脚本中插入不限数量的事务。
比如一个单据,把从登录到保存成功退出整个作为一个脚本,对于需要关注的保存,输入的帮助定义为单独的事务,以取得响应时间,需要响应时间的设事务
脚本中事务的代码如下:




2. 集合点(Rendezvous)
集合点:是一个并发访问的点,在测试计划中,可能会要求系统能够承受1000 人同时提交数据,在LoadRunner 中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner 就会检查同时有多少用户运行到集合点,如果不到1000 人,LoadRunner 就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000 人时,LoadRunner 命令1000 人同时去提交数据,并发访问的目的。
注意:集合点经常和事务结合起来使用,常放在事务的前面,集合点只能插入到Action 部分,vuser_init和vuser_end 中不能插入集合点。集合点函数如下:




加入集合点之后,在后面运行过程中可以看到VU的状态,会等待集合。



3. IP Spoofer(IP 欺骗)
   当运行场景时,虚拟用户使用它们所在的Load Generator 的固定的IP 地址。同时每个
Load Generator 上运行大量的虚拟用户,这样就造成了大量的用户使用同一IP 同时访问一个网站的情况,这种情况和实际运行的情况不符,并且有一些网站会根据用户IP 来分配资源,这些网站会限制同一个IP 的登陆,使用等等。为了更加真实的模拟实际情况,LoadRunner允许运行的虚拟用户使用不同的IP 访问统一网站,这种技术称为“IP 欺骗”。
启用该选项后,场景中运行的虚拟用户将模拟从不同的IP 地址发送请求。该选项非常
的有用。

注意:IP Spoofer 在连接Load Generators 之前启用。要使用IP 欺骗,各个Load Generator 机器必须使用固定的IP,不能使用动态IP(即DHCP)。


LoadRunner主要功能是模拟多用户对系统进行负载压力测试,默认情况下,多用户的生成器都是LocalHost,有些应用需要不同的IP访问,为了模拟真实操作,我们还必须模拟多个IP,IP Wizard工具就提供了生成多个ip的功能,IP Wizard是一个单独的程序,我们可以在开始菜单里面找到,你可以添加一个局域网内的IP段。添加后重启,在Win2k下使用Ipconfig/all查看到很多虚拟的IP,最后要在Controller里面选择enable ip spoofer.


4. (Text/Image)检查点

对于查询类的脚本,一定要添加检查点,以保证在测试时结果的正确性.因为LR只要检测到网页的响应,就认为是pass而并不管当前网页内容的正确性.在进行压力测试时,为了检查Web服务器返回的网页是否正确,VuGen允许我们插入Text/Imag 检查点,这些检查点验证网页上是否存在指定的Text或者Image,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。检查点的含义和WinRunner 中的检查点功能基本上一致,这里就不再作过多的说明。
    举个例子:当我用loadrunner做压力测试的时候,
它的确能反馈给我各种服务器性能的数据,
但是在做B/S结构系统的测试的时候,
去发现如下问题:
loadrunner不能正确判断操作是否成功,
比如登录,我要测试200人同时登录,
但是我的login.jsp里面没有正确的关闭数据库的连接,
导致登录100人后,建立了100个数据库连接,
第101一个人登录的时候,由于超出数据库连接的最大数,
所以,jsp程序抛出了一个数据库异常。
但是页面的走向是正确的,所以loadrunner会认为程序是正确执行的,但是事实却并非如此


5. LR脚本复用问题

    作为一款优秀的负载测试工具,LR的测试脚本有很好的复用性,参数化后的脚本,在应用没什么大的变化的情况下,一直是可以用的。甚至你在A服务器录制的脚本,如果做测试的时候,需要转移到B服务器上,你只需要用查找替换的功能将A服务器的IP地址换成B服务器就可以使用。

你可能感兴趣的:(虚拟机,脚本,软件测试,企业应用,loadrunner)