loadrunner安装教程新建java Vuser后,replay失败

loadrunner调用java的类&(转)
第一步,总的思路。
  以前我都是用loadrunner直接进行录制,但是有些的确不好弄不知道怎样进行录制,像vb,c++,java语言做的东西我觉最简单的方式就是直接调用相关的类文件,动态链接库,直接用代码的方式进行调用。在这种思想下,于是试着在loadrunner中写程序调用java类。
  第二步,做符合要求的实验用的java类。
  说实话难度太大了对我来说,我一点不懂java,好在我知道,但是java的代码编写方式和编译环境,都是我从来没有见过的。慢慢学,多多问,好不容易最初级别的搞定了这些,首先要装j2sdk在系统盘下。,然后再系统环境变量中添加上%java_home%\bin;就可以用cmd命令进行java的编译和运行的操作了。编译和运行的命令分别是你所写java类目录下的运行javac
test.java和java test
参数,例如,如果你的类在c:\test目录下,你就应该在cmd中使用cd \test,转到这个目录下,再用javac
test.java和java test 参数进行操作。
  我从网上找到了一个现成的简单的java类,现将源代码放在下面。
&&&package MAIN;
& import java.io.PrintS
& public class Birthday
&& && && &public String
&& && && &public String
&& && && &public String
&& && && &public
Birthday()
&& && && && &
year="1900";
&& && && && &
month="01";
&& && && && &
&& && && &public Birthday(String
y,String m,String d)
&& && && && &
&& && && && &
&& && && && &
&& && && && &
System.out.println("OK");
&& && && &public String
getBirthday()
&& && && && & String
fullbirthday=month+'/'+'/'+day+'/'+
&& && && && & return
类很简单,用上述方法编译也是很容易就通过了。
  第三步,如何在Loadrunner中将这个类调用起来。
  想了很久,决定用java
vuser这种脚本的方式进行写java代码,这点代码是一定要写的。熟悉一阵子java语言之后,决定用import将类引入,于是问题又来了,*.class文件该放在什么地方呢,中间试验的过程暂且不表,将最后结果写在这里就好。目前我得到的结果是将*.class文件放在,你loadrunner安装的路径下classes\main这个目录下。懂java的很容易就搞定了这一步,包括路径和import的语句。
  于是Loadruner中的java代码如下:
&&&import lrapi.
& import MAIN.B
& public class Actions
&& &&&public int init()
&& && && &return 0;
&& &&&}//end of
&& &&&public int action()
Birthday bir=new
Birthday("1981","6","1");
&//bir.getBirthday
&System.out.println(bir.getBirthday());
&& && && & return
&& &&&}//end of
&& &&&public int end()
&& && && &return 0;
&& &&&}//end of
  注意红色的字体,这里完成了对类的调用和初始化,并且传递了参数进去,最后调用类的方法,把一个值返回,并打印出这个值,至于怎样检查这个值是否正确就很简单了,这里就不累赘了。
