性能测试学习 第七课 --loadrunner中JavaVuser脚本的编写
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 0;
}//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 == 0)
{
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("123456");
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 0;
}//end of action public int end() throws Throwable {
return 0;
}//end of end
}

2)、设置RunTime Settings:

1、将lib文件下的包导入
2、将jdk目录lib下的dt.jar、tools.jar导入
3、将构建完成的jar包导入
最终导入的文件如下:


3)、运行效果如下:

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

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

/*
* 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 0;
}//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 == 0)
{
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 == 0)
{
lr.end_transaction("获取订单列表", lr.PASS);
}
else
{
lr.end_transaction("获取订单列表", lr.FAIL);
} System.out.println("code:" +statusbb);
return 0;
}//end of action public int end() throws Throwable {
return 0;
}//end of end
}

运行结果如下:

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

性能测试学习 第七课 --loadrunner中JavaVuser脚本的编写的更多相关文章
- loadrunner中JavaVuser脚本的编写
1.环境准备: LoadRunner11----->对应JDK1.6版本(32位) LoadRunner12----->对应JDK1.7版本(32位) (一).JDK下载安装完成 ...
- loadrunner12中JavaVuser脚本的编写
1.环境准备: 友情提示:用本地环境,不要用虚拟机 LoadRunner11----->对应JDK1.6版本(32位) LoadRunner12----->对应JDK1 ...
- 性能测试学习 第八课--LR12中针对WebServices协议的三种脚本开发模式
一,webservices协议简介 webservices是建立可交互操作的分布式应用程序的新平台,它通过一系列的标准和协议来保证程序之间的动态连接, 其中最基本的协议包括soap,wsdl,uddi ...
- Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer
原文:Elasticsearch7.X 入门学习第七课笔记-----Mapping多字段与自定义Analyzer 版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处 ...
- python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍
目录 python学习第七讲,python中的数据类型,列表,元祖,字典,之元祖使用与介绍 一丶元祖 1.元祖简介 2.元祖变量的定义 3.元祖变量的常用操作. 4.元祖的遍历 5.元祖的应用场景 p ...
- Python学习第七课
Python学习第七课 'Alex' "Alex"print('hello'*5) #重复输出字符串 print('hellowold'[2:]) #类似于切片操作:会取出 llo ...
- Loadrunner中web脚本转成JavaVuser脚本
先用web方式录制好脚本,进行参数化,关联验证等操作,之后执行以下步骤: 1)将要转换的web脚本复制出来并保存到web.txt中2)参数界定符部分需要由{}手动修改成<>,包括参数化的和 ...
- 性能测试学习第四天-----loadrunner:jdbc批量制造测试数据 & controller应用
Javavuser协议 1.过程概述:在eclipse中用java编写sql执行脚本,复制到lr中,调整后通过参数化迭代批量制造测试数据: 2.步骤: 1).在eclipse中新建java proje ...
- Java泛型学习笔记 - (七)浅析泛型中通配符的使用
一.基本概念:在学习Java泛型的过程中, 通配符是较难理解的一部分. 主要有以下三类:1. 无边界的通配符(Unbounded Wildcards), 就是<?>, 比如List< ...
随机推荐
- memcached单机或热备的安装部署
一.部署准备 1.安装Java 不建议使用系统默认Open JDK版本,需要手工另行安装.JDK版本建议为1.7+,若Java已安装完毕,则无需重复安装. 安装过程如下: (1)获取JDK安装包: ( ...
- c编译步骤
这几天查编译问题时,在头文件中加入某些错误信息,却发现没有编译报错.想了一下可能是,还未进行到语法分析阶段. 这里再了解一下编译过程. 一般而言代码编译包含了四个阶段的处理,即预处理(也称预编译,Pr ...
- [原创]iFPGA-USB2.0 FT2232H USB & UART开发板使用说明
iFPGA-USB2.0 FT2232H USB & UART 开发板使用说明 基本特性: 沉金工艺: 速度达到30MB/S以上: FT2232H USB2.0免固件开发: FPGA-USB2 ...
- ceph hammer 0.94.10手动部署方法Ceph Hammer版(0.94.10)手动部署for CentOS 7.x
Ceph Hammer版(0.94.10)手动部署for CentOS 7.x --lin.wang 20190310 环境有三个节点node-1,node-2,node-3,每个节点三个ssd盘作为 ...
- mysql 和 sqlserver sql差异比较
mysql:select * from table_name limit 100,200;--取出从100到200的数据 获取时间:mysql:now() mysql tinyint(0,1) → b ...
- 异步简析之BlockingCollection实现生产消费模式
目前市面上有诸多的产品实现队列功能,比如Redis.MemCache等... 其实c#中也有一个基础的集合类专门用来实现生产/消费模式 (生产模式还是建议使用Redis等产品) 下面是官方的一些资料和 ...
- 注册httpmonitor提示 模块“httpMonitor.dll"加载失败
注册HttpMonitor.dll提示失败,经过查看系统日志,发现原来是缺少依赖 从网上下载相关dll,放在同目录下,再次regsvr32 HttpMonitor.dll注册成功! 附上下载地址: h ...
- org.springframework.web.context.ContextLoaderListener 解决方案
tomcat启动项目报错,没找到这个类 我直接下了一个spring-web-4.3.8.RELEASE.jar 的 jar 包方到web-inf目录下.问题解决. 补充: 如果在检查了项目 jar 环 ...
- Django---form表单提交数据到数据库(普通方法+Django的form类)
目标: ①.初始form的简单应用 ②.使用Django的form组件完成新增一个帖子 方法一:普通方法 1.前端表单代码 <div> <form class="navba ...
- FlaskWeb开发:基于Python的Web应用开发实战
所属网站分类: 资源下载 > python电子书 作者:熊猫烧香 链接:http://www.pythonheidong.com/blog/article/63/ 来源:python黑洞网,专注 ...