JMeter Java工程测试

1.eclipse中新建工程

2.导入需要的jar包

从JMeter安装目录lib/ext中两个jar包buildPath到Java project中,分别是“ApacheJMeter_core.jar"和“ApacheJMeter_java.jar”

3.编写JMeter辅助函数

JMeter Java Sampler 介绍

  执行的先后顺序:

    getDefaultParameters()——> setup Test(javaSamplerContext context()——>runTest(javaSamplerContext context)——>teardownTest(javaSamplerContext)
    获取默认参数——>初始化——>运行——>结束
 

  常用的方法:

  1)addArgument(*name*,*value*)定义参数

  2)sampleStart()定义事物的开始,类似于LR的Lr start transaction,和LR一样事物间不要放无关代码
  3)sampleEnd()定义事物的结束,类似于LR的lr_end_transation
  4)setSuccessful(true,false)设置运行结果的成果或失败,jmeter统计成果失败,在聚合报告中能够体现
 

  代码示例:

package com.jmeter_test;
import org.apache.jmeter.config.Arguments;
import org.apache.jmeter.protocol.java.sampler.AbstractJavaSamplerClient;
import org.apache.jmeter.protocol.java.sampler.JavaSamplerContext;
import org.apache.jmeter.samplers.SampleResult; /**
* Jmeter自定义脚本测试类.
* 该脚本功能为发送输入框中的字符串。
* @param <log>
* @param <log>
* @param <Logger>
*/
public class jmeter_test<log, log, Logger> extends AbstractJavaSamplerClient {
/**
* 输出到Jmeter控制台的日志类.
* 需要引用Jmeter lib目录下的logkit-2.0.jar.
*/
private Logger log = getLogger();
private SampleResult results; // 运行结果.
private String testString; // Jmeter控制台输入的参数. /**
* 设置传入的参数,可以设置多个,已设置的参数会显示到Jmeter的参数列表中.
*/
public Arguments getDefaultParameters() {
log.info("execute getDefaultParameters...");
Arguments params = new Arguments();
/*
* 定义一个参数,显示到Jmeter的参数列表中,
* 第一个参数为参数默认的显示名称,
* 第二个参数为默认值
*/
params.addArgument("testStringing", "");
return params;
} /**
* 初始化方法,实际运行时每个线程仅执行一次,在测试方法运行前执行,
* 类似于LoadRunner中的init方法.
*/
public void setupTest(JavaSamplerContext arg0) {
log.info("start execute setupTest...");
results = new SampleResult();
testString = arg0.getParameter("testString", "");
if (testString != null && testString.length() > 0) {
results.setSamplerData(testString);
}
} /**
* 测试执行的循环体,根据线程数和循环次数的不同可执行多次,类似于LoadRunner中的Action方法
*/
public SampleResult runTest(JavaSamplerContext arg0) {
log.info("execute runTest...");
//定义一个事务,表示这是事务的起始点,类似于LoadRunner的lr.start_transaction
// results.sampleStart();
//定义一个事务,表示这是事务的结束点,类似于LoadRunner的lr.end_transaction
// results.sampleEnd();
if(testString.length() < 5){
log.info("fail...");
//用于设置运行结果的成功或失败,如果是"false"则表示结果失败,否则则表示成功
results.setSuccessful(false);
} else {
log.info("testStringing is\t "+testString);
results.setSuccessful(true);
}
return results;
}
/**
* 结束方法,实际运行时每个线程仅执行一次,在测试方法运行结束后执行,<br>
* 类似于LoadRunner中的end方法.
*/
public void teardownTest(JavaSamplerContext arg0) {
}
/**main函数用于本地调试,打包时要注释掉*/
//*
public static void main(String[] args)
{
Arguments params = new Arguments();
params.addArgument("testString", "51zxw");//设置参数,并赋予默认值1
JavaSamplerContext arg0 = new JavaSamplerContext(params);
jmeter_test test = new jmeter_test();
test.setupTest(arg0);
test.runTest(arg0);
test.teardownTest(arg0);
}/**/
}

4.将Java项目导出成jar

  放置于$jmeter安装目录$/lib/ext/下,其他依赖的jar放置于$安装目录/lib/ext下

5.运行脚本

  1)选中testplan,添加线程组
  2)再选中刚才新增的“线程组”,添加sampler——》java请求
  3)再选中刚才新增的“java请求“,添加监视器
  4)在“java请求”选项卡中可以选择你想测试的类名,在“线程组”选项中可以输入想循环的次数及并发数

  

