jmeter自定义java_【脚本开发】:在jmeter中使用自定义的java脚本
转、
一、在java编辑器(此处以eclipse为例)中新建一个项目-包-类testnumber;
二、生成jmeter可执行的jar包时,必须将jmeter目录下的lib/ext中ApacheJMeter_core.jar和ApacheJMeter_java.jar两个jar包拷贝到项目中,引入这两个jar包;
三、类testnumber继承AbstractJavaSamplerClient类,AbstractJavaSamplerClient存在于ApacheJMeter_java.jar这个JAR包中,引用即可调用;
四、类testnumber继承AbstractJavaSamplerClient类的时候,需要实现四个方法,分别是
setupTest():初始化方法,用于初始化性能测试时的每个线程;//相当于LR的init();
getDefaultParameters():主要用于设置传入的参数;
runTest():为性能测试时的线程运行体;//相当于LR的ACTION
teardownTest():测试结束方法,用于结束性能测试中的每个线程。//相当于LR的end();
五,具体实现的代码如下:
packagetest;importorg.apache.jmeter.config.Arguments;importorg.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;importorg.apache.jmeter.protocol.java.sampler.JavaSamplerContext;importorg.apache.jmeter.samplers.SampleResult;public class TestNum extendsAbstractJavaSamplerClient{privateSampleResult results;/*** 输入的数字*/
privateString inNum;/*** 需要匹配的数字*/
privateString resultNum;/*** 初始化方法,初始化性能测试时的每个线程
* 实际运行时每个线程仅执行一次,在测试方法运行前执行,类似于LoadRunner中的init方法*/
public voidsetupTest(JavaSamplerContext jsc) {
results= newSampleResult();
inNum= jsc.getParameter("inNum", "");
resultNum= jsc.getParameter("resultNum", "");if (inNum != null && inNum.length() > 0){
results.setSamplerData(inNum);
}if (resultNum != null && resultNum.length() > 0){
results.setSamplerData(resultNum);
}
}/*** 设置传入参数
* 可以设置多个,已设置的参数会显示到Jmeter参数列表中*/
publicArguments getDefaultParameters() {
Arguments params= newArguments();
params.addArgument("inNum","");
params.addArgument("resultNum", "");returnparams;
}/*** 性能测试时的线程运行体
* 测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于Loadrunner中的Action方法*/
publicSampleResult runTest(JavaSamplerContext arg0) {boolean flag = false;//定义一个事务,表示这是事务的起始点,类似于Loadrunner中的lr.start_transaction
results.sampleStart();for (int i = inNum.length();--i >= 0;){if (!Character.isDigit(inNum.charAt(i))){
flag= false;
}else{
flag= true;
}
}for (int j = resultNum.length();--j >= 0;){if (!Character.isDigit(resultNum.charAt(j))){
flag= false;
}else{
flag= true;
}
}//定义一个事务,表示这是事务的结束点,类似于Loadrunner中的lr.end_transaction
results.sampleEnd();if(flag){
Integer num=Integer.parseInt(inNum);
Integer rsNum=Integer.parseInt(resultNum);if (num ==rsNum){
results.setDataEncoding("UTF-8");//因为响应的数据有中文,所以最好先设置编码
results.setResponseData("恭喜你,答对了O(∩_∩)O~\n答案是【"+resultNum+"】");//响应数据,对应结果树,其他response code等可以自己点出来
results.setSuccessful(true);//告诉系统返回正确还是错误
} else if (num >rsNum){
results.setDataEncoding("UTF-8");
results.setResponseData("好像大了点~~~~(>_
results.setSuccessful(false);
}else{
results.setDataEncoding("UTF-8");
results.setResponseData("好像小了点~~~~(>_
results.setSuccessful(false);
}
}else{
results.setDataEncoding("UTF-8");//results.setResponseData("请输入数字:~~~~(>_
results.setSuccessful(false);
}returnresults;
}/*** 测试结束方法,结束测试中的每个线程
* 实际运行时,每个线程仅执行一次,在测试方法运行结束后执行,类似于Loadrunner中的End方法*/
public voidteardownTest(JavaSamplerContext arg0) {
}
}
六、在eclipse中生成jar包:包(右键选择EXPORT)
七、选择jar存储路径,然后将它拷贝到Jmeter的安装目录lib/ext下面;
八、然后就是按照正产的压测就可以了,结果:
以上。
jmeter自定义java_【脚本开发】:在jmeter中使用自定义的java脚本相关推荐
- Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告
Polyworks脚本开发学习笔记(二二)-调取视角用脚本自动生成报告 Polyworks中,3D场景的视图可用标准视角及等轴侧视角.项目视角等方式调用,也可以用txt格式保存下来调用,如果以脚本的形 ...
- JMeter工具:常用协议脚本开发(BeanShell Sampler, Debug Sampler, FTP/Java/JDBC请求, JUnit request, SOAP/XML-RPC)
目录 1. BeanShell Sampler 1.1 BeanShell Timer:BeanShell定时器 1.2 BeanShell PreProcessor:BeanShell前置处理器 1 ...
- 学会Python就能做游戏脚本开发?别天真了!—— 关于游戏脚本的3个质疑
现如今想从事和游戏相关的工作,例如游戏开发或游戏脚本策划的伙伴越来越多. 很多想从事脚本开发的伙伴有如下3点质疑: 1.学会Python就可以从事游戏脚本的工作吗? 2.脚本开发只需要学习Python ...
- php linux脚本文件,Unix/Linux中如何直接执行PHP脚本文件?
使用Linux系统的服务器都有搭建完整的PHP环境,因此有些用户会用PHP去写一些执行自动化任务的脚本,可是发现每次执行PHP脚本都需要使用php myscript.php的方式,感觉有点麻烦.其实我 ...
- Android中自定义View的研究 -- 在XML中引用自定义View
如果在一直使用SetContentView(new HellwView(this)觉得总是少了一点东西,少了什么了,失去了Android中使用XML定义组件的便携性,这种感觉让人很不爽,呵呵,在这节里 ...
- shell脚本和python脚本和go脚本的区别_Nodejs中调用系统命令、Shell脚本和Python脚本的方法和实例-Go语言中文社区...
NodeJS 子进程提供了与系统交互的重要接口,其主要 API 有: 1)标准输入.标准输出及标准错误输出的接口: child.stdin 获取标准输入 child.stdout 获取标准输出 chi ...
- 自定义权限 android,如何在Android中使用自定义权限?
蛊毒传说 我创建了一个测试代码,您可以使用它并测试您的权限.有两个应用程序PermissionTestClient声明权限并使用此权限保护其活动.这是清单文件:<?xml version=&qu ...
- Android实现自定义相册,在Android Gallery App中创建自定义相册
您可以使用这种方式在Gallery应用中创建相册.该名称显示为"app images". String path = Environment.getExternalStorageD ...
- 自定义icon,在iconfont.css中引入自定义图标
现有需求将png图标直接引入iconfont.css中,例如在el-input的icon中直接使用,解决办法如下: 第一步:找到icons中的iconfont.css 第二步:引入图标,iconfon ...
- arcgispython脚本开发工具_06-05【求助】利用python脚本语言开发新的Arctoolbox工具
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 下面是一段python代码,要如何才能在Arctoolbox中实现呢? #-*- encoding:UTF-8 -*- #!/usr/bin/env py ...
最新文章
- python中的引用、浅拷贝和深拷贝
- 案例:文件下载需求:1. 页面显示超链接 2. 点击超链接后弹出下载提示框 3. 完成图片文件下载||中文文件问题
- sql server 语句自动补齐
- UIScrollView的delegate方法妙用之让UICollectionView滑动到某个你想要的位置
- sql-labs page2(21~38) 解题过程记录
- 数据库:MySQL、HBase、ElasticSearch三者对比
- JAVA之运算符优先级
- github高级搜索技巧_百度搜索引擎高级使用技巧
- 佳明或已支付勒索金,获得 WastedLocker的解密密钥
- for循环 与 while循环
- 解决远程主机不能cv问题
- 数据科学 IPython 笔记本 一、TensorFlow
- matlab版大学物理学,MATLAB可视化大学物理学(第2版)
- 【PS】如何把图片变成透明
- python用两分钟告诉你,怎样暴力破解隔壁老王的 WiFi 密码
- mysql导入数据出现--unknown command '\'
- MSPA提取生态源地过程
- [技术手册] 浅尝超融合之Nutanix(下)安装篇
- oracle+锁+杀不死,oracle kill -9 会话
- 1.Nexus 5x 刷机Android8.1 root-《frida安卓逆向协议爬虫》
热门文章
- JAVA面向对象程序设计--老男孩IT
- Curve对象的GetOffsetCurves的偏移
- 平板支撑plank_核心肌肉力量
- 操作系统---内存管理
- Netfilter的Mangle机制
- Java时间日期格式转换Date转String和String转Date
- 沉没的蜀山---探索东方神话传说中的泰坦尼克
- 私人 数据库 服务器 小型_我应该散列私人数据吗?
- 在html中 段落标记p中使用属性,HTML的段落标记中,标注文本以原样显示的是标记 P 答案:错...
- 重生玄幻练制超级计算机小说,四本好看过瘾的转世重生类玄幻小说,熬夜也要看,根本停不下来...