《使用LoadRunner编写JAVA测试脚本》由会员分享,可在线阅读,更多相关《使用LoadRunner编写JAVA测试脚本(8页珍藏版)》请在金锄头文库上搜索。
1、使用使用 LoadRunner 编写编写 JAVA 测试脚本测试脚本 以前在使用 loadrunner 的过程中,基本很少关注过手动编写测试脚本,这也与手头工作有一定的关系,平时难以接触到这方面的测试类型。虽然这期间也看过,但是感觉当时的 Loadrunner 对 JAVA 语言脚本的支持较弱,JDK 还是 1.1、1.2 的版本,显然太不合时宜了,于是也就放弃了。昨晚,在网上看了看 Loadrunner8.1 版本,已经支持到了 JDK1.5 版本,结合目前手头测试工作,觉得有必要细看一下。要使得 Loadrunner8.1 版本能够支持 JAVA 语言脚本,以下几点需要注意:1.JDK 的
2、版本必须是 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
3、vuser 的编辑界面import lrapi.lr;public class Actionspublic int init() return 0;/end of initpublic int action() return 0;/end of actionpublic int end() return 0;/end of end可以看到标准的 java class 写法。Actions 类包含三个方法:init、action 和 end。init 登录到服务器 Vuser 已初始化(已加载)action 客户端活动 Vuser 处于“正在运行”状态end 注销过程 Vuser 完成或停止这时
4、候完全可以理解 loadrunner 如何执行 java 测试脚本代码了,在 Actions 类中调用测试 java 类,然后在脚本中需要的地方加上 loadrunner 自带的一些函数方法等(比如事务函数、命令行分析函数、信息性函数、运行时函数),当然还能进行一些参数化的设置,最后在 control 上增加 vuser 数量(也就是增加线程)。如果抛开 Loadrunner,使用一些开源的 unit 工具,完全也能够实现 loadrunner 这些功能,只不过可能在监控方面,没有 loadrunner 做的那么精致罢了。做个小例子。写个测试 java 类 public class testj
5、avapublic 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
6、 class Actionsstatic Logger logger = Logger.getLogger(Actions.class.getName();int i=10;public int init() /读取 log4j 属性文件PropertyConfigurator.configure(“D:MyEclipse Enterprise Workbench 5.1.0 GAeclipseworkspacetestjavabinlog4j.properties“);return 0;public int action() lr.start_transaction(“事务“);testja
7、va 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_i
8、d() +“ “+ t.getStr(“);/lr.get_vuser_id 返回当前 Vuser 的 ID logger.info(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(“Th
9、is 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
10、 “事务“ 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
11、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%nlo
12、g4j.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%n20 个 Vuser 运行一次,查
13、看一下 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
14、- 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:0
15、6: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 服务器的资源已