文档详情

LoadRunner_测试Tuxedo

23****fg
实名认证
店铺
DOCX
726.82KB
约87页
文档ID:156902585
LoadRunner_测试Tuxedo_第1页
1/87

用LoadRunner测试Tuxedo中间件系统 创建时间:2005-6-22 9时4分用LoadRuunner测测试Tuxeedo中间件件系统——河北移移动BOSSS1.5公司: 作者:张 翼日期:20055年6月222日修订纪录日期修订版本修改描述 作者2005-7--141.00初稿完成 张翼1概述随着软件行业的的发展,测试试作为软件生生命周期中特特别重要的一一个步骤,已已经被越来越越多的软件开开发单位所重重视随着客客户对软件认认识的不断深深入,对测试试的要求也越越来越高客客户已经不再再仅仅满足于于软件功能的的完成而更更注重的是软软件的性能和和能够承受的的压力很多人容易把软软件性能测试试和软件压力力测试混淆,甚甚至包括一些些已经从事软软件测试工作作多年的专业业人员其实实,二者之间间确有关联,但但也有比较明明显的区别按照我个人的理理解,软件性性能测试主要要关注的是软软件在规定正正常的条件下下,其处理能能力的体现比比如对软件响响应速度的测测试和对服务务器资源占用用情况的检测测;而压力测试,顾顾名思义,既既是对软件的的运行环境施施加压力,来来观测软件的的运行情况。

它关注的不是软件的响应速度或占用了多少系统资源而是以高出正常负载20%-30%的情况下,观测系统是否能够成功正确的响应请求其失败率是多少在做软件性能测测试的时候如如何去检测系系统的响应速速度?又如何何去观测系统统资源占用的的情况呢?在在做软件压力力测试的时候候,如何构造造一个高于正正常负载的一一个测试环境境呢?又如何何统计业务的的失败率呢??目前,业界界中有不少能能够做性能和和压力测试的的工具,Meercuryy Inteeractiive公司的的LoadRRunnerr是其中的佼佼佼者,也已已经成为了行行业的规范它它完全能够帮帮助完成以上上所需要的工作作2编写目的河北移动BOSSS1.5是是以Tuxeedo为中间间件的C/SS三层结构系系统作为测测试员,我被被安排做账务务这个模块的的性能和压力力测试由于于以前从来没没有使用过LLoadRuunner,这这次工作遇到到了很大的困困难疯狂KK书的结果是是发现LoaadRunnner对B//S系统的性性能和压力测测试支持得如如此之好凡凡是网上有的的资料十之八八九的都是介介绍如何用LLR对B/SS系统的测试试此外就是是一些喜欢玩玩底层的高手手,弄一大堆堆英文资料来来介绍Winnsock的的测试。

我只只能说,对不不起,Winsoock的英文文资料我看不不懂,B/SS的资料我暂暂时不需要还还有一篇网上上流传的文章章,介绍的是是用LR对BBEA(Tuuxedo、WWebloggic)的测测试,只简单单描述了LooadRunnner测试试步骤,其介介绍太留于表表面,扫盲尚尚可,作为使使用的说明,那那就差的太远远了对于我们的系统统来说,很明明显应该使用用Tuxeddo协议去录录制测试脚本本由于不能能找到相关的的介绍文档我我在著名的551testting论坛坛上和深圳测测试协会的论论坛上都发帖帖求助居然然5天过去了了,看的人不少,回回复的人一个个也没有气气愤之余,决心要要在这次测试试搞定以后一一定记录下步步骤和心得,亦是本文形形成的缘由3本文讨论的范范围本文是针对LooadRunnner对TTuxedoo中间件系统统测试的一个个专题文档通过实例描述的方式介绍LR对Tux中间件系统进行测试的方法,主要介绍对脚本的处理,顺带介绍一下LoadRunner基本功能和测试步骤,但是不会以此为主本文不会对Tuxedo中间件的详细配置进行介绍4测试脚本的准准备我打算以缴费的的性能测试作作为例子,通通过我是怎样样一步步实现现这个测试脚脚本的,来介介绍这个过程程。

4.1脚本的录录制——万事开头头难?当接到测试缴费费性能的任务务时,我已经经看过了一些些关于用LRR测试B/SS的文章所所以毫不犹豫豫的开始了用用Tuxeddo协议录制制脚本的工作作4.1.1协议议的选择打开VuGenn,选择单协协议录制方式式,采用Tuuxedo66协议:图表 Error! Bookmark not defined. 协议选择择由于系统的服务务端采用的TTuxedoo8.0服务务,所以刚开开始的时候我我使用Tuxxedo7协协议进行录制制在录制到到第8个事件件的时候报错错(如图2)后后来考虑到录录制的客户端端是tuxeedo6.55的,可能不不包含Tuxxedo7的的部分dlll文件,所以以改用Tuxxedo6协协议,就能够够成功录制了了图表 Error! Bookmark not defined. 协议选错错了4.1.2开始始录制选单设设置当打开Tuxeedo6协议议开始录制以以后,系统弹弹出一个开始始录制对话框框由于测试试对象是C//S结构的,所所以我选择“Win322应用程序”为应用程序序类型然后后在要录制的的程序里面通通过选择按钮钮选到要运行行的客户端程程序将“录制到操作作”定位到vusser_innit中。

