性能测试十二:jmeter进阶之java请求参数化

如项目中的ip、端口号之类的,都可以在此代码中定义

public Arguments getDefaultParameters() {
// TODO Auto-generated method stub
return null;
}

此处注册两个参数到jmeter的变量池:

p_name,默认值设为abc

p_desc,默认值设为123

/**
* 此函数里面可以人工注册一些参数,这些参数可以在java请求面板里展示或更改
*/
@Override
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("p_name", "abc");
arguments.addArgument("p_desc", "123");

return arguments;
}

由于改变了代码 ,需重新导出jar包,并在jmeter目录下替换原来的jar包

重启jmeter

这样就可以在代码里面引用到参数了

当然,只要注册了过后,做什么参数都行

在代码中使用:

@Override
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult result = new SampleResult();
// 给事务起个名称
result.setSampleLabel("insert");
// 事务开始
result.sampleStart();
// 执行sql之前,先进行参数化
try {
String p_name = arg0.getParameter("p_name");
String p_desc = arg0.getParameter("p_desc");
statement.setString(1, p_name);
statement.setString(2, p_desc);
int rows = statement.executeUpdate();
if (rows > 0){
// 事务成功
result.setSuccessful(true);
}else{
// 事务失败
result.setSuccessful(false);
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 事务结束
result.sampleEnd();

return result;
}

public static void main(String[] args) {
MyJmeterTest test = new MyJmeterTest();
// 创建一个JavaSamplerContext对象,该对象创建的时候需要传入一个Arguments对象
JavaSamplerContext context = new JavaSamplerContext(test.getDefaultParameters());
test.setupTest(context);
test.runTest(context);
test.teardownTest(context);
}

此时需再次导出、替换、重启jmeter就可以运行了

jmeter java脚本调试最终版:

package cn.test.jmeter;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;

import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult;

public class MyJmeterTest implements JavaSamplerClient {

// 全局变量
PreparedStatement statement;
Connection conn;
/**
* 此函数里面可以人工注册一些参数,这些参数可以在java请求面板里展示或更改
*/
@Override
public Arguments getDefaultParameters() {
Arguments arguments = new Arguments();
arguments.addArgument("p_name", "abc");
arguments.addArgument("p_desc", "123");

return arguments;
}

/**
* 初始化的操作写在setup方法里,类似于LR里的init
*/
@Override
public void setupTest(JavaSamplerContext arg0) {
// 注册驱动,告诉Java接下来要链接哪个数据库
try {
Class.forName("com.mysql.jdbc.Driver");
// 建立mysql数据库链接
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/oa", "root", "123456");
// 把sql进行编译
statement = conn.prepareStatement("insert into itcast_role (name, description) values (?,?)");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/**
* 真正多次操作的业务,放在runtest方法里,类似于LR里的action
*/
@Override
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult result = new SampleResult();
// 给事务起个名称
result.setSampleLabel("insert");
// 事务开始
result.sampleStart();
// 执行sql之前,先进行参数化
try {
String p_name = arg0.getParameter("p_name");
String p_desc = arg0.getParameter("p_desc");
statement.setString(1, p_name);
statement.setString(2, p_desc);
int rows = statement.executeUpdate();
if (rows > 0){
// 事务成功
result.setSuccessful(true);
}else{
// 事务失败
result.setSuccessful(false);
}

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// 事务结束
result.sampleEnd();

return result;
}

/**
* 结束的操作放在teardown里,类似于LR里的end
*/
@Override
public void teardownTest(JavaSamplerContext arg0) {
// 关闭链接
try {
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

public static void main(String[] args) {
MyJmeterTest test = new MyJmeterTest();
// 创建一个JavaSamplerContext对象,该对象创建的时候需要传入一个Arguments对象
JavaSamplerContext context = new JavaSamplerContext(test.getDefaultParameters());
test.setupTest(context);
test.runTest(context);
test.teardownTest(context);
}

}

原文地址:https://www.cnblogs.com/zhongyehai/p/10193277.html

时间: 2024-10-11 08:14:41

性能测试十二:jmeter进阶之java请求参数化的相关文章

性能测试十一:jmeter进阶之java请求

使用Java编写JDBC脚本对Mysql进行增删改查等操作的性能测试 使用Jmeter提供的脚本框架依赖的jar包(分别在jmeter目录下的lib和ext目录下) ApacheJMeter_core.jar ApacheJMeter_java.jar avalon-framework-4.1.4.jar jorphan.jar logkit-2.0.jar 若为4.+以上的jmeter还需加两个 slf4j-api-的.jar包 脚本调试好后,导出为jar包,放在apache-jmeter-3

性能测试十:jmeter进阶之webService与socket

一.webService 1.添加http post请求2.添加header:Conent-type:text/xml Post请求的body中填写<soapenv:Envelope  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"  xmlns:web="http://webservice.lee.com/">  <soapenv:Header/>  <soapenv

jmeter之自定义java请求性能测试

写在前面 最近个人情绪不稳定.心情很不美丽,特别懒,没有博客和技术文章更新,这个文章也是迟到了周多的时间,啰嗦完了,开始正题吧. 我们在实际做性能测试的时候,一般会采用jmeter.Lr进行测试,但是很少有同学用jmeter的测试Java请求,也可以这么说,一般是开发自己搞的多一些. 准备工作 自己编写一个接口(我用springboot随便写了一个,需要的可以加我好友) 新建一个maven工程 pom文件引用ApacheJMeter_core.jar     ApacheJMeter_java.

jmeter中实现java请求实战日志

jmeter中实现java请求思路:采用jmeter提供的框架包,创建一个类,继承类JavaSamplerClient 重写该类的以下四个方法 getDefaultParameters() runTest(JavaSamplerContext context) setupTest(JavaSamplerContext context) teardownTest(JavaSamplerContext context) 重点是通过getDefaultParameters方法构造jmeter参数,将从

性能测试六:jmeter进阶之Cookie与header管理器

一.http cookie管理器 可以在浏览器中抓取到cookie信息,然后通过http cookie管理器为http请求添加cookie信息 添加cookie管理器后,Jmeter可以自动处理cookie 登录页面: http://localhost:8080/PerfTeach/login.jsp 添加购物车接口: http://localhost:8080/PerfTeach/AddShoppingCar?userName=admin&itemId=123 1.在登录请求后面加一个空的co

Spring Security(十二):5. Java Configuration

General support for Java Configuration was added to Spring Framework in Spring 3.1. Since Spring Security 3.2 there has been Spring Security Java Configuration support which enables users to easily configure Spring Security without the use of any XML

java-信息安全(十二)-数字签名【Java证书体系实现】

概述 信息安全基本概念 数字证书 数字证书就是互联网通讯中标志通讯各方身份信息的一串数字,提供了一种在Internet上验证通信实体身份的方式,数字证书不是数字身份证,而是身份认证机构盖在数字身份证上的一个章或印(或者说加在数字身份证上的一个签名).它是由权威机构——CA机构,又称为证书授权(Certificate Authority)中心发行的,人们可以在网上用它来识别对方的身份. 参考地址 http://snowolf.iteye.com/blog/391931 java-信息安全(五)-非

性能测试三:jmeter进阶之图形插件

一.图形化插件的使用 使用Jmeter插件可以更直观的查看tps和响应时间 插件官网: http://jmeter-plugins.org/downloads/all 第一种方法,找到需要的插件下载jar包放到Jmeter的lib/ext目录下 第二种方法,使用Jmeter插件管理器,可以自动下载并安装插件,更加方便简单 使用方法: 1,下载插件管理器对应的jar包,然后放在Jmeter的lib/ext目录下 2,打开Jmeter,选项-插件管理器 3,勾选对应的插件,等待下载完成,点击appl

性能测试四:jmeter进阶之逻辑控制器

常用的逻辑控制器 1,循环控制器:可以设置该控制器内的sampler执行的次数,循环次数与线程的循环次数各自独立 2,if控制器:根据判断条件决定是否执行该控制器内的请求,如果是字符串比较条件,参数和字符串都需要加引号,如"{param}" == "test" 3,随机控制器:随机执行该控制器内的一个请求 4,随机顺序控制器:执行该控制器内的所有请求,顺序随机 5,仅一次控制器:该控制器内的请求只执行一次,无论线程循环多少次 6,switch控制器,设置控制器上的v