开发JAVA Vuser脚本其实并复杂,关键是需要对客户端程序的开发非常了解,必须知道由那些类,类中有哪些方法和函数,这些方法和函数如何调用,说白了你需要把客户端的源码读一遍,理解了。要是在研发人员的帮助下就简单多了。开始脚本开发了按照以下步骤进行:

1)让你研发人员坐你旁边,打开她的开发环境;

2)准备好你的脚本开发环境,安装好JDK,配置好环境变量,当然要保障测试应用的客户端是可以正常启动和运行的。

3)规划你的脚本,选择需要开发的业务,比如:系统初始化、系统登录、数据查询、数据增加等等;

4)开始开发脚本,打开LR VUG,选择JAVA Vuser脚本,默认情况下是这样的:

import lrapi.lr;
 public class Actions
 {
 public int init() throws Throwable {
            return 0;
 }//end of init
 public int action() throws Throwable {
            return 0;
 }//end of action
 public int end() throws Throwable {
            return 0;
 }//end of end
 }

5)  在Runtime-Setting中设置Classpath,将你客户端的那个JAR包加载进去;

6)  问你旁边的研发人员,你需要完成的业务需要调用的类和方法以及他们的路径,比如我这次测试过程中初始化需要调用的方法applySystemProperties()、createUserHomeDirSettings();和initConfig(),这几个方法分别存在对应目录的类文件中如下:

applySystemProperties():Org\executequery\ApplicationLauncher.class
 createUserHomeDirSettings();:org\executequery.util\SystemResources.class
 initConfig():org\imageinfo\config.gui\UserLoginPanel.class

因此写成脚本如下:

lr.start_transaction ("初始化");
           org.executequery.ApplicationLauncher App = new org.executequery.ApplicationLauncher();
              App.applySystemProperties();
        org.executequery.util.SystemResources.createUserHomeDirSettings();
     org.imageinfo.config.gui.UserLoginPanel UserLogin=new org.imageinfo.config.gui.UserLoginPanel(new javax.swing.JDialog());
              UserLogin.initConfig();
              lr.end_transaction("初始化", lr.AUTO);

注意:这个脚本开发过程中研发人员的配合很重要,你要做的目的就是把你要仿真的业务搞清楚,然后请他来帮你找她程序的实现方式。

很快脚本开发完成了,这里注意几点:

1)  尽量采用在设置中加载JAR包的方式,同样也可以采用Import的方式加载,但是有点麻烦;

2)  研发人员一定要对自己的程序很清楚。

3)  注意动态类和静态类,动态类需要定义,静态类可以直接调用;

4)  在JAVA VUser模拟虚拟用户时,线程模拟,要比进行模拟效率高很多;具体区别大家可以做试验分析;

5)  如果采用多负载机施加压力,记得每天负载机的设置,要保证每台负载机都能具有完好的JAVA环境和客户环境,同时保证需要调用的JAR文件可以找到。

6)  完整脚本如下:



 

 

import javax.swing.JDialog;
//import JZProjects.org.imageinfo.config.gui.*;
//import JZProjects.org.imageinfo.config.parainit.*;
import lrapi.lr;
public class Actions
{
                  public int init() throws Throwable {
                   return 0;
         }//end of init
         public int action() throws Throwable {
            // PropertyInit.setConnection();
             lr.think_time(10);
             lr.start_transaction ("初始化");
             org.executequery.ApplicationLauncher App = new org.executequery.ApplicationLauncher();
             App.applySystemProperties();
            org.executequery.util.SystemResources.createUserHomeDirSettings();
org.imageinfo.config.gui.UserLoginPanel UserLogin=new org.imageinfo.config.gui.UserLoginPanel(new javax.swing.JDialog());
             UserLogin.initConfig();
             lr.end_transaction("初始化", lr.AUTO);
        //UserLogin.main(null);//调用登录界面
             lr.think_time(10);
        lr.start_transaction ("登录");
             org.imageinfo.config.gui.UserLoginPanel.userName="admin";
             //org.imageinfo.config.gui.UserLoginPanel.userPassword="admin";
             boolean CheckUser=UserLogin.CheckUserNameExist(); //检测用户名
             boolean CheckPass=UserLogin.CheckUser();//检测用户名密码
             lr.end_transaction("登录", lr.AUTO);
           lr.think_time(10);
        lr.start_transaction("查询");
             org.imageinfo.gui.panel.CommandManage Search= new org.imageinfo.gui.panel.Co mmandManage("DCDYGSJJQZTCLCPSJB");
                 Search.queryData();
             lr.end_transaction("查询", lr.AUTO);
                   return 0;
         }//end of action
         public int end() throws Throwable {
                   return 0;
         }//end of end
}