详详细的信息如如图图表 Error! Bookmark not defined. 开始录制制对话框± 注意:1、 LR的脚本基本本上分成三个个结构,vuuser_iinit、aactionn、vuseer_endd对于Weeb协议的脚脚本来说acction可可以是多个的的对于选用用的Tuxeedo6协议议,经过观察察,好像不能能添加多个aactionn通常vuuser_iinit是用用来放置登录录脚本的,vvuser__end是用用来放置退出出脚本的,这这两部分的脚脚本不参与迭迭代和循环,也也不需要定义义事务如果果需要在登录录的时候添加加集合点,验验证多用户登登录的压力测测试方案,则则需要将登录录脚本放在aactionn中,让vuuser_iinit留空空因为在vuuser_iinit区域域内是不允许许添加集合点点的2、 “工作目录”通通常是根据“要录制的程程序”的选择而自自动填充的,不不需要做修改改4.1.3录制制登录“开始录制”对对话框设置完完成,点击OOK键,录制制正式开始LLR会根据设设置的“要录制的程程序”打开对应的的客户端程序序(如图4)按照正正常步骤登录录即可图表 Error! Bookmark not defined. 正常登录录输入工号和口令令点击确定,成成功登录系统统。

LR的录录制控制条会会显示录制过过程中发生的的事件,比如如在登录窗口口打开过程中中共做了244个事件(如如图4),登登录成功后共共做了1122个事件(如如图5)4.1.4插入入集合点登录完成后,将将要做缴费操操作,所以需需要更换录制制脚本的区域域直接在录录制控制条上上将vuseer_iniit换成acction即即可(如图55)图表 Error! Bookmark not defined. 更换录制制区域 然后继续续脚本的录制制打开缴费费的界面,输输入一个要缴缴费的服务号号码(号号码)输入入完成后添加加集合点添加加集合点的方方式为点击录录制控制条上上的添加集合合点按钮(如如图6)然然后弹出“插入集合点点”对话框,输输入集合点的的名字,就成成功了图表 Error! Bookmark not defined. 添加集合合点± 注意:1、集合点:当当通过conntrolller虚拟多多个用户执行行该脚本时用用户的启动或或运行步骤不不一定都是同同步的集合合点是在脚本本的某处设置置一个标记当当有虚拟用户户运行到这个个标记处时,停停下等待,直直到所有的用用户都达到这这个标记处时时,再一同进进行下面的步步骤,这样能能够用最大的的用户并发去去做下面的操操作,就像集集合再前进一样。

集集合点之名由由此而得集集合点主要用用于对关键步步骤的加压所所以常用在事事务定义之前前4.1.5插入入事务点集合点插入完毕毕,点击录制制控制条上的的“事务开始定定义”按钮定义事务务开始事务”对话框弹出出,输入事务务名称,点击击确定就完成成了开始事务务的标记如如图7)图表 Error! Bookmark not defined. 插入事务务开始点± 注意:1、事务:对于于一个录制好好的脚本,在在回放的时候候怎么去关注注它的具体性性能呢?当然然不是全局的的去观察测测试需要注意意的其实是脚脚本中的关键键点比如图图书馆的新书书入库,其实实测试人员关注注的只是在图图书入库的那那个步骤的性性能值,通常常都不会去研研究填写这些些入库图书信信息的那些过过程所以LLR的事务添加操作作就是把测试所所需要关注的的操作定义成成事务告诉LLR,这个是是我想要重点点检测性能的的操作LRR就会在运行行过程中记录录事务内操作作的响应事件件等性能数据据并在Annalysiis中以报告告的形式给出出统计结果4.1.6插入入事务结束点点事务开始点插入入完成后,点点击Enteer键,对输输入的服务号号码进行查询询查询出号号码对应的账账户信息。

当当查询完成后后,点击录制制控制条中的的插入事务结结束点按钮弹出“结束事务”对话框,点击OK结束定义的事务如图8)图表 Error! Bookmark not defined. 插入事务务结束点现在来回顾一下下4.1.44到4.1..6做了什么么其实我的的目的是让LLR关注查询询输入的话号码对应的的账户信息这个个步骤,因为为它是一个要要和数据库交交互的动作,并并且会被客户户经常使用所所以应该把查查询账户信息的操操作定义成一一个事务在在做这个事务务之前,为了了给这个事务务正常加压所所以定义了集集合点4.1.7完成成脚本录制账户信息查询的的过程完成后后,在“实交”区域内输入入实际要交的的金额然后后效仿前面的的步骤为缴费费提交的操作作添加集合点点、事务开始始点然后点点击确定按钮钮等提交完完成后加入事事务结束点事务结束点加入入过后,需要要的基本操作作就完成了最最后录入退出出脚本此时时需要将脚本本录制区域修修改为Vusser_ennd(如图99)图表 Error! Bookmark not defined. 更换脚本本录制区域然后点击关闭客客户端的按钮钮在系统提提示确认过后后,成功退出出客户端然然后点击录制制控制条上的的结束控制按按钮,就能够够成功生成录录制的脚本。