********************************************************************************
&打开virtual user generator ,新建java vuser,看一下run-time
settings,java environment setting 设置 如下图 &&打开 java
vuser的编辑界面 import lrapi. 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
& & }
& & public String getStr()
& & {
& && &&&return "hello world";
& & }
& & public String getStr(String str)
& & {
& & }
通过java Vuser调用测试java类
import lrapi.
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
& && & (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-fcd&&10
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 运行 截图
看到定义的“事务”。
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。更多内容如下:
Powered by
& 2013 &&&LR11下开发Java Vuser脚本 运行报错问题 - 梦想探路者的个人空间 - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园 - Powered by X-Space
性能测试交流群: ,欢迎加入!
LR11下开发Java Vuser脚本 运行报错问题
& 13:57:49
/ 个人分类:
&&& 之前做过的大部分项目主要为B/S结构,基本上都是采用先录制脚本,然后修改脚本再进行测试。现在要利用LR测试单个功能下某一个或几个类的性能。例如,待测试JAVA类如下:class Test04 {& //编号S& //姓名&& //年龄public Test04(int id, String name, int age){&&& this.id =&&& this.name =&&& this.age =}public boolean equals(Object obj){&&& return& this.id == ((Test04)obj).}}JDK环境为:IBM1.5.0LR脚本:打开LR脚本编辑器组建,协议选择Java Vuser,具体如下所示:import lrapi.public class Actions{&public int init() throws Throwable {& return 0;&}//end of init&public int action() throws Throwable {&&&& Test04 x = new Test04(3,"Tom",1);//此处可以参数化&&&& Test04 y = new Test04(2,"Bob",1);//此处可以参数化&&&&&&&&& System.out.println(x.equals(y));& return 0;&}//end of action&public int end() throws Throwable {& return 0;&}//end of end}LR版本为:LR11.0使用JAVAC 编译Test04.java文件之后,把Test04.class文件放到LR类加载目录下,调试脚本,运行之后报错:Notify: Found jdk version: 1.5.0.Notify: classpath=C:\Documents and Settings\Administrator\Local Settings\Temp\noname21\;c:\program files\hp\loadrunner\classes\c:\program files\hp\loadrunner\;D:\netbank\IBMjdk1.5\BIN;;;c:\program files\hp\loadrunner\lib\xstream-1.3.c:\program files\hp\loadrunner\lib\xpp3-1.1.4c.jarNotify: Path=D:\netbank\IBMjdk1.5\jre\bin\C:\PROGRA~1\HP\LOADRU~1\C:\PROGRA~1\HP\LOADRU~1\bin\C:\PROGRA~1\HP\LOADRU~1\bin\tulip\C:\PROGRA~1\HP\LOADRU~1\D:\oracle\product\10.2.0\db_1\C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\WD:\netbank\IBMjdk1.5\C:\strawberry\c\C:\strawberry\perl\C:\Program Files\TortoiseSVN\Notify: VM Params: .Error:& at java.lang.ClassLoader.loadLibraryWithPath(ClassLoader.java:896)&at java.lang.System.load(System.java:433)&at utils.LRUtils.loadLRLibrary(LRUtils.java:737)&at mercio.MercObjectInputStream.&clinit&(MercObjectInputStream.java:1604)&at java.lang.J9VMInternals.initializeImpl(Native Method)&at java.lang.J9VMInternals.initialize(J9VMInternals.java:148)&at DummyClassLoader.getScriptObject(DummyClassLoader.java:129)Error: Can't create script. object.Error: Exception was raised when calling abort-cleanup function in extension java_int.dll: System Exceptions: EXCEPTION_ACCESS_VIOLATIONWarning: Extension trans.dll reports error -1 on call to function ExtAbortCleanup分析了错误,大概意思是没有找到java文件,分析可能和环境变量有关,在网上找了很多资料,都没有找到正确答案,于是把脚本调用JAVA类部分程序去掉,运行还是报同样的错基本可以排除JAVA程序没有关系,于是更换JDK版本为sun jdk1.6,环境变量也做相应调整,可以运行成功,加上java类调用代码之后,运行也没有问题。注意class、以及jar包存放路径是否正确,比如:脚本存放路径为:D:\LR_scripts_Java,被调用的类为:com.Test.class,则需要把com.Test.class放到D:\LR_scripts_Java\目录下。结论:LR11不支持 JDK 1.5,IBM 1.6以上的版本没有尝试过,不过建议使用sun1.6以上版本进行测试。使用LoadRunner 编写JAVA 测试脚本 - Plight - 51Testing软件测试网 51Testing软件测试网-中国软件测试人的精神家园 - Powered by X-Space
广交好友~~ 想要讨论的可以留下msn~~~
希望群友网友经常能提出问题,一起解决,共同提高
使用LoadRunner 编写JAVA 测试脚本
& 17:46:51
/ 个人分类:
使用 编写 脚本以前在使用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. 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)& & {& && &&&& & }}通过java Vuser调用测试java类/** LoadRunner Java script. (Build: 754)** Script. Description:*& && && && && && && &*/ import lrapi.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& && & (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运行 logVirtual 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-fcd&&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=%d{yyyy MMM dd HH:mm:ss} %-5p %c - %m%n20个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 31loadrunner 提供的.NET JAVA等语言脚本支持,为测试的灵活性、多样性提供了极大的方便。批量加入jar包到loadrunner环境变量中 - 旭日乘风 - ITeye技术网站
在测试中,运用java vuser编写脚本时,如果要导入一些jar包,loadrunner的操作方式是在 Runtime settings里的Java Environment Settings 的classpath里面添加,但是,在这里面只能通过点击右上角的 第三个(形如文件夹)按钮加jar包,点一次加入一个,如果测试过程中需要大量的jar包,那么这种方法显然很慢很头痛,现在简述一下我的处理方式。可以方便快捷的将一个文件夹下的所有jar包加入到测试环境中。
&& (1)新建一个java vuser脚本,然后点击保存,输入脚本名称,如test,将脚本保存到你想保存的位置,假如& C:/,这样loadruner会在c:/盘建立一个test文件夹
&&&&&&&&&&&&
&& (2)[size=x-large]在virtual& user generator 里按F4,或者点击右上角工具栏的最后一个按钮,调出runtime setting,
&&&&&& 定位到Java Environment Settings 的classpath,你将看到loadrunner自动加载了系统的环境变量,你在这里可以删除一些不需要的jar,只保存jre即可。点击确定
&&
&& (3)来到你脚本保存的目录(本例为c:/test),找到default.cfg文件,用记事本或者任何文本编辑器打开,你将看到文件的底部有
&&&&&& [JavaVM:Options]
&&&&&&& Java_Env_ClassPath=
&&&&&&&& 。。。。。。。。。。。
&&& 将你想要加入的jar包的路径加在“Java_Env_ClassPath=”后面就可以了(只需修改这里,其他项不用改)。例如:
Java_Env_ClassPath=.;E:\jdk1.5.0_05\E:\jdk1.5.0_05\E:\lib\activation-1.1.E:\lib\axiom-api-1.2.8.
E:\lib\axiom-impl-1.2.8.E:\lib\com.ibm.mq.E:\lib\com.ibm.mqjms.E:\lib\commons-logging.E:\lib\connector.E:\lib\dhbcore.E:\lib\javamail_1.4_spec-1.3.E:\lib\jetty-6.1.9.E:\lib\jetty-util-6.1.9.E:\lib\jms_1.1_spec-1.1.1.E:\lib\log4j.E:\lib\logging\jcl104-over-slf4j-1.5.0.E:\lib\logging\logback-classic-0.9.8.E:\lib\logging\logback-core-0.9.8.E:\lib\logging\slf4j-api-1.5.0.E:\lib\org.springframework.ws-2.0.0.M1-sources.E:\lib\org.springframework.ws-2.0.0.M1.
(这串字符串你可以写一个程序,直接获取某给目录的jar包,附件中是我的程序,只需修改你jar包放在的目录就可以了)
保存后,再回到runtime settings&&& 你将看到loadrunner把你加入的包加载了进去,至此你就可以进行其他工作啦。[/size]
(722 Bytes)
下载次数: 42
浏览: 43697 次
来自: 重庆
我想知道你这个是怎么访问web-inf下面文件夹里面的jsp文 ...
非常感谢,我遇到了,找了很多帖子,你这个解决了,
你好,我想问下在tomcat6的环境下,可以用这个作为数据连接 ...
楼主大好人啊~~~
哈哈,不错

我要回帖

更多关于 loadrunner下载 的文章

 

随机推荐