思步网

楼主: chenxin9821
打印 上一主题 下一主题

使用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做的那么精致罢了。 做个小例子。
  • 写个测试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 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;
    }
}
  • Vuser运行 log
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.
  • Control 运行 截图
看到定义的“事务”。
  • log4j属性文件
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
  • 20个Vuser运行一次,查看一下log文件,可以看一下参数设置的效果
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


上一篇:软件测试中不要被覆盖报告所迷惑
下一篇:使用Jmeter java 协议模拟多线程性能测试
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 转播转播 分享分享 分享淘帖 支持支持 反对反对
回复 论坛版权

使用道具 举报

很久都不写代码了。:$
酱紫啊  

_    _ <  可以理解,毕竟你是上了年纪的人!  :81)
楼上。(mengda:


我还年轻,明白?
:56)   

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


我还年轻,明白?


多年轻啊?

)(:cwz06:()
好文章!谢谢!
谢谢楼主分享!
第一次接触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
还有就是 java_protocol_fixes_Feb_05 补丁如何使用?
我的邮箱是:baiyuxinqing@yahoo.com.cn
顶不错 支持下
路过的帮顶
众里寻他千百度,蓦然回首在这里!
不错 支持一个了
很有见地的探讨,先收藏着~
您需要登录后才可以回帖 登录 | 注册

本版积分规则



思步组织思步科技|思步网|火花学堂|思步文库|思步问答|思步英才|天下心
© 2007 思步网 浙ICP备10212573号-4(首次备案号:浙ICP备07035264号)|邮箱:service#step365.com(将#换成@)|服务热线:0571-28827450
在线培训课程|求职招聘|思步文库|官方微信|手机APP|思步问答|微博平台|官方QQ群|交流论坛|软件工程透析|关于我们|申请友链|
点击这里给我发消息     点击这里给我发消息
思步 step365 过程改进 CMMI中文 质量保证 质量管理 流程体系 需求跟踪矩阵 敏捷开发 Scrum 软件度量 项目评审 全员改进 流程管理 人力资源 6sigma 信息安全 ISO27001认证 IT服务管理 ISO20000认证 ISO9000认证 软件测试 SQA 配置管理 IPD 软件工程 PMP认证 PMP试题 PMBOK中文 精益研发 agile 顾问式管理培训
返回顶部