至至此我的缴费费性能测试脚脚本就制作完完成了谁说说万事开头难难?就录脚本本来说,我认认为是LoaadRunnner操作中中最简单也最最容易上手的的± 注意:在录制脚本的过过程中,需要要选择数据建建议最好能够够选择比较有有代表性的数数据比如我我的脚本中,选选择的服务号号码该号码码对应的账号号和用户号码码最好不要相相同因为这这两个号码在在后面动态关关联或参数替替换的地方需需要用到如如果不能区别别的话,到时时候从Repply CAARRY bbufferr中找到的数数据就不知道道哪些应该替替换成账号,哪哪些应该替换换成用户号码码了后面会会对参数替换换和动态数据据的关联详细细介绍4.2脚本的修修改——增强脚本本功能关于Tuxeddo6协议的的LoadRRunnerr录制脚本的的增强,费了了我不少功夫夫主要是到到处都找不到到资料上网网求助也无门门后来发现现高手就在身边,通通过不断的请请教,终于顺顺利完成了这这次的工作任任务再次特特别的感谢这这位高手脚本录制完成了了,我在Vuugen中回回放了两边,都都能够顺利通通过但是如果就用这这个脚本去做做性能测试显显然是不能测测试到真正的的性能的4.2.1录制制的原始脚本本不能直接用用做性能测试试为什么录制的原原始脚本不能能直接用做性性能测试呢??这里先简单讲述述一下conntrolller的用途途。

LoadRunnner8..0以前的版版本主要包含含了3个应用用——VUGeenerattor、Coontrolller和AAnalyssisVUUGenerrator用用于对测试脚脚本的录制、编编译和调试;Anaalysiss用于对性能能测试结果的的分析和给出出报表结果;LLoadRuunner88.0还包含含一个叫做TTuningg Conssole的应应用,是用作作系统优化方方案的(我没没有用过,连连相关资料都都没看过,就就不吹这个了了);Conntrolller是用于于虚拟场景的的构建、提供供虚拟用户方方案的模拟,对对测试脚本的的分配,以及及提供监视器器实时监控系系统资源简简单点讲,就就是用VuGGen录制完完脚本了,用用Contrrollerr去生成一个个场景,然后后产生大量的的虚拟用户,把把脚本分配给给这些虚拟用用户在场景中中去执行,对对服务器来说说就好像同时时有很多用户户都在访问自自己,实际上上都是一台或或数台机器虚虚拟出来的现在来讨论一下下为什么原始始脚本不行拿我录制的脚本来说,首先,登录系统以后,要用一个号码查询账户信息,然后给这个账户缴费当虚拟了大量用户以后,每个用户都同时去执行这个脚本,就会造成所有的虚拟用户同时在为同一个账户缴费。

由于系统有concurrence constraint机制,是不允许两个操作员同时操作同一条数据的所以用原始脚本运行是肯定会报错的所以,为了避免免这个问题,就就需要对当前前的脚本增强强,使其更加加通用化能够让不不同的虚拟用用户为不同的的账号缴费具具体的实施主主要有参数化化替换和动态数据关关联两个操作要做这两个操作作,就一定要要熟悉录制出出来的脚本的的结构4.2.2 TTuxedoo协议录制生生成的脚本结结构简介在VuGen中中可以发现录录制完成的脚脚本中,除了了包括3个脚脚本区域外还还有1个Reeplay..vdf文件件如图:图表 Error! Bookmark not defined. Replaay.vdff这个Replaay.vdff是用来做什什么的呢?首首先从录制脚脚本的结构说说起在vuser__init、aactionn、vuseer_endd中脚本的结结构都十分类类似结构大大概为多个rrequesst carrry buuffer和和对应的reeply ccarry buffeer图表 Error! Bookmark not defined. 脚本实实例图11是从录制制脚本的acction区区域中截取的的一段。

