1、环境准备:

     LoadRunner11----->对应JDK1.6版本(32位)

LoadRunner12----->对应JDK1.7版本(32位)

  (一)、JDK下载安装完成后,配置环境变量:

1)、系统变量→新建 JAVA_HOME 变量 。    变量值填写jdk的安装目录(例如:C:\Program Files (x86)\Java\jdk1.7.0_25)

2)、系统变量→寻找 Path 变量→编辑,在变量值最后输入 %JAVA_HOME%\bin;%JAVA_HOME%\jre\bin;

3)、系统变量→新建 CLASSPATH 变量,变量值填写   .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar(注意最前面有一点)

系统变量配置完毕,检验是否配置成功 运行cmd 输入 java -version (java 和 -version 之间有空格)

若如图所示 显示版本信息 则说明安装和配置成功。(红色框中说明是32位版本)

(二)、下载java编写工具idea

下载地址:https://www.jetbrains.com/idea/download/#section=windows,Community免费版

 2、编写java代码,实例代码以md5加密算法为例,实现登录和获取订单列表的功能。

1)、使用idea工具,新建一个项目,命名为:myjavatest

2)、在该项目下,新建一个包,命名为:mytestMd5

3)、将java代码拷贝到包下,最终目录为:

4)、将lib文件夹引入,解决报错问题:

1、选择File文件,如下:

2、

3、添加之后的显示:

4、将导入的Lib勾选:

5、至此,报错信息已解决,可以直接调试、运行代码。最终目录结构:

3、将调试通过的文件,导出为jar。

1)、选择File:

2)、

3)、

4)、

5)、进行构建:

6)、完成后,目录文件夹下生成jar包文件:

4、在loadrunner中创建JavaVuser协议脚本:

1)、将调试好的java代码拷贝到loadrunner中:

import lrapi.lr;
//将包文件引入
import org.codehaus.jettison.json.JSONException;
import org.codehaus.jettison.json.JSONObject; 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 java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.URL;
import java.net.URLConnection;
import java.util.List;
import java.util.Map; //引入MD5文件
import mytestMd5.MD5;
//引入HttpClientRequest文件
import mytestMd5.HttpClientRequest;
public class Actions
{ public int init() throws Throwable {
return ;
}//end of init public int action() throws Throwable {
// 定义登录URL地址
String login_url = "http://******/mobile/api/user/login";
// 定义请求的参数
String login_data = "{\"mobile\":\"130********\",\"password\":\"123456\"}";
// 调用HttpClientRequest类里面的sendpost方法
//添加事物函数
lr.start_transaction("登录");
String PostResult = HttpClientRequest.sendPost(login_url, login_data);
System.out.println("登录返回:"+ PostResult);
JSONObject jsonobj = new JSONObject(PostResult);
int status = (int) jsonobj.get("code");
//根据status返回值,判断登录事物是否成功
if(status == )
{
lr.end_transaction("登录", lr.PASS);
}
else
{
lr.end_transaction("登录", lr.FAIL);
}
System.out.println("code:" +status);
//获取token值
String token = (String) jsonobj.getJSONObject("data").get("token");
System.out.println("token:" +token); String modifypaypwd_url = "http://*********/mobile/api/user/resetpaypwd";
//调用md5类里面的getmd5code这个方法
String newPasswod = MD5.GetMD5Code("");
System.out.println("newPasswod:" +newPasswod);
String modifypaypwd_data = "{\"token\":\""+token+"\",\"password\":\""+newPasswod+"\"}";
String PostMd5Result = HttpClientRequest.sendPost(modifypaypwd_url, modifypaypwd_data);
System.out.println("PostMd5Result:" + PostMd5Result);
return ;
}//end of action public int end() throws Throwable {
return ;
}//end of end
}

2)、设置RunTime Settings:

1、将lib文件下的包导入

2、将jdk目录lib下的dt.jar、tools.jar导入

3、将构建完成的jar包导入

最终导入的文件如下:

3)、运行效果如下:

Starting iteration .
Maximum number of concurrent connections per server: [MsgId: MMSG-]
Starting action Actions.
Notify: Transaction "登录" started.
System.out: 登录返回:{"code":,"msg":"成功调用","data":{"id":,"username":"test11","sex":,"age":,"mobile":"","email":"158000000011@test.com","gqid":"","money":0.0,"pmoney":100.0,"createtime":,"lasttime":,"token":"TGBCHgxZMHv83Fu8HtizNy+5m1fVDGlnh/EO4TBvh7K97TNe1L9tEaJNlV/bCCrBxRU/jxaEwo/fQbjJJq9BrA==","identity":"7ca9dfc5987093f8"}} Notify:
Notify: Transaction "登录" ended with a "Pass" status (Duration: 0.5548).
System.out: code: Notify:
System.out: token:TGBCHgxZMHv83Fu8HtizNy+5m1fVDGlnh/EO4TBvh7K97TNe1L9tEaJNlV/bCCrBxRU/jxaEwo/fQbjJJq9BrA== Notify:
System.out: newPasswod:e10adc3949ba59abbe56e057f20f883e Notify:
System.out: PostMd5Result:{"code":,"msg":"成功调用","data":{}} Notify:
Ending action Actions.
Ending iteration .

