LoadRunner性能测试工具的应用Loadrunner的简介LoadRunner®是一种预测系统行为和性能的工业级标准性能测试负载测试工具。可通过模拟上千万用户实施并发负载及实时性能监测的方式对系统的各个服务器、内存、磁盘、网络等进行测试来确认和查找问题。LoadRunner能够对整个企业架构进行测试。通过使用LoadRunner,企业能最大限度地缩短测试时间,优化性能和加速应用系统的发布周期。此外,LoadRunner能支持广泛的协议和技术,为您的特殊环境提供特殊的解决方案。安装注意事项•LR的版本:目前常见的:LR7.0,LR7.51,LR7.6,LR7.8,LR8.0每个版本差别蛮大的,大家尽量使用高版本。•操作系统选择:LR是个比较底层的软件,OS最好为Windows2000,因为W2k的稳定性和兼容性都不错,需要的内存也低,有人把LR装在WinXp下面,是有问题的。出错现象:“应用程序正常初始化(0xc0000005)失败”。在win2003,winXP下安装LR后会出现如此情况。协议的选择或者VUSER类型的选取•B/S系统:选择Web(Http/Html),•C/S系统:根据C/S结构所用到的后台数据库来选择不同的协议,如果后台数据库是Sybase,则采用sybaseCTlib协议,如果是Sqlserver,则使用MSSqlserver的协议,至于oracle数据库系统,当然就使用oracle2-tier协议。•对于没有数据库的c/s(ftp,SMTP)这些可以选择windowssockets协议。•至于其他的ERP,EJB(需要ejbdetector.jar),选择相应的协议即可.LR的基本原理•LR启动以后,在任务栏会有一个Agent(虚拟)进程,通过Agent(虚拟)进程,监视各种协议的Client与Server端的通讯,用LR的一套C语言函数来录制脚本,所以只要LR支持的协议,就不会存在录制不到的,这是它与Loadtest,WR,Robot(Gui)录制脚本的很大一个区别。(WR必须识别对象,才能录制到)。然后LR调用这些脚本向服务器端发出请求,接受服务器的响应。至于服务器内部如何处理,它不关心。测试脚本录制/分配所遵循的几个原则•1.脚本越小越好。•2.选择使用频率最高的。3.选择你所需要的进行录制。录制脚本前需要理解的几个基本概念•事务(Transaction)•集合点(Rendezvous)•IPSpoofer(IP欺骗)•(Text/Image)检查和contentscheck点•LR脚本复用问题•理解Correlation(关联)•脚本的参数化事务(Transaction)•事务(Transaction)是这样一个点,我们为了衡量某个action的性能,需要在action的开始和结束位置插入这样一个范围,这就定义了一个transaction,LoadRunner运行到该事务的开始点时,LoadRunner就会开始计时,直到运行到该事务的结束点,计时结束。这个事务的运行时间在结果中会有反映。•举个例子:比如一个单据,把从登录到保存成功退出整个作为一个脚本,对于需要关注的保存时间,定义为单独的事务,以取得响应时间,事务脚本函数如下:Lr_strat_transation(“submitBookDate”)/**中间代码是具体的事务操作*/Lr_end_transation(“submitBookDate”,LR_AUTO)集合点(Rendezvous)•是一个并发访问的点,在测试计划中,可能会要求系统能够承受1000人同时提交数据,在LoadRunner中可以通过在提交数据操作前面加入集合点,这样当虚拟用户运行到提交数据的集合点时,LoadRunner就会检查同时有多少用户运行到集合点,如果不到1000人,LoadRunner就会命令已经到集合点的用户在此等待,当在集合点等待的用户达到1000人时,LoadRunner命令1000人同时去提交数据,并发访问的目的。集合函数如下:lr_rendezvous(“SubmitQueryDate”)IPSpoofer(IP欺骗)•当运行场景时,虚拟用户使用它们所在的LoadGenerator的固定的IP地址。每个LoadGenerator上(同时)运行大量的虚拟用户,这样就造成了大量的用户使用同一IP同时访问一个网站的情况,这种情况和实际运行的情况不符,并且有一些网站会限制同一个IP的登陆。为了更加真实的模拟实际情况,LoadRunner允许运行的虚拟用户使用不同的IP访问同一网站,这种技术称为“IP欺骗”。•启用该选项后,场景中运行的虚拟用户将模拟从不同的IP地址发送请求。该选项非常•的有用。•注意:IPSpoofer在连接LoadGenerators之前启用。要使用IP欺骗,各个LoadGenerator机器必须使用固定的IP,不能使用动态IP(即DHCP)。(Text/Image)检查和contentscheck点•对于查询类的脚本,一定要添加检查点,以保证在测试时结果的正确性.因为LR只要检测到网页的响应,就认为是pass而并不管当前网页内容的正确性.在进行压力测试时,为了检查Web服务器返回的网页是否正确,VuGen允许我们插入Text/Imag检查点,这些检查点验证网页上是否存在指定的Text或者Image,还可以测试在比较大的压力测试环境中,被测的网站功能是否保持正确。LR脚本复用问题•作为一款优秀的负载测试工具,LR的测试脚本有很好的复用性,参数化后的脚本,在应用没什么大的变化的情况下,一直是可以用的。甚至你在A服务器录制的脚本,如果做测试的时候,需要转移到B服务器上,你只需要用查找替换的功能将A服务器的IP地址换成B服务器的IP地址就可以使用。理解Correlation(关联)•关联是用来解决脚本中存在的动态数据问题的.在7.8中,当你回放一次后,LR会自动录找你录制的时候和回放时候的差别,找出动态数据,并作成参数。举个我作的动态数据的例子,当用户登录时,会产生一个Sessionid号,访问结束后,该Sessionid便会失效。我录制的时候,在脚本里面获取到了该Sessionid,但当我再回放的时候,这个Sessionid已经无效了,所以我需要把这个Sessionid作为一个动态数据,当我一登录的时候,便获取一个新的有效的Sessionid,然后通过函数把它保存下来脚本的参数化•如果用户在录制脚本过程中,填写提交了一些数据,比如创建一个新的document。这些操作都被记录到了脚本中。当多个虚拟用户运行脚本时,都会提交相同的记录,这样做会被应用禁止,会出错,这样也不符合实际的运行情况,而且有可能引起冲突。为了更加真实的模拟实际环境,需要各种各样的输入。参数化输入是一种不错的方法•参数化包含以下两项任务:•①在脚本中用参数取代常量值。•②设置参数的属性以及数据源。•参数化仅可以用于一个函数中的参量。你不能用参数表示非函数参数的字符串。另外,不是所有的函数都可以参数化的。场景类型选择•录制好脚本之后,可以把脚本加入到场景里面去了。LR有2种大的场景类型:1.ManualScenario:完全手动的设置场景。这项下面还可以设置为每一个脚本分配要运行的虚拟用户的百分比,可在Controller的Scenario菜单下设置。2.Goal—OrientedScenario:如果你的测试计划是要达到某个性能指标,比如:每秒多少点击,每秒多少transactions,能到达多少VU,某个Transaction在某个范围VU(500-1000)内的反应时间等等,那么就可以使用面向目标的场景。具体操作详见实操注:LoadRunner安装包存放路径:\\192.168.0.2\测试部工具\Loadrunner8.0(WebSiteLoadTestTool-Good).iso