从注释信息中可可以看出,它它包含了一个个/* Reequestt CARRRY bufffer 112 */和和一个/* Replyy CARRRAY buuffer 12 *//现在具体介绍一一下各个语句句,先从图中中红框内/** Requuest CCARRY buffeer 12 */以前的的语句开始l lr_renddezvouus("quueryCuustInffo");该语句是我在录录制过程中定定义的第一个个集合点l lr_starrt_traansacttion(""queryyCustIInfo"));该语句是我在录录制过程中定义的第一一个事务开始始点l lrt_tpffree(ddata_11);该语句是将daata_1内内的数据清空空l lrt_tpffree(ddata_00);该语句是将daata_0内内的数据清空空l lr_thinnk_timme(24));设置思考事件,当当脚本运行到到此处,暂停停24秒l data_0 = lrtt_tpallloc(""CARRAAY", """, 2553);给data_00分配一个新新的缓存空间间,类型为CCARRAYY,子类型为为空,长度为为253个字字节。

/* Requuest CCARRY buffeer 12 */l lrt_memmcpy(ddata_00, sbuuf_12,, 252));从sbuf_112中拷贝2252个字节节到dataa_0l lrt_dissplay__buffeer("sbbuf_122", daata_0,, 252,, 252));该命令是将daata_0指指向的sbuuf_12缓缓存中的数据据拷贝到一个个.out文文件当中第1个252是是“在回放中将将使用的实际际数据长度”第2个252是是“期望的长度度和在录制过过程中观测到到的一样”l data_1 = lrtt_tpallloc(""CARRAAY", """, 2)); 给daata_1分分配一个新的的缓存空间,类类型为CARRRAY,子子类型为空,长长度为2个字字节l tpresullt_intt = lrrt_tpccall(""DISPAATCHERR",datta_0,2252,&ddata_11,&oleen,0);;lrt_tpccall函数数的作用是发发送一个服务务请求但后等等待回复上面语句是向DDISPATTCHER发发送请求,data_0是是请求的数据据部分,252是指daata_0的的长度,&data_11是返回的数数据,&olen是返返回数据的长长度,0是有效性标记记。

/* Replly CARRRY buuffer 12 *//l lrt_dissplay__buffeer("rbbuf_122", daata_1,, olenn, 115594);该命令是将daata_1指指向的rbuuf_12缓缓存中的数据据拷贝到一个个.out文文件当中olen是“在在回放中将使使用的实际数数据长度”11594是“期望的长度度和在录制过过程中观测到到的一样”l lrt_aboort_onn_erroor();如果上一步tuuxedo功功能遇到错误误,就中止当当前正进行的的事务现在再来看Reeplay..vdf打开Replaay.vdff,可以发现现下面的语句句写在开头处处:/* Thiss filee is ggeneraated bby LoaadRunnner. YYou maay ediit it careffully!! */#ifndeff TUXVVDF_H#definee TUXVVDF_Hchar* ddata_00;char* ddata_11;现在终于知道ddata_00和dataa_1是从哪哪里来的了再往下看,可以以发现原来RReplayy.vdf 中的结构也也大体是多个个requeest caarry bbufferr和对应的rreply carryy bufffer。

并且且注意,所有有的replly carrry buuffer都都是被注释的的在这里可可以找到acction中中被使用的ssbuf_112和rbuuf_12其实Replaay.vdff就是一个大大的数据仓库库在和服务器交互互的过程中,所所有缓存中的的数据最终都都会按照格式式写进Repplay.vvdf拿我录制的的脚本举例,登登录用的txxjhs,查查询账户用的服务务号码都能够够在Repllay.vddf中对应的的sbuf中中找到;而输输入服务号码码后获取的账账户信息(账号、流水号号等等)信息息也能从Reeplay..vdf中对对应的rbuuf中找到如如此以来就可可以对这些数数据进行参数数化和动态绑绑定了± 注意:1、脚本中各个个函数的具体体含义其实不不必深究对于测测试员来讲,如如果不是打算算用手工方式式编写完整的的脚本,那么么知道函数的的大意已经足足够了不会会影响性能测测试的进行2、有没有发现现Replaay.vdff里面有很多多乱码?这是因为数据被加加密了比如如我第一次录录制完成后,发发现了大段的的乱码而且且有类似下面面的语句:图表 Error! Bookmark not defined. Replaay.vdff乱码有compreess做标记记,表示该段段代码被加密密。

从脚本中中看,因为加加密是发生在在Requeest段中,所所以应该是客户端向服务器端端发送的请求求被加密,请请开发的同事事提供了解密密版本的客户户端解决了这这个问题在在软件中,如如果重要的数数据或请求需需要在网络上上传输,为了了避免被破坏坏性的截取,往往往会将这些些数据或请求求加密以后再再放在网上传传输,接收方方接到加密数数据后经过解解密程序解密密再做后续响响应4.2.3参数数化替换关于为什么要做做参数化替换换已经在本节节的前面部分分有较详细的的描述,这里里就不再赘叙叙了直接进进入如何参数数化的部分同同样拿我录制制的脚本开刀刀首先回想一下脚脚本录制过程程录制的脚本中,主主要包含下面面几个流程1、 首先用txjhhs用户登录录系统2、 然后输入服务号号码1393328528818,去获获取账号等信息3、 对账号进行缴费费操作4、 退出可以观察到在整整个流程中需需要参数化的的是用户(包包括对应密码码)和服务号号码因为它它们是操作员员向服务器发发出请求的数数据在Replayy.vdf中中找到用户和和服务号码第第一次出现的的地方选中中这个字段,点点击右键,弹弹出右键菜单单如图113)图表 Error! Bookmark not defined. 参数替替换右键菜单单选择“替换为新新参数”打开“选择或创建建参数”对话框。

对对于英文版LLR应该是选选择“Replaace wiith neew parrameteer”)图表 Error! Bookmark not defined. 选择择或创建参数数参数名可以任意意命名,最好好和实际参数数的意义匹配配,便于以后后维护参数类型这里选选择Filee,意为从文文件中读取然后点击“属性性”按钮打开“参数属性”页面,如图图15页面中参数类型型和选择或创创建参数页面面中的参数类类型等效文件路径为文件件保存路径点击“创建表”按钮确认认后,能够创创建一个一行行一列的数据表,数据为“txjhss”,就是登录用用户(该用户户没有设置密密码,所以没没有参数化密密码),然后后可以通过点点击添加行和和添加列按钮钮,添加记录录,并输入新新的登录用户户名,最后LLR会将这些些数据形成一一个文件保存存在指定的路路径中图表 Error! Bookmark not defined. 参数属属性页面点击数据向导按按钮,能够打打开数据库查查询向导页面面,如图166图表 Error! Bookmark not defined. 数据库库查询向导建议在查询定义义中选择“手动指定SL语句”,点击下一一步,可以打打开指定SL语句页面面。