同样的操作,获取订单列表代码如下:

/*
* 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; //引入testmd5.HttpClientRequest文件
import mytestMd5.HttpClientRequest; public class Actions
{ public int init() throws Throwable {
return ;
}//end of init public int action() throws Throwable {
// 定义登录URL地址
String login_url = "http://********/mobile/api/user/login";
// 定义请求的参数
String login_data = "{\"mobile\":\"130********\",\"password\":\"123456\"}";
// 调用HttpClientRequest类里面的sendpost方法 //添加登录事务函数
lr.start_transaction("登录"); String PostResult = HttpClientRequest.sendPost(login_url, login_data);
System.out.println("登录返回:"+ PostResult);
JSONObject jsonobj = new JSONObject(PostResult);
int status = (int) jsonobj.get("code"); //根据status返回值,判断登录事务是否成功
if(status == )
{
lr.end_transaction("登录", lr.PASS);
}
else
{
lr.end_transaction("登录", lr.FAIL);
} System.out.println("code:" +status);
// 获取token值
String token = (String) jsonobj.getJSONObject("data").get("token");
System.out.println("token:" +token); String tokenUTF8 = "";
// 进行URLcode
try {
tokenUTF8 = URLEncoder.encode(token, "UTF-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} String get_url = "http://**********/mobile/api/order/getorders?";
String param = "offset=0"+"&"+"token="+token; // 把token替换成tokenUTF8
String Param = param.replace(token, tokenUTF8); //添加获取订单列表事务
lr.start_transaction("获取订单列表");
String GetResult = HttpClientRequest.sendGet(get_url, Param); System.out.println("GetResult:" + GetResult); JSONObject jsonbb = new JSONObject(GetResult);
int statusbb = (int) jsonbb.get("code"); //根据statusbb返回值,判断获取订单列表事务是否成功
if(statusbb == )
{
lr.end_transaction("获取订单列表", lr.PASS);
}
else
{
lr.end_transaction("获取订单列表", lr.FAIL);
} System.out.println("code:" +statusbb);
return ;
}//end of action public int end() throws Throwable {
return ;
}//end of end
}

运行结果如下:

Starting iteration .
Maximum number of concurrent connections per server: [MsgId: MMSG-]
Starting action Actions.
Notify: Transaction "登录" started.
System.out: 登录返回:{"code":,"msg":"成功调用","data":{"id":,"username":"test11","sex":,"age":,"mobile":"","email":"158000000011@test.com","gqid":"","money":0.0,"pmoney":100.0,"createtime":,"lasttime":,"token":"TGBCHgxZMHv83Fu8HtizNy+5m1fVDGlnh/EO4TBvh7K97TNe1L9tEaJNlV/bCCrBxRU/jxaEwo/fQbjJJq9BrA==","identity":"7ca9dfc5987093f8"}} Notify:
Notify: Transaction "登录" ended with a "Pass" status (Duration: 0.4899).
System.out: code: Notify:
System.out: token:TGBCHgxZMHv83Fu8HtizNy+5m1fVDGlnh/EO4TBvh7K97TNe1L9tEaJNlV/bCCrBxRU/jxaEwo/fQbjJJq9BrA== Notify:
Notify: Transaction "获取订单列表" started.
System.out: null--->[HTTP/1.1 OK] Notify:
System.out: Date--->[Tue, Apr :: GMT] Notify:
System.out: Transfer-Encoding--->[chunked] Notify:
System.out: Content-Type--->[application/json;charset=UTF-] Notify:
System.out: Server--->[Apache-Coyote/1.1] Notify:
System.out: GetResult:{"code":,"msg":"鎴愬姛璋冪敤","data":{"lists":[]}} Notify:
Notify: Transaction "获取订单列表" ended with a "Pass" status (Duration: 0.1213).

