Jmeter二次开发
Jmater函数扩展的步骤
1、 导入Jmeter源码,或使用maven项目,引入依赖的jar包
2、 继承AbstractFunction,实现自定义Function
3、 继承JMeterTestCase,对自定义的函数进行单元测试
4、 对自定义函数进行编译打包,并放在lib\ext下
5、 Jmeter ->选项 ->函数助手对话框,选择已开发的函数调用
自定义Function
继上一篇文章已经介绍如何导入Jmeter源码,这里就不做详细介绍,此次主要引用自动生成手机号码为例
import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.samplers.Sampler;
import org.apache.jmeter.threads.JMeterVariables;
public class MobileGenerator extends AbstractFunction {
private static final List<String> desc = new LinkedList<String>();
//定义function名称
private static final String KEY = "__MobileGenerator";
private static String[] telFirst = "134,135,136,137,138,139,150,151,152,157,158,159,130,131,132,155,156,133,153"
.split(",");
//自定义function的描述
static {
desc.add("Name of variable in which to store the result (optional)");
}
private CompoundVariable varName;
//执行部分
public String execute(SampleResult previousResult, Sampler currentSampler) throws InvalidVariableException {
int index = getNum(0, telFirst.length - 1);
String first = telFirst[index];
String second = String.valueOf(getNum(1, 888) + 10000).substring(1);
String thrid = String.valueOf(getNum(1, 9100) + 10000).substring(1);
String mobile = first + second + thrid;
if (varName != null) {
JMeterVariables vars = getVariables();
final String varTrim = varName.execute().trim();
if (vars != null && varTrim.length() > 0) {// vars will be null
// on TestPlan
vars.put(varTrim, mobile);
}
}
return mobile;
}
//设置参数值
public void setParameters(Collection<CompoundVariable> parameters) throws InvalidVariableException {
//校验参数个数 checkParameterCount(Collection<CompoundVariable> parameters, int min, int max)
checkParameterCount(parameters, 0, 1);
//将值存入变量中
Object[] values = parameters.toArray();
if (values.length > 0) {
varName = (CompoundVariable) values[0];
} else {
varName = null;
}
}
@Override
public String getReferenceKey() {
return KEY;
}
@Override
public List<String> getArgumentDesc() {
return desc;
}
private static int getNum(int start, int end) {
return (int) (Math.random() * (end - 1));
}
}
对开发的函数进行单元测试
import static org.apache.jmeter.functions.FunctionTestHelper.makeParams;
import java.util.Collection;
import org.apache.jmeter.engine.util.CompoundVariable;
import org.apache.jmeter.junit.JMeterTestCase;
import org.junit.Test;
public class MobileGeneratorTest extends JMeterTestCase {
@Test
public void test() throws Exception {
MobileGenerator mobileGenerator = new MobileGenerator();
Collection<CompoundVariable> params = makeParams("mobile",null,null);
mobileGenerator.setParameters(params);
String string = mobileGenerator.execute();
System.out.println(string);
}
}
编译并打包
编译并打包到lib\ext目录下,覆盖下之前的ApacheJMeter_functions.jar,重启Jmeter
调用自定义函数
---------------------
作者:Jerry最胖
来源:CSDN
原文:https://blog.csdn.net/qq_27791709/article/details/78952054
版权声明:本文为博主原创文章,转载请附上博文链接!
Jmeter二次开发的更多相关文章
- JMeter二次开发(2)-编写 JSON Assertion 插件
本篇文章主要介绍如何对JMeter进行二次开发,添加自己所需的功能.这里以Json验证为例进行说明.在web接口测试过程中,JSON的应用已经非常普遍,但原声的JMeter并没有提供Json及Json ...
- Jmeter二次开发——自定义函数
在之前的博文中,Jmeter二次开发--基于Java请求,已介绍了Jmeter二次开发的基础情况,上次分享的是java请求开发,今天来分享下Jmeter中的函数开发.聊到Jmeter的函数,知道Jme ...
- JMeter二次开发(1)-eclipse环境配置及源码编译
1.下载src并解压 http://jmeter.apache.org/download_jmeter.cgi 2.获取所需jar包,编译 ant download_jars ant instal ...
- jmeter 二次开发
基于jmeter的java请求的二次开发 常用的方法: ①.addArgument("name", "value") 定义参数 ②.sampleStart ...
- 性能测试基础---jmeter二次开发
·Jmeter的二次开发,常见的有以下几种类型: ·扩展.修改Jmeter已有的组件(源代码) ·扩展.修改Jmeter已有的函数. ·完全自主开发一个新的组件(依赖于Jmeter提供的框架). ·扩 ...
- Jmeter二次开发——基于Java请求
简述 这近几年,越来越多非http的协议需要进行性能测试,包括不仅限于各类rpc.mq.缓存等.对于这些协议,市面上可能没有现成的工具可以直接使用,这个时候,我们可以自己动手,通过编写相应的JavaS ...
- JMeter二次开发环境配置
本文主要介绍如何在Eclipse中配置JMeter开发环境. 一.下载JMeter源码 1.在JMeter官网下载二进制包和源码包: 解压备用: 二进制解压后文件夹名称为“jmeter_release ...
- jmeter二次开发----Loadrunner或Jmeter发送邮件报告
Loadrunner支持Java Vuser,而Jmeter本身就是基于Java开发的,所以两者都可以通过JMail组件实现邮件发送.本人使用的是mail-1.4.7.jar,可以通过下载获得:htt ...
- Jmeter二次开发之代码环境搭建(QQ交流群:577439379)
一.创建项目 1. 分别下载apache3.1 binaries和source两个压缩包,前者为release版本,后者为jmeter最新的源码,下载地址:http://jmeter.apache.o ...
随机推荐
- HTML入门7
这篇来些可能用的比较少的,调试HTML 程序员调试代码常见,遇到问题一切正常,找出问题解决,满足 来了解下HTML调试, 在浏览器解析和显示之前HTML不会被编译成其他形式,只是解析而不是编译因此运行 ...
- HTML5_canvas_填充文本,描边文本
canvas 文本相关 填充文本 pen.fillText("HelloWorld", 100, 100); 文本的(100, 100) 在文本基线处 文本样式 pe ...
- Java 基础:认识&理解关键字 native 实战篇
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 泥瓦匠初次遇见 navicat 是在 java.lang.Object 源码中的一个hashCode方 ...
- 剑指offer——python【第39题】平衡二叉树
题目描述 输入一棵二叉树,判断该二叉树是否是平衡二叉树. 解题思路 平衡二叉树首先是二叉搜索树,且它每个节点的左子树和右子树高度差至多等于1:只要从根节点,依次递归判断每个节点是否满足如上条件即可 ...
- 对SDE中空要素类插入要素,完成后显示的图层特别小
原因是缺少图层Extent或者Extent发生变化,插入完成后需要对图层的Extent进行更新. 调用IFeatureClassManage. UpdateExtent更新范围 参考链接: https ...
- linux磁盘大小获取和文件大小获取
一.获取磁盘大小(给入的是文件夹绝对路径):check_disk_available(QString path) { struct statfs diskinfo; unsigned long lon ...
- cve-2018-4878漏洞复现
CVE-2018-4878Flash 0day漏洞1.漏洞概述2018年2月1号,Adobe官方发布安全通报(APSA18-01),声明Adobe Flash 28.0.0.137及其之前的版本,存在 ...
- WEB日期控件
http://www.cnblogs.com/jiangbei/p/7270788.html 日期控件——my97 <div class="form-group"> ...
- redis加固
一.背景描述 1.漏洞描述 Redis 因配置不当存在未授权访问漏洞,可以被攻击者恶意利用. 在特定条件下,如果 Redis 以 root 身份运行,黑客可以给 root 账号写入 SSH 公钥文件, ...
- Autofac之生命周期和事件
Autofac为注册的类型对象提供了一套生命周期事件,覆盖了一个类型从注册到最后“释放”的一套事件.有了这些事件,我们可以相对方便的在类型对象的各个阶段进行AOP操作. builder.Registe ...