如图177图表 Error! Bookmark not defined. 手动指指定SQL语语句点击创建,打开开Selecct Datta Souurc页面,开开始创建连接接字符串如如图18图表 Error! Bookmark not defined. Sellect DData SSourc页页面点击“New”按钮,打开开“Creatte Neww Dataa Sourrce”页面,选择择Oraclle ODBBC Driiver数据据源类型(因为为我的后台数数据库是Orracle),点击“下一步”图表 Error! Bookmark not defined. Creeate NNew Daata Soource页页面新页面中要求输输入数据源的的名称,可以以随意键入,如如图20然然后点击下一一步图表 Error! Bookmark not defined. 输入数数据源名称 确认认信息页面弹弹出,并列出出目前该数据据源的设置,直直接点击完成成即可,会弹弹出一个连接接窗口,输入入数据库连接接的服务名,用用户名和密码码,点击OKK,如图211:图表 Error! Bookmark not defined. 数据库库连接窗口如果连接通过,OODBC数据据源就被成功功创建,可以以在“手动指定SSQl语句”的窗口中看看到连接串。

然后在SQL语句窗口输入自己定义的SQL语句,点击完成后,就能够成功按照提供的数据源和SQL语句在指定的数据库中查询到指定的数据存放于数据文件中如图22:图表 Error! Bookmark not defined. 填入SSQL通过创建表方式式和数据向导导方式都可以以成功创建数数据文件,操操作员可以随随意选择自己己习惯的方式式总之,能能坚守数据文文件放数据的的原则,就不不会出问题了了当回到“参数属属性页面”中后,发现现数据已经准准备好了,而而且原来灰色色的区域目前前也可以选择择了如图223选择列中的内容容,不再赘述述主要介绍绍一下“选择下一行行”和“更新值的时时间”的几个选项项图表 Error! Bookmark not defined. 参数属属性页面2“选择下一行”共有下面几几个选项:u Sequenttial: 按照顺顺序一行行的的读取每一一个虚拟用户户都会按照相相同的顺序读读取u Random:: 任意选选择但是在在每一次迭代代中,将不发发生变化u Unique::唯一的数当使使用该选项时时,需要保证证准备的数据据文件中有足足够的数据比比如要做200个虚拟用户户,每个用户户要进行5次次迭代,第一一个用户在55次迭代中分分别使用数据据文件中的数数据1~数据据5,第二个个用户在5次次迭代中分别别使用数据文文件中的数据据6~数据110,类推以以后20个用用户将使用到到100个数数据。

那么必必须保证准备备的数据文件件中有1000个以上的数数据,否则运运行时会出错错u Same liine ass 某个参数数:和前面定义的参参数取同行的的记录通常常用在有关联联性的数据上上面比如当当我做登录密密码的参数化化时,由于它它和UserrID是有关关联的,所以以会用到这种种选择方式更新值的时间间”共有下面几几个选项:u Each itteratiion:每次迭代更新一一个新的值u Each occcurreence:每次出现时该参参数时更新一一个新的值u Once不管迭代多少次次该参数的值值一直保持不不变考虑到我录制脚脚本的实际情情况,这里我我将“选择下一行行”设为“Uniquue”,将“更新值的时时间”设为“Each iteraation”既是说,每每次迭代的时时候读取一次次数据文件中中的数据且文文件中的数据据不会被多用用户重复使用用这样参数数的定义就完完成了,可以以发现Repplay.vvdf中原来来选中的“txjhss”变成了“{UserrID}”如图244说明该数数据已经被参参数替换了接接着将Repplay.vvdf文件中中所有在Reequestt CARRRY bufffer里出出现的“txjhss”全部替换为为“{UserrID}”。

参数替换换的工作就完完成了可以以参照本次操操作的步骤同同样替换服务务号码图表 Error! Bookmark not defined. 参数化化替换成功± 注意:1、 参数类型:在创建参数的时时候,我选择择了参数类型型为Filee参数类型型共有9种,现在来简单介绍一下所有的参数类型以及意义1.1、 DateTimme:在需要要输入日期//时间的地方方,可以用DDateTiime 类型型来替代其其属性设置也也很简单,选选择一种格式式即可当然然也可以定制制格式1.2、 Group NName:很很少用到在在实际运行中中,LoaddRunneer使用该虚虚拟用户所在在的Vuseer Grooup 来代代替但是在在VuGenn 中运行时时,Grouup Namme将会是NNone1.3、 Load Geenerattor Naame:在实实际运行中,LLoadRuunner 使用该虚拟拟用户所在LLoadGeenerattor 的机机器名来代替替1.4、 Iteratiion Nuumber::在实际运行行中,LoaadRunnner 使用用该测试脚本本当前循环的的次数来代替替1.5、 Random Numbeer:随机数数。

很简单在在属性设置中中可以设置产产生随机数的的范围1.6、 Unique Numbeer:唯一的的数在属性性设置中可以以设置第一个个数以及递增增的数的大小小注意:使使用该参数类类型必须注意意可以接受的的最大数例例如:某个文文本框能接受受的最大数为为99当使使用该参数类类型时,设置置第一个数为为1,递增的的数为1,但但100 个个虚拟用户同同时运行时,第第100 个个虚拟用户输输入的将是1100,这样样脚本运行将将会出错这这里说的递增增意思是各个个用户取第一一个值的递增增数,每个用用户相邻的两两次循环之间间的差值为11举例说明明:假如起始始数为1,递递增为5,那那么第一个用用户第一次循循环取值1,第第二次循环取取值2;第二二个用户第一一次循环取值值为6,第二二次为7;依依次类推1.7、 Vuser IID:设置比比较简单在在实际运行中中,LoaddRunneer 使用该该虚拟用户的的ID 来代代替,该IDD 是由Coontrolller 来来控制的但但是在VuGGen 中运运行时,Vuuser IID 将会是是 –11.8、 File:需要要在属性设置置中编辑文件件,添加内容容,也可以从从现成的数据据库中取数据据(就是我用用到的那种类类型)。