loadrunner中JavaVuser脚本的编写的更多相关文章

  1. 性能测试学习 第七课 --loadrunner中JavaVuser脚本的编写

    1.环境准备:      LoadRunner11----->对应JDK1.6版本(32位) LoadRunner12----->对应JDK1.7版本(32位) (一).JDK下载安装完成 ...

  2. loadrunner12中JavaVuser脚本的编写

    1.环境准备:      友情提示:用本地环境,不要用虚拟机      LoadRunner11----->对应JDK1.6版本(32位) LoadRunner12----->对应JDK1 ...

  3. Loadrunner中web脚本转成JavaVuser脚本

    先用web方式录制好脚本,进行参数化,关联验证等操作,之后执行以下步骤: 1)将要转换的web脚本复制出来并保存到web.txt中2)参数界定符部分需要由{}手动修改成<>,包括参数化的和 ...

  4. 在loadrunner中使用winsocket协议编写脚步三部曲

    这两天写了一个winsocket的脚本,没有通过录制的方式,是直接手写的.下面贴出来和大家分享: 脚本的写法很简单,大体说来,就像把大象放进冰箱一样,总共分三步: 第一步:把冰箱门打开. //建立到服 ...

  5. LoadRunner中常用的字符串操作函数

    LoadRunner中常用的字符串操作函数有:                strcpy(destination_string, source_string);               strc ...

  6. Loadrunner之HTTP脚本编写

    Loadrunner之HTTP脚本编写 刚学习性能测试的时候还是建议以录制脚本为好,从录制的脚本中去了解脚本结构,各个函数的用法,慢慢再去尝试自己去编写脚本,如果想往技术方向发展,建议最好学习一门编程 ...

  7. 编写loadrunner的ftp脚本(详细步骤)

    大家好,主要给大家讲解编写loadrunner的ftp脚本详细步骤,及FTP函数注释,及FTP脚本两种编写方式,手动和录制.亲测 No problem!^_^ 1.首先要了解loadrunner中几个 ...

  8. loadrunner学习系列---脚本编写(2)

    loadrunner学习系列---脚本编写(2) 今天接着翻译http://www.wilsonmar.com/1lrscrīpt.htm上面关于LR脚本编写部分. VUser_Init部分 这里是V ...

  9. SecureCRT中python脚本编写

    SecureCRT中python脚本编写学习指南 SecureCRT python 引言 在测试网络设备中,通常使用脚本对设备端进行配置和测试以及维护:对于PE设备的测试维护人员来说使用较多是Secu ...

随机推荐

  1. G面经Prepare: Longest All One Substring

    give a string, all 1 or 0, we can flip a 0 to 1, find the longest 1 substring after the flipping 这是一 ...

  2. 请求http页面的相关过程

    http请求从TCP建立三次握手后进行,客户端按照规定的格式向服务器发送http请求,服务器在接收到这个请求之后,首先要对其进行解析,发掘出客户端所需要的相关资源,然后经过相应的业务逻辑处理,找到这个 ...

  3. 安装jar包到本地仓库和远程仓库

    转载: https://blog.csdn.net/zengdongwen/article/details/81241198 如何部署到maven中央仓库呢? https://blog.csdn.ne ...

  4. sql server中的开窗函数over、视图、事物

    一.开窗函数over的作用有两个: 1.排序order by,row_number,翻页 2.划区partition by,结合聚合函数针对某部分数据进行汇总 翻页的sql server 语句: an ...

  5. 非常不错的svg教程

    介绍的非常详细,也很有调理,内容很详细 适合于初学者学习 http://www.softwhy.com/qiduan/SVG_source/

  6. Asp.Net Core WebApi 和Asp.Net WebApi上传文件

    public class UpLoadController : ControllerBase { private readonly IHostingEnvironment _hostingEnviro ...

  7. 网络-04-端口号-linux端口详解大全--TCP注册端口号大全

    # John Murphy <john.m.murphy&mci.com>afs3-fileserver 7000/tcp file server itselfafs3-files ...

  8. Git 教程(四):标签和其他

    标签管理 发布一个版本时,我们通常先在版本库中打一个标签(tag),这样,就唯一确定了打标签时刻的版本.将来无论什么时候,取某个标签的版本,就是把那个打标签的时刻的历史版本取出来.所以,标签也是版本库 ...

  9. (转)sql 违反了 PRIMARY KEY 约束,不能在对象 中插入重复键

    说明你的数据里面有重复记录 两种情况 1.已存在的表中和要导入数据之间的重复 这个时候可以通过在两个表之间建立关联,将主键级联找出重复记录 2.要导入的表中存在重复记录 可通过类似如下的语句将表中的重 ...

  10. flask框架----整合Flask中的目录结构

    一.SQLAlchemy-Utils 由于sqlalchemy中没有提供choice方法,所以借助SQLAlchemy-Utils组件提供的choice方法 import datetime from ...