1.协议的选择 的协议选择众多,想正确的选择脚本协议,首先要从Loadrunner的原理上深入的理解协议的作用和意义, Loadrunner启动后,在任务栏上有一个loadrunner agent process 进程,这个进程的一项重要的工作就是监视各种协议的客户端和服务器端的通信.只要是能支持的协议, Loadrunner在录制的工程中就可以通过脚本语言将通信工程录制下来,所以要明确被测软件的通信过程和所使用的协议, Loadrunner才能正确的录制脚本。
a.选择单协议还是多协议的关键是你对应用的通信细节要清楚.可以多问问开发他们是怎么实现的.比如有个系统需要,看上去选择单协议 就可以了,但是在和服务器交互的过程中,浏览器下载页面里的APPLET并且用APPLET和服务器建立了SOCKET传输一些数据.这种情况下就该选择 多协议了.还有一些邮件方面的应用一般都要选择多协议,邮件系统都会使用到发送和接受两种协议.有些时候不选择多协议,脚本也能运行.但你的脚本没有完全 反映出客户端和服务器端的交互过程.选择录制脚本的协议前,还是要多分析一下应用系统
b.一般将应用软件分为B/S和C/S结构来选择协议, 对于B/S结构,可以选择WEB(HTTP/HTTML)协议;对于C/S结构,可以根据后端的类型来选择,如SYBASECTLIB协议用于测试 后台数据库为SYBASE的应用,MSSERVER协议用于测试后台数据库为SQL SERVER的应用;对于没有数据库的WINDOWS应用,可以选择WINDOWS SOCKETS这个底层的协议;这里需要说明的是,无论使用哪种协议,LOADRUNNER的测试流程都基本是一样的,只有在设定细节上有所不同,测试人 员只要对被测应用的技术架构熟悉了,就能够成功完成脚本的录制。
2.脚本的录制
当选择好脚本协议后,就可以对开始录制了,如果是B/S架构的测试对象,当然选择了web(http/html),接着输入要测试的URL地址,确定 就OK了。
a.明确脚本的三个部分
LOADRUNNER 将测试脚本分为3个部分,VUSER_INIT,VUSER_END和ACTION,其中VUSER_INIT和VUSER_END一般用于存放应用程序 初始化的脚本和注销关闭的脚本,在重复执行的时候,这两部分的内容只执行一次.而ACTION部分用于存放实际的操作脚本,这部分脚本可以多次执行,测试 人员还可以根据需要创建多个ACTION 脚本,但不能创建VUSER_INIT和VUSER_END.所以在录制的时候一定要明确:录制的流程是否要迭代,如果要一定要放入ACTION部分。
b.录制时的脚本开发
在录制的时候在屏幕上会有一个悬浮的控制脚本录制的工具栏,是脚本录制过程中测试人员和VUGEN交互的主要平台,每个可用的按钮都可以执行相应的操 作,如上图,测试人员可以新建Action,插入文本检查点,制定开始结束事务,也可以在需要测试的功能点插入集合点,或作一些必要的注释等等…..
3.脚本的开发与加强
该阶段也是脚本录制阶段最重要的部分,为了实现理想中的需求,你可以添加事务,插入集合点,调整运行时的设置,参数化数据,插入文本图片检查点,但是 在这之前必须要确保录制的脚本能够跑通,即回放没有问题,有如下提示图。
a.添加事务
除了从总体把握系统的性能问题外,测试工程师可能还要对业务中的某一个具体部分的数据进行分析,来检测该功能点的性能问题,为了达到这个目的,就要为 该功能点添加事务,将该功能点用开始与结束事务包起来,分析该事务来了解和把握该功能的性能。
所谓事务(TRANSACTION),就是在脚本定义中定义的某段操作(ACTION),更确切的说,就是一段脚本语句.定义事务时,首先在脚 本中找到事务的开始和结束位置,然后分别插入一个事务起始标记,这样,当脚本运行的时候,LOADRUNER会自动在事务的起始点计时,脚本在运行到事务 结束点时计时结束,系统会自动记录这段操作的运行时间等性能数据;在脚本运行完毕后,系统会在结果信息中单独反映每个事务运行结果。
事务的插入操作可以在脚本运行过程中进行,也可以在脚本录制完毕后进行,建议在脚本录制完毕后进行.如下图添加。
也可以在脚本中插入事务,在树图列表下右键,选择在该项之前或之后添加事务,开始和结束的事务是成对出现,不然脚本会报错,如下图:
b.插入集合点
在控制台执行负载测试,设置多用户同时加载并发,并发过程仅仅体现在开始执行的那一刹那,随着服务器对请求的响应时间的不一致或系统环境条件的限制,在运行过程中能集合到一点的可能性微乎其微,所以将一定数量的用户同时加载并不是真正意义上的并发。
系统压力最大的情况是:所有用户都集中到系统瓶颈的某个点上进行操作,从脚本的角度来讲,这个点就是执行脚本的某一条或一段语句,为了真实模拟 这个最坏的情况,查看系统在最坏情况下的反映。
为了实现测试一个业务中途的并发,LR中的集合点就孕育而生了,使跑在前面的用户在该点上等待,让后面的追赶上来, 将众多的Vuser集合到一起,来达到并发的效果.来帮助测试人员实现真正意义上的并发。
插入集合点的方法:可以在录制的时候添加,也可以象添加事务一样,在树图列表下添加.当然如果熟悉集合点的语言的话在脚本中直接插入语言也可 以。
c.运行时设置
点击右上角图标,弹出运行时设置对话框,就可以对迭代次数和迭代逻辑进行设置,迭代之间的时间的设置,还可以对网络的速度,浏览 器,Internet协议的模拟。
每个 Vuser 脚本都包括三部分:vuser_init、Run (Actions) 和 vuser_end。可以指示 Vuser 在运行脚本时重复执行 Run 部分。每次重复称为一次迭代。 运行多次迭代时,将不会重复执行 Vuser 脚本的 vuser_init 和 vuser_end 部分。
迭代次数:迭代的次数。Vuser 将按指定的次数重复执行所有 Actions。注意:对于 LoadRunner Controller 和优化模块:如果在计划设置中指定了场景或会话步骤持续时间,则持续时间设置将覆盖 Vuser 迭代设置。这意味着,如果持续时间被设置为 5 分钟(默认设置),Vuser 将在 5 分钟内根据需要连续运行任意多次迭代,即使运行时设置仅指定一次迭代。
运行多操作脚本时,可以指明执行操作的方法以及 Vuser 执行这些操作的方法:操作块:操作块是脚本内的操作组。您可以单独设置每个块的属性 - 其顺序、迭代和权重。顺序:您可以设置脚本内的操作顺序。还可以指明是按顺序还是随机执行操作。迭代:除了设置整个 Run 部分的迭代次数以外,还可以设置单个操作或操作块的迭代。该设置非常有用,例如,可以用来模拟一个商业站点,您在该站点执行了多次查询查找某个产品,但只 进行了一次购买。权重:对于随机运行其操作的操作块,您可以设置块内每个操作的权重或百分比。
d.参数化脚本
众多用户都使用相同帐户登陆或相同的数据来测试脚本,对系统造成的压力与实际情况会有所不同.而对于那些禁止一个用户多次登陆的系统,也就严重到无法 测试的地步了.为了解决这个问题,让系统更加真实的模拟多用户使用的实际环境,LOADRUNNER提供了对脚本进行参数化输入的功能;让每个虚拟用户都 拥有自己的帐户进行登录和运行。
所谓的脚本参数化,就是针对脚本中的某些常量,定义一个或多个包含数据源的参数来取代,让场景中不同的虚拟用户在执行相同的脚本时,分别使用参 数数据源中的不同数据代替这些常量,从而达到模拟多用户真实使用系统的目的。
明确需参数的数据,选中该数据,右键替换为新参数,打开属性—>用记事本编辑—>运行脚本,it is over。
需要注意的是在参数化属性页面的设置比较复杂,下面就讲解下设置的细节:
Select next row :多个VU如何取值
Sequential:按照顺序一行行的读取。每一个虚拟用户都会按照相同的顺序读取
Random:在每次循环里随机的读取一个,但是在循环中一直保持不变
Unique :每个VU取唯一的值。注意:使用该类型必须注意数据表有足够多的数。
Same Line As 某个参数(比如Name):和前面定义的参数Name 取同行的记录。通常用在有关联性的数据上面。
Update value on:多次迭代如何取值
once在所有的反复中都使用同一个值
each iteration则每次反复都要取新值,
each occurrence则只要发现该参数就要重新取值,也就是如果一个action中有多个该参数,每遇到一个就要重新取一个值
一个参数在一个Action中出现多次时
Random+each iteration 该次迭代中某参数的取值方法为:本次迭代中参数第一次取的值,多次取值不变化
Random+each occurrence 该次迭代中某参数的取值方法为:在本次迭代中参数每次取值都通过Random来变化
Random+once 在所有迭代中某参数的取值受第一次取值的影响。第一次取值通过Random来变化,之后不再改变
参数化数据的准备:可以通过一些工具来生成需要的数据,如果在数据库中有现成的数据也可以通过数据库导出来达到目的,只要选择数据向导,连接到数据库服 务器,输入SQL语句即可,如下图