您好,欢迎访问三七文档
当前位置:首页 > 办公文档 > 其它办公文档 > LoadRunner_测试Tuxedo
用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第1页共51页作者:张翼用LoadRunner测试Tuxedo中间件系统——河北移动BOSS1.5公司:作者:张翼日期:2005年6月22日用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第2页共51页作者:张翼修订纪录日期修订版本修改描述作者2005-7-141.00初稿完成张翼用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第3页共51页作者:张翼用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第4页共51页作者:张翼1概述随着软件行业的发展,测试作为软件生命周期中特别重要的一个步骤,已经被越来越多的软件开发单位所重视。随着客户对软件认识的不断深入,对测试的要求也越来越高。客户已经不再仅仅满足于软件功能的完成。而更注重的是软件的性能和能够承受的压力。很多人容易把软件性能测试和软件压力测试混淆,甚至包括一些已经从事软件测试工作多年的专业人员。其实,二者之间确有关联,但也有比较明显的区别。按照我个人的理解,软件性能测试主要关注的是软件在规定正常的条件下,其处理能力的体现。比如对软件响应速度的测试和对服务器资源占用情况的检测;而压力测试,顾名思义,既是对软件的运行环境施加压力,来观测软件的运行情况。它关注的不是软件的响应速度或占用了多少系统资源。而是以高出正常负载20%-30%的情况下,观测系统是否能够成功正确的响应请求。其失败率是多少。在做软件性能测试的时候如何去检测系统的响应速度?又如何去观测系统资源占用的情况呢?在做软件压力测试的时候,如何构造一个高于正常负载的一个测试环境呢?又如何统计业务的失败率呢?目前,业界中有不少能够做性能和压力测试的工具,MercuryInteractive公司的LoadRunner是其中的佼佼者,也已经成为了行业的规范。它完全能够帮助完成以上所需要的工作。2编写目的河北移动BOSS1.5是以Tuxedo为中间件的C/S三层结构系统。作为测试员,我被安排做账务这个模块的性能和压力测试。由于以前从来没有使用过LoadRunner,这次工作遇到了很大的困难。疯狂K书的结果是发现LoadRunner对B/S系统的性能和压力测试支持得如此之好。凡是网上有的资料十之八九的都是介绍如何用LR对B/S系统的测试。此外就是一些喜欢玩底层的高手,弄一大堆英文资料来介绍Winsock的测试。我只能说,对不起,Winsock的英文资料我看不懂,B/S的资料我暂时不需要。还有一篇网上流传的文章,介绍的是用LR对BEA(Tuxedo、Weblogic)的测试,只简单描述了LoadRunner测试步骤,其介绍太留于表面,扫盲尚可,作为使用的说明,那就差的太远了。对于我们的系统来说,很明显应该使用Tuxedo协议去录制测试脚本。由于不能找到相关的介绍文档。我在著名的51testing论坛上和深圳测试协会的论坛上都发帖求助。居然5天过去了,看的人不少,回复的人一个也没有。气愤之余,决心要在这次测试搞定以后一定记录下步骤和心得,亦是本文形成的缘由。3本文讨论的范围本文是针对LoadRunner对Tuxedo中间件系统测试的一个专题文档。通过实例描述的方式介绍LR对Tux中间件系统进行测试的方法,主要介绍对脚本的处理,顺带介绍一下LoadRunner基本功能和测试步骤,但是不会以此为主。本文不会对Tuxedo中间件的详细配置进行介绍。用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第5页共51页作者:张翼4测试脚本的准备我打算以缴费的性能测试作为例子,通过我是怎样一步步实现这个测试脚本的,来介绍这个过程。4.1脚本的录制——万事开头难?当接到测试缴费性能的任务时,我已经看过了一些关于用LR测试B/S的文章。所以毫不犹豫的开始了用Tuxedo协议录制脚本的工作。4.1.1协议的选择打开VuGen,选择单协议录制方式,采用Tuxedo6协议:图表1协议选择由于系统的服务端采用的Tuxedo8.0服务,所以刚开始的时候我使用Tuxedo7协议进行录制。在录制到第8个事件的时候报错(如图2)。后来考虑到录制的客户端是tuxedo6.5的,可能不包含Tuxedo7的部分dll文件,所以改用Tuxedo6协议,就能够成功录制了。用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第6页共51页作者:张翼图表2协议选错了4.1.2开始录制选单设置当打开Tuxedo6协议开始录制以后,系统弹出一个开始录制对话框。由于测试对象是C/S结构的,所以我选择“Win32应用程序”为应用程序类型。然后在要录制的程序里面通过选择按钮选到要运行的客户端程序。将“录制到操作”定位到vuser_init中。详细的信息如图。图表3开始录制对话框注意:1、LR的脚本基本上分成三个结构,vuser_init、action、vuser_end。对于Web协议的脚本来说action可以是多个的。对于选用的Tuxedo6协议,经过观察,好像不能添加多个action。通常vuser_init是用来放置登录脚本的,vuser_end是用来放置退出脚本的,这两部分的脚本不参与迭代和循环,也不需要定义事务。如果需要在登录的时候添加集合点,验证多用户登录的压力测试方案,则需要将登录脚本放在action中,让vuser_init留空。因为在vuser_init区域内是不允许添加集合点的。2、“工作目录”通常是根据“要录制的程序”的选择而自动填充的,不需要做修改。用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第7页共51页作者:张翼4.1.3录制登录“开始录制”对话框设置完成,点击OK键,录制正式开始。LR会根据设置的“要录制的程序”打开对应的客户端程序(如图4)。按照正常步骤登录即可。图表4正常登录输入工号和口令点击确定,成功登录系统。LR的录制控制条会显示录制过程中发生的事件,比如在登录窗口打开过程中共做了24个事件(如图4),登录成功后共做了112个事件(如图5)。4.1.4插入集合点登录完成后,将要做缴费操作,所以需要更换录制脚本的区域。直接在录制控制条上将vuser_init换成action即可(如图5)。图表5更换录制区域然后继续脚本的录制。打开缴费的界面,输入一个要缴费的服务号码(电话号码)。输入完成后添加集合点。添加集合点的方式为点击录制控制条上的添加集合点按钮(如图6)。然后弹出“插入集合点”对话框,输入集合点的名字,就成功了。用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第8页共51页作者:张翼图表6添加集合点注意:1、集合点:当通过controller虚拟多个用户执行该脚本时。用户的启动或运行步骤不一定都是同步的。集合点是在脚本的某处设置一个标记。当有虚拟用户运行到这个标记处时,停下等待,直到所有的用户都达到这个标记处时,再一同进行下面的步骤,这样能够用最大的用户并发去做下面的操作,就像集合再前进一样。集合点之名由此而得。集合点主要用于对关键步骤的加压。所以常用在事务定义之前。4.1.5插入事务点集合点插入完毕,点击录制控制条上的“事务开始定义”按钮定义事务。“开始事务”对话框弹出,输入事务名称,点击确定就完成了开始事务的标记。(如图7)图表7插入事务开始点注意:用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第9页共51页作者:张翼1、事务:对于一个录制好的脚本,在回放的时候怎么去关注它的具体性能呢?当然不是全局的去观察。测试需要注意的其实是脚本中的关键点。比如图书馆的新书入库,其实测试人员关注的只是在图书入库的那个步骤的性能值,通常都不会去研究填写这些入库图书信息的那些过程。所以LR的事务添加操作就是把测试所需要关注的操作定义成事务告诉LR,这个是我想要重点检测性能的操作。LR就会在运行过程中记录事务内操作的响应事件等性能数据。并在Analysis中以报告的形式给出统计结果。4.1.6插入事务结束点事务开始点插入完成后,点击Enter键,对输入的服务号码进行查询。查询出号码对应的账户信息。当查询完成后,点击录制控制条中的插入事务结束点按钮。弹出“结束事务”对话框,点击OK结束定义的事务。(如图8)图表8插入事务结束点现在来回顾一下4.1.4到4.1.6做了什么。其实我的目的是让LR关注查询输入的电话号码对应的账户信息这个步骤,因为它是一个要和数据库交互的动作,并且会被客户经常使用。所以应该把查询账户信息的操作定义成一个事务。在做这个事务之前,为了给这个事务正常加压。所以定义了集合点。4.1.7完成脚本录制账户信息查询的过程完成后,在“实交”区域内输入实际要交的金额。然后效仿前面的步骤为缴费提交的操作添加集合点、事务开始点。然后点击确定按钮。等提交完成后加入事务结束点。事务结束点加入过后,需要的基本操作就完成了。最后录入退出脚本。此时需要将脚本录制区域修改为Vuser_end(如图9)用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第10页共51页作者:张翼图表9更换脚本录制区域然后点击关闭客户端的按钮。在系统提示确认过后,成功退出客户端。然后点击录制控制条上的结束控制按钮,就能够成功生成录制的脚本。至此我的缴费性能测试脚本就制作完成了。谁说万事开头难?就录脚本来说,我认为是LoadRunner操作中最简单也最容易上手的。注意:在录制脚本的过程中,需要选择数据。建议最好能够选择比较有代表性的数据。比如我的脚本中,选择的服务号码。该号码对应的账号和用户号码最好不要相同。因为这两个号码在后面动态关联或参数替换的地方需要用到。如果不能区别的话,到时候从ReplyCARRYbuffer中找到的数据就不知道哪些应该替换成账号,哪些应该替换成用户号码了。后面会对参数替换和动态数据的关联详细介绍。4.2脚本的修改——增强脚本功能关于Tuxedo6协议的LoadRunner录制脚本的增强,费了我不少功夫。主要是到处都找不到资料。上网求助也无门。后来发现高手就在身边,通过不断的请教,终于顺利完成了这次的工作任务。再次特别的感谢这位高手。脚本录制完成了,我在Vugen中回放了两边,都能够顺利通过。但是如果就用这个脚本去做性能测试显然是不能测试到真正的性能的。4.2.1录制的原始脚本不能直接用做性能测试为什么录制的原始脚本不能直接用做性能测试呢?这里先简单讲述一下controller的用途。LoadRunner8.0以前的版本主要包含了3个应用——VUGenerator、Controller和Analysis。VUGenerator用于对测试脚本的录制、编译和调试;Analysis用于对性能测试结果的分析和给出报表结果;LoadRunner8.0还包含一个叫做TuningConsole的应用,是用作系统优化方案的(我没有用过,连相关资料都没看过,就不吹这个了);Controller是用于虚拟场景的构建、提供虚拟用户方案的模拟,对测试脚本的分配,以及提供监视器实时监控系统资源。简单点讲,就是用VuGen录制完脚本了,用Controller去生成一个场景,然后产生大量的虚拟用户,把脚本分配给这些虚拟用户在场景中去执行,对服务器来说就好像同时有很多用户都在访问自己,实际上都是一台或数台机器虚拟出来的。现在来讨论一下为什么原始脚本不行。拿我录制的脚本来说,首先,登录系统以后,要用一个电话号码查询账户信息,然后给这个账户缴费。当虚拟了大量用户以后,每个用户用LoadRunner测试Tuxedo中间件系统创建时间:2005-6-229时4分第11页共51页作者:张翼都同时去执行这个脚本,就会造成所有的虚拟用户同时在为同一个账户缴费。由于系统有concurrenceconstr
本文标题:LoadRunner_测试Tuxedo
链接地址:https://www.777doc.com/doc-10013 .html