使用LoadRunner编写JAVA测试脚本.docx_第1页
使用LoadRunner编写JAVA测试脚本.docx_第2页
使用LoadRunner编写JAVA测试脚本.docx_第3页
使用LoadRunner编写JAVA测试脚本.docx_第4页
使用LoadRunner编写JAVA测试脚本.docx_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

使用LoadRunner 编写JAVA 测试脚本 以前在使用loadrunner 的过程中,基本很少关注过手动编写测试脚本,这也与手头工作有一定的关系,平时难以接触到这方面的测试类型。虽然这期间也看过,但是感觉当时的Loadrunner对JAVA语言脚本的支持较弱,JDK还是1.1、1.2的版本,显然太不合时宜了,于是也就放弃了。 昨晚,在网上看了看Loadrunner8.1版本,已经支持到了JDK1.5版本,结合目前手头测试工作,觉得有必要细看一下。要使得Loadrunner8.1版本能够支持JAVA语言脚本,以下几点需要注意:1.JDK的版本必须是5.0(我机器上原先装的是JDK6.0,折腾了好长一段时间,总是报 ERROR loading javai.dll的错,最后没办法只能装5.0 ,Loadrunner对jdk的支持有点弱智)。设置好java 环境。2.Loadrunner 要支持JAVA语言必须,安装一个补丁。( java_protocol_fixes_Feb_05 可以网上找一下,这儿没法上传)打开virtual user generator ,新建java vuser,看一下run-time settings,java environment setting 设置 如下图打开 java vuser的编辑界面import lrapi.lr;public class Actions public int init() return 0; /end of init public int action() return 0; /end of action public int end() return 0; /end of end可以看到标准的java class 写法。Actions 类包含三个方法:init、action 和 end。init 登录到服务器 Vuser 已初始化(已加载)action 客户端活动 Vuser 处于“正在运行”状态end 注销过程 Vuser 完成或停止 这时候完全可以理解loadrunner如何执行java 测试脚本代码了,在Actions 类中调用测试java类,然后在脚本中需要的地方加上loadrunner自带的一些函数方法等(比如事务函数、命令行分析函数、信息性函数、运行时函数),当然还能进行一些参数化的设置,最后在control上增加vuser数量(也就是增加线程)。 如果抛开Loadrunner,使用一些开源的unit工具,完全也能够实现loadrunner这些功能,只不过可能在监控方面,没有loadrunner做的那么精致罢了。做个小例子。 写个测试java类 public class testjava public static void main(String args) System.out.println(hello world); public String getStr() return hello world; public String getStr(String str) return str; 通过java Vuser调用测试java类 /* LoadRunner Java script. (Build: 754)* * Script Description: * */import lrapi.lr;import org.apache.log4j.*;public class Actions static Logger logger = Logger.getLogger(Actions.class.getName(); int i=10; public int init() /读取log4j属性文件 PropertyConfigurator.configure(D:MyEclipse Enterprise Workbench 5.1.0 GAperties); return 0; public int action() lr.start_transaction(事务); testjava t=new testjava();/调用测试类 lr.message( 获取返回值:+ t.getStr(); /NewParam是loadrunner参数化设置的参数 /设置集合点 lr.rendezvous(集合点); /设置等待时间 lr.think_time(2); lr.end_transaction(事务,lr.PASS); /检索运行 Vuser 的计算机的名称 String my_host = lr.get_host_name( ); lr.message( 计算机的名:+ my_host+ +i); lr.log_message (lr.get_vuser_id() + + t.getStr(); /lr.get_vuser_id 返回当前 Vuser 的 ID (lr.get_vuser_id() + + t.getStr(); lr.enable_redirection(true); System.out.println(This is an informatory message); / 已重定向 / System.err.println(This is an error message); / 已重定向 lr.enable_redirection(false); System.out.println(This is an informatory message); / 未重定向 / System.err.println(This is an error message); / 未重定向 return 0; public int end() return 0; Vuser运行 log Virtual User Script startedStarting action vuser_init.Ending action vuser_init.Running Vuser.Starting iteration 1.Starting action Actions.Notify: Transaction 事务 started.获取返回值:1Rendezvous 集合点Notify: Transaction 事务 ended with Pass status (Duration: 0.0175).计算机的名:ms-599008241fcd 10-1 1System.out: INFO (Actions.java:37) - -1 1Notify:System.out: This is an informatory message Notify:Ending action Actions.Ending iteration 1.Ending Vuser.Starting action vuser_end.Ending action vuser_end.Vuser Terminated. Control 运行 截图 看到定义的“事务”。 log4j属性文件 log4j.rootCategory=DEBUG, stdout,Rlog4j.appender.stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%nlog4j.appender.R=org.apache.log4j.RollingFileAppenderlog4j.appender.R.File=c:/log.txtlog4j.appender.R.MaxFileSize=100KBlog4j.appender.R.MaxBackupIndex=1log4j.appender.R.layout=org.apache.log4j.PatternLayoutlog4j.appender.R.layout.ConversionPattern=%dyyyy MMM dd HH:mm:ss %-5p %c - %m%n 20个Vuser运行一次,查看一下log文件,可以看一下参数设置的效果 2008 三月 02 18:06:43 INFO Actions - 7 912008 三月 02 18:06:43 INFO Actions - 16 1012008 三月 02 18:06:43 INFO Actions - 17 1212008 三月 02 18:06:43 INFO Actions - 13 412008 三月 02 18:06:43 INFO Actions - 10 1812008 三月 02 18:06:43 INFO Actions - 18 1412008 三月 02 18:06:43 INFO Actions - 19 1512008 三月 02 18:06:43 INFO Actions - 6 712008 三月 02 18:06:43 INFO Actions - 11 12008 三月 02 18:06:43 INFO Actions - 9 1312008 三月 02 18:06:43 INFO Actions - 2 1912008 三月 02 18:06:43 INFO Actions - 12 212008 三月 02 18:06:43 INFO Actions - 5 512008 三月 02 18:06:43 INFO Actions - 15 812008 三月 02 18:06:43 INFO Actions - 20 1612008 三月 02 18:06:43 INFO Actions - 3 112008 三月 02 18:06:43 INFO Actions - 1 1712008 三月 02 18:06:43 INFO Actions - 8 1112008 三月 02 18:06:43 INFO Actions - 14 612008 三月 02 18:06:43 INFO Actions - 4 31使用LoadRunner8.1的java Vuser协议调用jar文件2008-07-03 来源:网络很多时候,我们需要直接对Jboss下的java应用服务系统进行性能测试。这种服务有些是基于Jboss Remoting实现,以socket的方式提供接口函数,并没有一个可以看的见的界面可供测试。在这种情况下,有的测试组会选择,开发一个简单的web页面,调用这个服务,然后用loadRunner制作web脚本进行测试。这种设计方案的缺陷在于,性能测试的压力会被堵在web层这里,无法测出服务端的准确性能,甚至可能web服务器的资源已经耗尽,服务端还完全没达到最大吞吐量。要解决这个问题,只有使用LoadRunner直接调用服务端的接口,减少中间环节的干扰。首先,请大家安装LoadRunner8.1以上版本,因为8.1支持jdk1.5版本,现在很多应用都是在jdk1.5的框架下开发的。注意,8.1并不支持jdk1.6,所以请安装1.5版本。打开Vuser Generator,新建一个java Vuser协议的脚本。新脚本会自动创建一个class和3个函数:init、action、end。这时,大家先Compile一下,如果没有错误,再继续。如果报错,看看你的jdk版本。先把脚本保存在本地的文件夹中。然后,把调用服务所需要的一些jar文件,也拷贝到脚本目录里面。注意,一般调用远程Jboss服务时,都是需要一些描述接口函数类型的jar文件。另外,建议先使用eclipse,开发一个测试的框架类,通过这个框架,可以轻松的调用指定服务器的指定接口服务的指定方法,从而降低LoadRunner脚本编写的难度。jar文件准备好以后,点击toolbar上的“java function”按钮,然后点击“location”,把你需要的jar文件添加进来。这时,就能看到jar文件中的所有对象列表,以及对象的属性和方法。回到脚本编辑窗口,我们可以直接遵照C+的语法,编写脚本代码,在代码中,可以对刚才引入的java对象进行面向对象的编程,比如下面的代码:com.Testing.ServiceCaller caller;caller = new com.Testing.ServiceCaller ();caller.init(:4446, ServiceName);caller.call(methodName , paras);在这里写脚本,几乎和写java代码一模一样。我们可以完全引用jar文件的各种对象,同样,也可以使用java ee框架中的各种对象,LoadRunner对java的支持真是非常的好。同时,LoadRunner也提供了一些好用的函数,方便大家准备测试参数、输出测试结果,比如:int orgId = lr.eval_int(2);lr.error_message (出错喽);这些以lr开头的方法,参考文档在帮助中写的很清楚。比如lr.eval_int就是把字符型变量转换成int型,lr.error_message 是输出错误的提示,我们可以在代码中加入数据正确性的检查逻辑,这样在执行性能测试的时候,如果出错,就能很清楚的看到。在以上文章里,我们讲了如何在java Vuser协议中,引用jar文件中的类。Loadrunner对java支持非常好,但是,在实际操作中,出现了一个新问题:如果要引用jar文件,需要把jar文件拷贝到当前脚本的目录下。如果我们为性能测试开发了一个测试框架,就需要把框架类的jar文件拷贝到每个脚本的目录下,这样做显然不合理,因为同一文件保存多份拷

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论