1.9、 User Deefinedd Funcction::从用户开发发的dll 文件提取数数据有关各种参数类类型属性的详详细设置这里里就不多介绍绍了,到用到到的时候大家家可以多看看看帮助文档4.2.4动态态数据关联什么是动态数据据关联?哪些些是动态数据据?怎么关联联?什么是动态数据据关联动态数据可以理理解为从服务务器返回给客客户端的数据据比如当你你向服务器发发送了一个请请求 (Reequestt CARRRY bufffer),在在服务器的响响应(Repply CAARRY bbufferr)中会给出出一些数据并且在后续的程序中,这些被服务器返回的数据将被频繁的使用对于不同的请求数据来说,服务器处理后会返回不同的响应数据操作员在得到这些数据返回之前无法预测到这些数据,所以无法用参数化的方式去处理这些数据比如当我输入服务号码查询账户信息输入的服务号码是我可以控制的,这个是发送的信息发送这个信息以后,服务端会处理我发送的服务号码,然后返回给我这个服务号码对应的账户信息,这个是处理在Reply CARRY buffer中的而且后面的程序会对这个账户号码进行缴费操作输入不同的服务号码,其返回的账号信息都不想同。

像这样的数据就需要用到关联了关联的做法是预预先定义一个个变量,当从从服务器截获获到Replly CARRRY buuffer时时,把其中相相关的值保存存在这个变量量中,当系统统中有用到这这个返回值的的时候就用这这个变量去替替换这样以以来,不管输输入什么样的的服务号码,那那个变量中保保存的值永远远是对应的账账号信息确定需要关联的的值怎样去确定要关关联的值?有有两种方式一一个很有经验验的操作员,根根据他对系统统业务的了解解,可以很清清楚的知道哪哪些请求操作作会让服务器器返回一些将将在后面操作作中用到的数数据以及这这些数据包括括哪些内容然然后就可以轻轻松的写脚本本关联这些返返回的数据;;另外一种方方式是用不同同的请求输入入录制两份相相同操作的脚脚本然后用用VUGenn自带的WDDIFF工具具比较两次脚脚本的不同之之处,以得到到需要关联的的地方比如如我分别录制制两次缴费业业务的脚本,两两次使用的服服务号码不同同,在返回的的buffeer里面就可可以看出这两两次脚本返回回的不相同的的地方,就可可以做这些数数据的关联了了但是并不不是所有的不不同之处都需需要关联比比如某些指明明执行时间的的Replyy CARRRY bufffer中的的数据就不必必关联。

第二二种方式比第第一种要麻烦烦,但是操作作条理比较清清楚,而且不不容易遗漏需需要关联的数数据,很适合合初学者我是按照第二种种方法来做的的首先我录制了两两个缴费的脚脚本(Feee1和Feee2)操作作步骤完全一一样,仅仅是是登录的用户户和输入的服服务号码不同同当Fee2录制制完成后,选选中左边导航航栏中的Reeplay..vdf,点击“工具”-“与Vuseer比较”,如图25:图表 Error! Bookmark not defined. 与Vuuser比较较在对话框中选择择刚才录制的的脚本Feee1,然后点点击确定打打开如图266:图表 Error! Bookmark not defined. 打开WWDIFF如图中所示,两两个Repllay.vddf脚本中的的差异用黄色高高亮显示(在在页面中双击击可以在查看看全文和查看看差异模式间间切换)然后关注其中一一个文件,统统计出除了执执行日期和116进制代码码段以外的所所有差异数据据比如我统统计的是Feee2的Reeplay..vdf中的的差异数据,包包括‘txjhss’,‘1358224856335’等等接着着回到Feee2的脚本,研研究Repllay.vddf。

在Reeplay..vdf文件件中查找刚才才统计出来的的差异数据其规则是看这些数据的第一次出现是否在Reply CARRY buffer区域内,并且该数据是否在后面的Request Request CARRY buffer中有用到如果两个条件都满足,则说明该数据需要关联± 注意:1、 差异分分两种,一种种是两个文件件的相同的行行中,有不一一样的数据;;另一种是在在相同的行中中,一个文件件有数据,另另一个文件没没有数据我我们的研究对对象不考虑后后者关联数据下面以accoountoiid的关联来来说明关联的的具体步骤在我的差异数据据统计中,我我找到的需要要关联的数据据其中一个是是‘318088002499409’,它第一次次出现在Reeply CCARRY buffeer 14中中(如图27),然后后在Requuest CCARRY buffeer15,119,23,224中都有用用到图表 Error! Bookmark not defined. Repply CAARRY bbufferr 14然后开始计算它它的offsset数值offfset数值值是指,从RReply CARRYY bufffer14开开始,到出现现‘318088002499409’总共有多少少个字节。

