思步网

标题: 使用LoadRunner 编写JAVA 测试脚本 [打印本页]

作者: chenxin9821    时间: 2008-11-14 10:39
标题: 使用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 类包含三个方法:initactionend。 init       登录到服务器    Vuser 已初始化(已加载) action  客户端活动        Vuser 处于“正在运行”状态 end       注销过程          Vuser 完成或停止        这时候完全可以理解loadrunner如何执行java 测试脚本代码了,在Actions 类中调用测试java类,然后在脚本中需要的地方加上loadrunner自带的一些函数方法等(比如事务函数、命令行分析函数、信息性函数、运行时函数),当然还能进行一些参数化的设置,最后在control上增加vuser数量(也就是增加线程)。        如果抛开Loadrunner,使用一些开源的unit工具,完全也能够实现loadrunner这些功能,只不过可能在监控方面,没有loadrunner做的那么精致罢了。 做个小例子。
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;
    }
}
/*
* 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 GA\\eclipse\\workspace\\testjava\\bin\\log4j.properties");
        return 0;
    }     public int action() {        lr.start_transaction("事务");
       testjava t=new testjava();//调用测试类
       lr.message( "获取返回值:"+   t.getStr("<NewParam>")); //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("<NewParam>"));        //lr.get_vuser_id  返回当前 Vuser 的 ID
       logger.info(lr.get_vuser_id() +" "+ t.getStr("<NewParam>"));
           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;
    }
}
Virtual User Script started
Starting action vuser_init.
Ending action vuser_init.
Running Vuser...
Starting iteration 1.
Starting action Actions.
Notify: Transaction "事务" started.
获取返回值:1
Rendezvous 集合点
Notify: Transaction "事务" ended with "Pass" status (Duration: 0.0175).
计算机的名:ms-599008241fcd  10
-1 1
System.out:  INFO (Actions.java:37) - -1 1
Notify:
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.
看到定义的“事务”。
log4j.rootCategory=DEBUG, stdout,R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p (%F:%L) - %m%n
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=c:/log.txt
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n
2008 三月 02 18:06:43 INFO  Actions - 7 91
2008 三月 02 18:06:43 INFO  Actions - 16 101
2008 三月 02 18:06:43 INFO  Actions - 17 121
2008 三月 02 18:06:43 INFO  Actions - 13 41
2008 三月 02 18:06:43 INFO  Actions - 10 181
2008 三月 02 18:06:43 INFO  Actions - 18 141
2008 三月 02 18:06:43 INFO  Actions - 19 151
2008 三月 02 18:06:43 INFO  Actions - 6 71
2008 三月 02 18:06:43 INFO  Actions - 11 1
2008 三月 02 18:06:43 INFO  Actions - 9 131
2008 三月 02 18:06:43 INFO  Actions - 2 191
2008 三月 02 18:06:43 INFO  Actions - 12 21
2008 三月 02 18:06:43 INFO  Actions - 5 51
2008 三月 02 18:06:43 INFO  Actions - 15 81
2008 三月 02 18:06:43 INFO  Actions - 20 161
2008 三月 02 18:06:43 INFO  Actions - 3 11
2008 三月 02 18:06:43 INFO  Actions - 1 171
2008 三月 02 18:06:43 INFO  Actions - 8 111
2008 三月 02 18:06:43 INFO  Actions - 14 61
2008 三月 02 18:06:43 INFO  Actions - 4 31
loadrunner 提供的.NET JAVA等语言脚本支持,为测试的灵活性、多样性提供了极大的方便。

转自:学而不思则罔 思而不学则殆的blog
http://vinsonlou.spaces.live.com/Blog/cns!7F506A16C428EC18!221.entry?action=post&wa=wsignin1.0
作者: 思步    时间: 2008-11-14 11:06
很久都不写代码了。:$
作者: chenxin9821    时间: 2008-11-14 11:15
酱紫啊  

_    _ <  可以理解,毕竟你是上了年纪的人!  :81)
作者: 思步    时间: 2008-11-15 20:50
楼上。(mengda:


我还年轻,明白?
作者: chenxin9821    时间: 2008-11-17 20:57
:56)   

漂,虽然你年轻,但做事还是要低调的~
作者: 晓仔    时间: 2008-11-27 16:01
原帖由 steplv 于 2008-11-15 20:50 发表
楼上。(mengda:


我还年轻,明白?


多年轻啊?

)(:cwz06:()
作者: jiayan2000cn    时间: 2009-1-3 10:08
好文章!谢谢!
作者: jiayan2000cn    时间: 2009-1-3 10:13
谢谢楼主分享!
作者: libaiyu    时间: 2009-1-6 18:14
第一次接触loadrunner,在建java Vuer脚本文件时什么都没做保存并编译都没问题,但是一运行就报错:
通知: Found jdk version: 1.5.0.
通知: classpath=D:\Program Files\Mercury\LoadRunner\scripts\test2\;d:\program files\mercury\loadrunner\classes\srv;d:\program files\mercury\loadrunner\classes;C:\Program Files\Java\jdk1.5.0\lib\dt.jar;C:\Program Files\Java\jdk1.5.0\lib\tools.jar;E:\software\3.2.1\eclipse\eclipse\plugins\org.apache.ant_1.6.5\lib;;;
通知: Path=D:\PROGRA~1\Mercury\LOADRU~1\bin;D:\PROGRA~1\Mercury\LOADRU~1\bin\tulip\bin;D:\PROGRA~1\Mercury\LOADRU~1\bin;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\Java\jdk1.5.0\bin;D:\Program Files\Rational\common;C:\Program Files\MySQL\MySQL Server 5.0\bin;E:\software\3.2.1\eclipse\eclipse\plugins\org.apache.ant_1.6.5\bin;D:\Python26;D:\Python26\Lib\site-packages\django\bin;;D:\Program Files\jre\bin\client
通知: VM Params: .
错误: 找不到 Actions 类。
错误: 在扩展 java_int.dll 中调用 abort-cleanup 函数时出现异常: System Exceptions: EXCEPTION_ACCESS_VIOLATION
警告: 扩展 trans.dll 报告在调用函数 ExtAbortCleanup 时出现错误 -1
我的邮箱是:baiyuxinqing@yahoo.com.cn
作者: libaiyu    时间: 2009-1-6 19:01
还有就是 java_protocol_fixes_Feb_05 补丁如何使用?
我的邮箱是:baiyuxinqing@yahoo.com.cn
作者: 一年1轮回。    时间: 2014-11-2 09:44
顶不错 支持下
作者: 复古    时间: 2015-3-5 11:20
路过的帮顶
作者: 因为我要努力了i    时间: 2015-4-18 08:37
众里寻他千百度,蓦然回首在这里!
作者: 狐狸精    时间: 2016-2-27 16:20
不错 支持一个了
作者: ︶ ̄兮忆    时间: 2018-3-23 19:32
很有见地的探讨,先收藏着~
作者: 蔡慧玉滋    时间: 2018-9-13 14:46
学习下我只是路过,不发表意见……
作者: 茆缇°    时间: 2018-10-30 17:36
众里寻他千百度,蓦然回首在这里!




欢迎光临 思步网 (http://www.step365.com/) Powered by Discuz! X3.2