JMeter 压测基础(四)——Java工程测试的更多相关文章

  1. JMeter压测基础(三)——Mysql数据库

    JMeter压测基础(三)——Mysql数据库 环境准备 mysql驱动 JMeter jdbc配置 JMeter jdbc请求 1.下载mysql驱动:mysql-connector-java.ja ...

  2. Jmeter压测基础(二)——Badboy功能、Jmeter参数化、检查点、集合点、动态关联、图形监控

    Badboy 以下稍微介绍一下badboy的部分功能: 1.Record;play(badboy打开后默认是recording状态) 2.Assertion(检查点/断言) 3.Variable: t ...

  3. jmeter压测过程中报java.lang.NoClassDefFoundError: org/bouncycastle/jce/provider/BouncyCastleProvider

    由于在java中添加了第三方安全策略文件,具体请看https://www.cnblogs.com/mrjade/p/10886378.html,导致在用jmeter压测过程中会遇到以下错误 解决办法: ...

  4. 性能测试Jmeter压测ZooKeeper-自定义java请求

     要想通过自定义java请求来压测ZooKeeper,那么我们就需要做两件事情,第一我们需要知道java如何操作ZooKeeper,第二就是怎么能将我们写的jar包让jmeter识别,首先我们先来干第 ...

  5. Jemter 压测基础(一)——基本概念、JMeter安装使用、分布式测试、导出测试结果、编写测试报告

    Jemter   压测基础(一) 1.压力测试的基本概念: 1.吞吐率(Requestspersecond) 服务器并发处理能力的量化描述,单位是reqs/s,指的是某个并发用户数下单位时间内处理的请 ...

  6. 【Java分享客栈】未来迈向高级工程师绕不过的技能:JMeter压测

    前言 因为工作需要,久违的从自己的有道云笔记中去寻找压测相关的内容,翻开之后发现还不错,温故一遍后顺便整理出来分享给大家. 题外话,工作8年多,有道云笔记不知不觉都6G多了,扫一眼下来尽是云烟过往,竟 ...

  7. JMeter压测“java.net.BindException: Address already in use: connect”解决方法

    之前在windows机上用JMeter压测,50并发下出现大量接口报“java.net.BindException: Address already in use: connect”错误. 从字面的意 ...

  8. 一文揭秘测试平台中是如何将测试用例一键转化Jmeter压测脚本

    ​    ​接上篇,一键转化将接口测试平台测试用例转化成Jmeter压测脚本思路,这里我首先在java 上面做了一个简单的实验,看看 转化的中间遇到的问题,这里呢,我只是给了一个简单的demo 版本, ...

  9. windows下Jmeter压测端口占用问题

    https://blog.csdn.net/weixin_43757847/article/details/88188091 1 前情提要人脸识别项目中,云平台新增了人脸识别的校验接口.考虑到存在大量 ...

随机推荐

  1. 洛谷P3343 [ZJOI2015]地震后的幻想乡 [DP,概率期望]

    传送门 思路 题目给了一个提示:对于\(n\)个\([0,1]\)的随机变量,其中第\(k\)小的期望大小是\(\frac{k}{n+1}\). 这引导我们枚举边的相对大小的全排列,然后求最小生成树 ...

  2. 网络流24题——圆桌问题 luogu 3254

    题目传送门:这里 这是网络流24题里最简单的一道,我们从这里开始 虽然是网络流24题之一,但可以不用网络流... 本题采用贪心即可 有一个很显然的思想:在分配每一组时,我们都应当优先分配给当前可容纳人 ...

  3. SQL数据库分页OFFSET FETCH NEXT

    SELECT * FROM dbo.UMS_System_Menu AS USM ORDER BY USM.MenuCode OFFSET ROW --跳过前10条 ROW ONLY --取20条

  4. android setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds区别

    手工设置文本与图片相对位置时,常用到如下方法: setCompoundDrawables(left, top, right, bottom) setCompoundDrawablesWithIntri ...

  5. Hbase合并Region的过程中出现永久RIT的解决

    在合并Region的过程中出现永久RIT怎么办?笔者在生产环境中就遇到过这种情况,在批量合并Region的过程中,出现了永久MERGING_NEW的情况,虽然这种情况不会影响现有集群的正常的服务能力, ...

  6. HBase总结 LSM理解

    转载的文章,觉得写的比较好 讲LSM树之前,需要提下三种基本的存储引擎,这样才能清楚LSM树的由来: 哈希存储引擎  是哈希表的持久化实现,支持增.删.改以及随机读取操作,但不支持顺序扫描,对应的存储 ...

  7. ssl证书专题(3):创建CA和申请证书

    请看:  https://www.cnblogs.com/mingzhang/p/8949541.html

  8. 禁用大陆ip段

    https://www.ip2location.com/free/visitor-blocker 有 .htaccess web.config等 以iis为例 打开C:\Windows\System3 ...

  9. React十进制和二进制转换的实现和分析

    [描述] 模仿官方文档的摄氏度和华氏度的转换,实现十进制和二进制的互换. [实现] import React from 'react'; import ReactDOM from 'react-dom ...

  10. C++ 配置文件类的封装

    有时开发项目,需要对数据库等配置放到程序对外面作为配置文件,配置文件对读取 ConfigManager.h /* * ConfigManager.h * * Created on: 2018年7月28 ...