116进制按‘‘\’分段,算一一个字节,双双引号和段的的标题不算在在内,因此,这这个数据的ooffsett值应该是668,长度是是13接下下来在录制的的脚本中(vvuser__init,AActionn,vuseer_endd)找到Reeply CCARRY buffeer14的段段,插入关联联语句段如如图28:图表 Error! Bookmark not defined. 插入关关联语句图中所示lrtt_savee_parmm()函数就就是LR中ttuxedoo协议脚本专专用的关联函函数datta_1表示示Replyy CARRRY bufffer 114中的数据据是从datta_1中的的来的,688是offsset值,113是需关联联数据的长度度accoountoiid是定义的的变量名称这这个函数的意意思是,从ddata_11中68位以以后,取133位数据保存存在变量acccounttoid中关联定义完成以以后,再修改改Replaay.vdff把Reuest CARRYY bufffer 155,19,223,24中中的‘318088002499409’全部替换成成‘{accoountoiid}’。

如图299:(Repply CAARRY bbufferr中的不必替替换了)图表 Error! Bookmark not defined. 替换RRequesst CARRRY buuffer至此,该数据的的关联就已经经完成了其其他数据的替替换按照同样样的操作进行行动态数据据关联就可以以成功的完成成录制过程程中我对脚本本的修改也止止于此像加加入流程控制制语句之类的的其他修改方方式在我的测测试中并没有有用到请参参阅其他资料料± 注意: 按照文文中描述的方方法二去寻找找需要关联的的数据也不是是绝对的在在我录制脚本本的过程中就就遇到了一个个不能关联的的数据下面面以此为例,加加以说明 在录制的过过程中,依照照方法二,我我发现了一个个需要关联的的数据‘318088001588122’在数据库库中,查询到到这个号码其其实是用户的的oid它它在Replly CARRRY buuffer 14中第一一次出现(如如图30),并并在Requuest CCARRY buffeer15和119中使用按按照前面的描描述,这个数数据是应该被被关联的 但是我们再再注意看这个个buffeer段。

在‘‘318088001588122’出现以前,有有一段数据为为‘1358224856335孟德顺’’有姓名字字段的存在导导致这个数据据无法被关联联因为对于于不同的服务务号,会有不不同的客户名名称,有两个个字的,三个个字的,四个个字的,甚至至英文字串这这样以来通过过这个“孟德顺”计算出来的的offseet值就不一一定适用于其其他服务号码码的请求因因此这里不能能用关联的方方式我在这里的处理理方式是将这这个值参数化化,并且和另另一个参数化化的数据———服务号码绑绑定在一起当当选择服务号号码的时候,就就能够准确绑绑定对应的用用户ID详详细方法请参参看前面的参数化替换图表 Error! Bookmark not defined. oidd的第一次出出现4.3脚本的调调试——验证脚本本的正确性脚本完成后可以以在Geneeratorr中对脚本进进行调试选选中某行,点点击F9可以以设置断点点点击F10可可以在断点以以后进行单步步运行F55是运行操操作和微软系系的IDE工工具类似,这这里不再赘述述开始调试试前需要对RRun Tiime Seettingg进行一些简简单的设置,下下面简单介绍绍一下4.3.1 RRun Tiime Seettingg设置点击Generrator页页面中的“Runtiime Seettingg”(中文版为为“运行时设置置”)按钮,可可以打开运行行时设置页面面。

它包括了了步(Steep)的设置置,日志(LLog)的设设置,思考时时间(ThiinkinggTime)设置,以及其他(Etc)设置首先来看步的设置步的设置如图31中所示示即为运行时时设置——步的设置置界面它包包括“迭代计数”的设置和“开始新迭代代”的设置通通常我只设置置了“迭代计数”,没有修改改过“开始新迭代代”的默认设置迭代计数”的的设置其实就就是脚本Acction区区域循环次数数的设置需需要注意的是是当设置了“迭代计数”后,脚本运运行时只有AActionn区域的脚本本会参与循环环还记得在在参数化替换中设置参数数属性的“更新值的时时间”有一个“Each Iteraation”选项其中中的Iterrationn就是在这里里设置的通常对于调试脚脚本来说,这这里的迭代次次数不需要设设置得太大其实实在调试脚本本的时候设置置迭代次数的的目的是为了了检验迭代调调试运行时,脚脚本中的参数数以及关联函函数是否会随随着脚本的迭迭代而发生变变换,以证明明参数替换和和动态关联是是否成功所所以设置3到到5次迭代,以以保证能够看看出规律来就就可以了那么如何才能看看得出,每次次迭代的过程程中究竟参数数被替换成什什么值了呢??下面简单说说一说日志的的设置,就明明白了。

图表 Error! Bookmark not defined. 运行时时设置——步日志的设置图表 Error! Bookmark not defined. 运行时时设置——日志日志的设置包含含了一个日志志记录的开关关当开关打打开时,LRR会按日志选选项的设置记记录脚本运行行日志当日日志选项为“仅在出错时时发送消息”时,LR会会自动记录出出错日志但但是这种选项项对脚本的调调试来说不太太适合,因为为如果脚本中中的参数替换换或动态关联联不成功时很很有可能不会会发生错误也也就不会记录录日志操作作员也就无法法从日志得知知对脚本的修修改是否成功功我一般都都选择“始终发送消消息”,并且采用用“扩展日志”方式,打印印出参数替换换方便检查查但是很少少要求打印“服务器返回回数据”和“高级跟踪”,除非遇到到无法定位的的脚本错误因因为当要求打打印“服务器返回回数据”或“高级跟踪”时 ,由于于服务器返回回的数据非常常多,会导致致调试花费时时间过长思考时间的设置置图表 Error! Bookmark not defined. 运行时时设置——思考时间间在录制脚本的过过程中,测试试人员操作的的时候多少会会有一些停顿顿或者是延时时。

