四、增加必要的内容
框架生成后,我们就需要根据测试的内容增加相关的代码了,下面介绍的函数都是以c#为例进行介绍的,其他的语言与此差不太多。
我们假设一个场景:要测试100个用户同时登录系统的情况。后面都将围绕着这个主题进行。
首先,无论使用什么内容都要先进行对象的创建:
LoadRunner.LrApi lr; lr = new LoadRunner.LrApi(); |
1、事务
事务是测试最核心的单元,所以事务的创建非常重要,下面是一个事务的定义过程。
LoadRunner.LrApi lr; lr = new LoadRunner.LrApi(); lr.start_transaction("syslogin"); //事务开始,事务名称为syslogin //×××××此处添加事务syslogin的程序,例如:×× Client_syslogin(“servername”,”Username”,”userpassword”,”2005-1-12”); lr.end_transaction("syslogin", lr.PASS);// 事务结束 |
事务的开始和结束与VU Generator工具的脚本基本上是一样的,需要注意的是,中间所调用的内容应该是所测试应用程序调用的组件,这样才能说明所编写的脚本是在测试应用程序,否则不能说明任何问题。例如:上面的Client_syslogin函数就是应用程序所使用的函数。
这样对被测试的应用程序要求就比较高,应用程序分的层次比较清晰。让我们来看看应用程序是如何实现的:
private void buttonlogin_Click(object sender, System.EventArgs e) private void Client_syslogin(srvname, username, userpws, logindate) |
很明显,应用程序将业务逻辑判断和UI层进行了分离,所以我们对Clent_syslogin函数的测试就是我们最终的目的。
2、参数
上面讲到了事务是如何定义和实现的,接下来我们讲讲如何在代码中进行参数化,此过程与定义一般变量很相似,仅仅在于此变量的值是来源于参数表中的数据。我们继续上面的例子:
LoadRunner.LrApi lr; lr = new LoadRunner.LrApi(); lr.start_transaction("syslogin"); //事务开始,事务名称为syslogin /* 从参数列表中取出相关的值,我们假设在参数列表中已经存在了 srvname_parm,username_parm,userpws_parm,logindate_parm这样几个变量,每个变量分别有100个值 */ string srvname,username,userpws,logindate //定义变量 srvname=lr.eval_string("<srvname_parm >"); username=lr.eval_string("<username_parm >"); userpws=lr.eval_string("<userpws_parm >"); logindate=lr.eval_string("<logindate_parm >");//从参数列表中取出正确的数据传递给变量 Client_syslogin(srvname, username, userpws, logindate);//传递参数 lr.end_transaction("syslogin", lr.PASS);// 事务结束 |
这样脚本在并发运行的时候就能够按照参数取值的要求进行不同数据的测试了。
3、同步点、延时
同步点和延时相对比较简单,
lr.rendezvous("abc");//增加名称为abc的同步点 lr.think_time(1000);//增加延时 |
我们把脚本中主要的内容给大家介绍完了,其余的部分,例如参数如何定义,参数取值属性如何进行等等内容,与VU Generator工具的使用方法是一样的。
在.net继承开发环境中,我们不但可以生成脚本,而且还能够利用向导来创建一个简单的场景,来测试你所编写好的一个脚本,很方便。
以上只是简单的介绍了一下如何使用这些函数,在loadrunner提供的对象库中还有很多很多函数,例如编写web产品时,代理的设置,端口设置,请求,响应以及cookie相关的内容,等等都可以充分利用这些组件提供的方法来实现。我们在这里就不一一描述了。
五、环境部署
当我们有了这些脚本,接下来就是如何来运行这些脚本。
1、Visual Basic开发的脚本
对于利用vb开发的脚本,部署的工作是很繁琐的,除了要按照一般的方式要在各个负载端安装上Load Generator工具外,还要拷贝相关的dll到负载端机器上,同时要进行注册。然后我们就可以在Controller工具中选择.usr文件,之后所有的工作就是使用Controller了
在此处需要注意地点,我们采用这种方式,经常会产生一个问题:我们一起就绪后,发现只有生成脚本的机器能够正常运行,而其他的负载端仍然无法正常运行,总是提示×××.dll文件找不到,这是为什么呢?让我们回到第三章,仔细看看.usr文件记录了什么?
大家一定会发现,此时的usr文件记录的是dll的绝对路径,所以当我们的dll拷贝到另外一台机器上,就会出现路径不同的情况,导致了Controller在运行的时候不能找到说要的.dll文件。知道原因的说在,就知道如何进行修改了,让.user中的路径和文件实际存在的路径保持一直就ok了。