Loadrunner与idea编写加密的java Vusers脚本总结

 

  • 准备工作:

    jdk版本的选择:       Loadrunner11 使用版本jdk1.6 32位(如果使用1.7的Loadrunner运行会提示Java VM internal error:Error Loading javai.dll.)       Loadrunner12 使用版本jdk1.7 32位
     关于多版本jdk切换,如从1.7切换到1.6,可能存在几种情况:
      1)直接修改环境变量中JAVA_HOME的值为jdk1.6的安装路径,cmd 运行查看一般就是1.6版本了,但如果发现仍然是1.7版本,请查看第2步            2)找到控制面板,查看方式选择大图标或者小图标,找到java选项并点击进入。然后选择java栏,点击查看,将jdk1.7的启用去掉,并保存,但如果发现仍然是1.7版本,请查看第3步
      3)需要将1.6安装目录bin里面的java.exe,javaw.exe,javaws.exe复制到C:\Windows\System32和C:\ProgramData\Oracle\Java\javapath(这是一个隐藏路径),但如果发现仍然是1.7版本,请查看第4步        (备注由于在WINDOWS\System32环境变量中的优先级高于JAVA_HOME设置的环境变量优先级,故如果只修改环境变量JAVA_HOME,jdk的版本并不会切换)
      4)运行regedit,找到HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft,修改Java Development Kit的CurrentVersion默认值为1.6,到这边基本就设置好了
  •  安装idea工具:

    https://www.jetbrains.com/idea/download/#section=windows 页面上的Community免费版       
  •  IDEA中具体操作

   1.准备文件     1)在idea工具中新建一个项目lemon1,且创建对应的包为testmd5          2)可以由开发提供算法,以及调用,也可以由开发给算法,自己编写调用方法,本例中为MD5.java,且将文件导入到testmd5下          3)post与get算法封装方法文件,本来中为HttpClientRequest.java,且将文件导入到testmd5下            4)导入包(以lib为例),使用方法如下:
            1.File--->Project Structure--->Libraries--->点击页面上的“+”,选择对应文件下的lib包,再点击Modules的Dependencies页签上的lib
            Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第1张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第2张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第3张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第4张 Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第5张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第6张      2. 创建主要测试脚本,本例中创建的脚本名字为TestPayPasswdMd5:
  1)本项目使用的是application/json方式,所以需要使用:     public static void main(String[] args) throws JSONException { }   2)post 请求方式编写套入如下,以登录为例:
    /登录URL地址     String login_URL="http://192.168.69.130:8080/mobile/api/user/login";     //登录请求的参数     String login_Data="{\"mobile\":\"13528223194\",\"password\":\"123456\"}";     //调用HttpClientRequest类中的sendPost     String login_PostResult = HttpClientRequest.sendPost(login_URL,login_Data);     //打印得到的结果     System.out.println("登录返回值为:"+login_PostResult);     //新建一个json对象     JSONObject login_jsonbj =new JSONObject(login_PostResult);     //得到token值
    String token =(String) login_jsonbj.getJSONObject("data").get("token");     System.out.println("登录返回的token为:"+token);    3)get 请求方式编写套入如下,以获得订单为例:     //获得订单URL地址     String getorders_URL="http://192.168.69.130:8080/mobile/api/order/getorders?";     //拼接参数部分--直接跟转码后的token,否则报错     // 进行token转码为URLcode方法如下     String tokenUTF8 = "";     try {         tokenUTF8 = URLEncoder.encode(token, "UTF-8");         }      catch (UnsupportedEncodingException e) {         e.printStackTrace();         }     String param = "offset=0"+"&"+"token="+tokenUTF8;     //调用HttpClientRequest类中的sendGet     String getorders_PostResult = HttpClientRequest.sendGet(getorders_URL,param);     //打印得到的结果     System.out.println("获得订单返回值为:"+getorders_PostResult);     3.打包,将MD5打包成jar文件MD5.jar         1)File-->Project Structure-->Artifacts-->JAR-->From modules with…-->         Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第7张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第8张         2) 选择打包的文件路径以及类名,点击OK
            Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第9张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第10张
        
        3)输入导出jar包名,以及导入地址
            Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第11张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第12张
  • loadrunner中新建java Vusers协议脚本

   1)导入Run-time Settings 中导入lib包,jdk中dt.jar与tool.jar,以及刚刚打的加密算法jar包          Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第13张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第14张   
   2)脚本的Actions中引入HttpClientRequest,MD5,TestPayPasswdMd5导入的包以及导入MD5与HttpClientRequest文件,记得到包     Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第15张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第16张   3)将idea工具中刚编写的脚本贴入到Actions文件中     Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第17张Loadrunner与idea编写加密的java Vusers脚本总结 随笔 第18张   4)在加上if对事务进行判断是否正确,java Vusers中事务使用点的方式连接,如下所示     lr.start_transaction("login");     lr.end_transaction("login", lr.PASS);     5)具体脚本如下所示,脚本中包含登录,重置密码,下单,支付订单,获取订单列表(支付的订单是有些问题,不知道为什么下单未返回payid,导致结算订单有问题)   loadrunner 全流程java Vusers脚本   /* * LoadRunner Java script. (Build: _build_number_) * * Script Description: *                      */   import lrapi.lr; import org.codehaus.jettison.json.JSONException; import org.codehaus.jettison.json.JSONObject;   import java.io.UnsupportedEncodingException; import java.net.URLEncoder;   import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.HttpClient; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.entity.StringEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.util.EntityUtils; import org.codehaus.jettison.json.JSONObject;   import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import java.util.List; import java.util.Map;   import testmd5.MD5; import testmd5.HttpClientRequest;     public class Actions {       public int init() throws Throwable {         return 0;     }//end of init         public int action() throws Throwable {               //登陆     //登录URL地址         String login_URL=" http://192.168.69.130:8080/mobile/api/user/login";     //登录请求的参数         String login_Data="{\"mobile\":\"13528223194\",\"password\":\"123456\"}";              lr.start_transaction("login");       //调用HttpClientRequest类中的sendPost         String login_PostResult = HttpClientRequest.sendPost(login_URL,login_Data);     //打印得到的结果         System.out.println("登录返回值为:"+login_PostResult);     //新建一个json对象         JSONObject login_jsonbj =new JSONObject(login_PostResult);         int login_code =(int) login_jsonbj.get("code");       if (login_code==0)         {           lr.end_transaction("login", lr.PASS);       }     else     {         lr.end_transaction("login", lr.FAIL);         System.out.println("下订单返回的状态码为:"+login_code);         }       String login_msg =(String) login_jsonbj.get("msg");             System.out.println("登录返回的状态码为:"+login_msg);     //返回的token         String token =(String) login_jsonbj.getJSONObject("data").get("token");         System.out.println("登录返回的token为:"+token);       //重置支付密码     //重置支付密码URL地址         String resetpaypwd_URL=" http://192.168.69.130:8080/mobile/api/user/resetpaypwd";     //密码加密转换         String resetpaypwd_newPasswd =MD5.GetMD5Code("123456");     //重置支付密码请求的参数         String resetpaypwd_Data="{\"token\":\""+token+"\",\"password\":\""+resetpaypwd_newPasswd+"\"}";       //调用HttpClientRequest类中的sendPost              lr.start_transaction("resetpaypwd");           String resetpaypwd_PostResult = HttpClientRequest.sendPost(resetpaypwd_URL,resetpaypwd_Data);       //打印得到的结果         System.out.println("重置支付密码返回值为:"+resetpaypwd_PostResult);         JSONObject resetpaypwd_jsonbj =new JSONObject(resetpaypwd_PostResult);         int resetpaypwd_code =(int) resetpaypwd_jsonbj.get("code");       if (resetpaypwd_code==0)         {           lr.end_transaction("resetpaypwd", lr.PASS);       }     else     {         lr.end_transaction("resetpaypwd", lr.FAIL);                 System.out.println("下订单返回的状态码为:"+resetpaypwd_code);       }       String esetpaypwd_msg =(String) resetpaypwd_jsonbj.get("msg");         System.out.println("重置支付返回的状态码为:"+esetpaypwd_msg);           //下订单         //下订单URL地址         String addorder_URL=" http://192.168.69.130:8080/mobile/api/order/addorder";         //下单请求的参数         String addorder_Data="{\"token\":\""+token+"\",\"getAddrId\":1,\"getCarId\":23,\"payType\":2,\"remark\":\"This is a remark\",\"price\":2.50,\"orders\":[{\"getTime\":1450921104000,\"goodss\":[{\"goodsId\":93,\"count\":1},{\"goodsId\":93,\"count\":1}]}],\"invoiceTitle\":\"abcd\"}";         //调用HttpClientRequest类中的sendPost                lr.start_transaction("addorder");           String addorder_PostResult = HttpClientRequest.sendPost(addorder_URL,addorder_Data);         //打印得到的结果         System.out.println("下订单返回值为:"+addorder_PostResult);         JSONObject addorder_jsonbj =new JSONObject(addorder_PostResult);         int addorder_code =(int) addorder_jsonbj.get("code");       if (addorder_code==0)         {           lr.end_transaction("addorder", lr.PASS);       }     else     {         lr.end_transaction("addorder", lr.FAIL);                 System.out.println("下订单返回的状态码为:"+addorder_code);       }       String addorder_msg =(String) addorder_jsonbj.get("msg");         System.out.println("下订单返回信息为:"+addorder_msg);                  //返回值里面没有payid信息,why         String payid =(String) addorder_jsonbj.get("msg");         System.out.println("下订单返回的msg为:"+payid);               //支付订单         //支付订单URL地址         String pay_URL=" http://192.168.69.130:8080/mobile/api/pay/pay";         //支付订单请求的参数         String pay_Data="{\"token\":\""+token+"\",\"payId\":\"2015092019551300001\",\"payPwd\":\""+resetpaypwd_newPasswd+"\",\"platform\":1}";                lr.start_transaction("pay");           //调用HttpClientRequest类中的sendPost         String pay_PostResult = HttpClientRequest.sendPost(pay_URL,pay_Data);         //打印得到的结果         System.out.println("支付订单返回值为:"+pay_PostResult);         //新建一个json对象         JSONObject pay_jsonbj =new JSONObject(pay_PostResult);         int pay_code =(int) pay_jsonbj.get("code");         System.out.println("支付订单返回的状态码为:"+pay_code);       if (pay_code==0)         {           lr.end_transaction("pay", lr.PASS);       }     else     {         lr.end_transaction("pay", lr.FAIL);                 System.out.println("支付订单返回的状态码为:"+pay_code);       }           String pay_msg =(String) pay_jsonbj.get("msg");         System.out.println("支付订单返回的msg为:"+pay_msg);             //获得订单         String tokenUTF8 = "";         // 进行token转码为URLcode         try {             tokenUTF8 = URLEncoder.encode(token, "UTF-8");         } catch (UnsupportedEncodingException e) {             e.printStackTrace();         }         //获得订单URL地址         String getorders_URL=" http://192.168.69.130:8080/mobile/api/order/getorders?";         //拼接参数部分--直接跟转码后的token         String param = "offset=0"+"&"+"token="+tokenUTF8;       lr.start_transaction("getorders");           //调用HttpClientRequest类中的sendGet         String getorders_PostResult = HttpClientRequest.sendGet(getorders_URL,param);         //打印得到的结果         System.out.println("获得订单返回值为:"+getorders_PostResult);         //新建一个json对象         JSONObject getorders_jsonbj =new JSONObject(getorders_PostResult);         int getorders_code =(int) getorders_jsonbj.get("code");       if (getorders_code==0)         {           lr.end_transaction("getorders", lr.PASS);       }     else     {         lr.end_transaction("getorders", lr.FAIL);         System.out.println("获得订单返回的状态码为:"+getorders_code);       }                    String getorders_msg =(String) getorders_jsonbj.get("msg");         System.out.println("获得订单返回的msg为:"+getorders_msg);           return 0;     }//end of action         public int end() throws Throwable {         return 0;     }//end of end }    
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。