有些是无无意的,有些些可能是有目目的的这些些延时在脚本本中以lr__thinkk_timee()函数表表示括号中中输入正整数数,表示延时时时长,以秒秒为单位思思考时间设置置就是为了控控制这些延时时在思考时间的设设置中,可以以设置忽略这这些思考时间间,即不需延延时也可以以重播这些延延时并且提提供了四种重重播的方式::u “按录制时记录录的时间”是完全按照照录制时的延延时来重播u “将录制思考时时间乘以”方式提供了了一个让用户户定义的系数数,重播延时时时长由录制制的实际时间间乘以这个系系数来决定u “使用录制思考考时间的随机机百分比”提供了Miin和Maxx这两个下限限和上限百分分比设置,重重播时Genneratoor会从实际际录制时间乘乘以下限百分分比到实际录录制时间乘以以上限百分比比这个区间内内随机读取一一个值来作为为重播延时的的时长u “将思考时间限限制为”直接让用户户重新定义所所有的延时时时长,单位为为秒个人认为用得最最多的,可能能还是忽略思思考时间至至少在我遇到到的脚本中,大大多数的思考考时间都不具具备什么特别别意义的其他设置其他设置包括了了“错误处理”、“多线程”、“自动事务”。

错误处理是只当当有错误发生生时怎样处理理我通常会会要求出错后后跳过错误继继续往下执行行因为有些些错误是不会会影响事务成成功通过的所所以没有必要要遇到错误就就停止运行对Tuxedoo6协议来说说“多线程”只能选择“按进程运行行Vuserr”在4.1.5 插入事务点点里面,我解解释了事务这这个概念这这里的自动事事务是LR自自动对事务的的创建在默默认情况下“自动事务”中的“将每个Acction定定义为一个事事务”是被选中的的即是说LLR默认将整整个Actiion看作一一个事务,在在运行过程中中会自动记录录Actioon的响应时时间如果不不需要关注AActionn,可以将此此处的勾去掉掉图表 Error! Bookmark not defined. 运行时时设置——其他± 注意:对于不同协议的的脚本,其运运行时设置包包含的项或可可选的项都会会有所不同因因此本文中介介绍的这方面面的内容并不不一定适用于于其它协议的的运行时设置置4.3.2调试试脚本运行时设置完成成,就可以开开始从Genneratoor中调试脚脚本了点击击运行开始的的按钮或者FF5,脚本会会按照Runntime Settiing的设置置开始运行,并并在输出窗口口打印关键日日志。

当脚本本运行完成,没没有错误,并并且从关键日日志来看所有有参数替换和和动态关联都都成功的话,证证明脚本已经经完全通过调调试,可以使使用了至此对脚本的研研究已经告一一段落± 注意:在脚本调试的过过程中,所执执行的脚本都都是有效的比比如录制的是是一个增加用用户信息的脚脚本当调试脚本本的时候,如果调试成成功的话,新新增用户信息息的操作是会会真正加入到到数据库中的的,请注意5运行测试5.1添加虚拟拟场景——让测试脚脚本在此运行行脚本制作完成,数数据文件准备备妥当,需要要添加一个虚虚拟场景,在在场景中模拟拟负载,运行行脚本LRR的Cotrrollerr用来完成这这个功能5.1.1创建建场景在Generaator中,创创建好脚本后后,点击工具具——创建Coontrolller方案案,可以打开开一个新的CControoller从从开始菜单也也可以打开CControoller图表 Error! Bookmark not defined. 打开场场景创建系统会弹出一个个“新建方案”窗口,如图图36从从Generrator打打开和从开始始菜单打开有有些许不同,大大体一样这这里主要介绍绍从开始菜单单打开的可以选择两种创创建方案的类类型。

一种是是面向目标的的方案,一种种是手动方案案手动方案案又分为按数数量分配负载载和按比例分分配负载两种种如果选择择了“使用百分比比模式在脚本本间分配Vuuser”那么就会打打开按比例分分配的场景模模式其实各各种模式的选选择取决与测测试的目的手动方案,让测测试人员决定定需要加载的的负载量,用用于在标准负负载下测试系系统的性能目标方案,让测测试人员定义义一个目标,和添加负载的最小值和最大值运行时LR会按照用户给定的负载最小值开始添加,试探系统性能是否能够达到定义的目标如果不能达到,就继续添加,直到达到目标或者设置的最大值这种方案对于定位当前系统能够承受的最大负载量非常有用图表 Error! Bookmark not defined. 创建方方案窗口现在来分别介绍绍两种方案的的具体设置手动方案在“新建方案”窗口中选择择手动方案(按数量分配负载),从“可用脚本”中选中一个脚本添加到“方案中的脚本”或者通过“浏览”按钮选择可用的脚本然后点击确定打开手动方案(按数量分配负载)页面,如图37:图表 Error! Bookmark not defined. 手动方方案(按数量量分配负载)可以看见选择的的可用脚本已已经列在了方方案组中,默默认的“数量”是10个,默默认的负载生生成器是Loocalhoost。

数量是指负载数数量,即是虚虚拟用户数可可以根据测试试的设计而由由操作员更改改负载生成器是指指生成这些虚虚拟用户的机机器如果添添加了多个负负载生成器,。

下载提示
相关文档
正为您匹配相似的精品文档