jmeter测试java接口测试_简单易学的测试攻略:JMeter测试Java请求示例
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,大家可以到官网下载源代码和查看相关文档。
关于使用JMeter进行JDBC数据库测试、HTTP请求接口测试、结合Badboy录制功能进行网站性能测试等内容,网上的资料比较丰富,这里就暂时不做介绍了。更实用和灵活的场景,是实用我们自己编写的jar包进行测试,这也就是“Java请求”方式的测试。这里主要记录一下我在学习这种测试方式时遇到的一些问题,和总体流程,算作一个记录和小总结。
一、核心步骤
1.创建一个Java工程;
在eclipse里面新建一个工程:JavaForJMeter
2.将JMeter的lib目录下的jar文件添加进此工程的Build Path;
ApacheJMeter_core.jar(必须)、ApacheJMeter_java.jar(必须)、avalon-framework-4.1.4.jar、jorphan.jar、logkit-2.0.jar,后台3个为本地调试需要用到的包文件。创建一个类并实现JavaSamplerClient接口或继承AbstractJavaSamplerClient,并重写;
构建待测试类,添加类Hello,代码如下:
package com.test.webservice;
public class Hello {
public String sayHello()
{
return "Hello";
}
public String sayHelloToPerson(String s)
{
if(s == null || s.equals(""))
s = "nobody";
return (new StringBuilder()).append("Hello ").append(s).toString();
}
public int sum(int a,int b)
{
return a+b;
}
}
public Arguments getDefaultParameters();设置可用参数及的默认值;
public void setupTest(JavaSamplerContext arg0):每个线程测试前执行一次,做一些初始化工作;
public SampleResult runTest(JavaSamplerContext arg0):开始测试,从arg0参数可以获得参数值;
public void teardownTest(JavaSamplerContext arg0):测试结束时调用;
添加类perftest,并继承AbstractJavaSamplerClient,并添加代码如下:
package com.test.webservice;
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;
import com.test.webservice.Hello;
public class perftest extends AbstractJavaSamplerClient {
private String a;
private String b;
/** Holds the result data (shown as Response Data in the Tree display). */
private String resultData;
// 这个方法是用来自定义java方法入参的。
// params.addArgument("num1","");表示入参名字叫num1,默认值为空。
//设置可用参数及的默认值;
public Arguments getDefaultParameters() {
Arguments params = new Arguments();
params.addArgument("num1", "");
params.addArgument("num2", "");
return params;
}
//每个线程测试前执行一次,做一些初始化工作;
public void setupTest(JavaSamplerContext arg0) {
}
//开始测试,从arg0参数可以获得参数值;
public SampleResult runTest(JavaSamplerContext arg0) {
a = arg0.getParameter("num1");
b = arg0.getParameter("num2");
SampleResult sr = new SampleResult();
sr.setSampleLabel( "Java请求哦");
try {
sr.sampleStart();// jmeter 开始统计响应时间标记
Hello test = new Hello();
// 通过下面的操作就可以将被测方法的响应输出到Jmeter的察看结果树中的响应数据里面了。
resultData = String.valueOf(test.sum(Integer.parseInt(a), Integer
.parseInt(b)));
if (resultData != null && resultData.length() > 0) {
sr.setResponseData("结果是:"+resultData, null);
sr.setDataType(SampleResult.TEXT);
}
// System.out.println(resultData);
sr.setSuccessful(true);
} catch (Throwable e) {
sr.setSuccessful(false);
e.printStackTrace();
} finally {
sr.sampleEnd();// jmeter 结束统计响应时间标记
}
return sr;
}
//测试结束时调用;
public void teardownTest(JavaSamplerContext arg0) {
// System.out.println(end);
// System.out.println("The cost is"+(end-start)/1000);
}
// main只是为了调试用,最后打jar包的时候注释掉。
/*
public static void main(String[] args)
{ // TODO Auto-generated method stub
Arguments params = new Arguments();
params.addArgument("num1", "1");//设置参数,并赋予默认值1
params.addArgument("num2", "2");//设置参数,并赋予默认值2
JavaSamplerContext arg0 = new JavaSamplerContext(params);
perftestbbb test = new perftestbbb();
test.setupTest(arg0);
test.runTest(arg0);
test.teardownTest(arg0);
}
*/
}
4.Export为Runnable Jar File:Hello.jar
5.将此Hello.jar包放入JMETER_HOME\lib\ext目录;
6.以管理员身份打开JMeter;
7.创建线程组、Java Request、查看结果树,进行测试;
总结:
这里有两点需要注意:
1. 如果你的jar依赖了其他第三方jar,需要将其一起放到lib/ext下,否则会出现ClassNotFound错误,这个问题也是困扰了我好久;
2. 如果在将jar放入lib/ext后,你还是无法找到你编写的类,且此时你是开着JMeter的,则需要重启一下JMeter。
以上就是使用JMeter的Java请求方式进行一个测试计划构建的全过程了,都是比较基础的方法,如果需要什么额外的功能还可以慢慢学习。虽然自己也有写多线程并发的客户端测试代码,并自己收集response time等,计算TPS,但显然使用JMeter的方式更加方便,因为你只需要按照单线程的方式去实现你的测试业务,也无需添加各种埋点收集数据。
综上,感觉JMeter还是很强大的,最近打算多学习一点,对以后写代码,自我测试性能也是很有帮助的,再配合jProfiler的使用,可以很好的保证Java代码的效率和性能。当然,工具只能“锦上添花”,最根本的还是需要我们自己可以编写出高质量的代码!
jmeter测试java接口测试_简单易学的测试攻略:JMeter测试Java请求示例相关推荐
- 返利是怎么返的_天猫超市抢券攻略
先领券,再下单.省钱不止一点点! 你购物,我掏钱.天猫淘宝任你选! 荐好友,领佣金.你省我省大家省! 加微信:sqgwkk.一省到底! 在家的宝妈有什么可以兼职工作_返利是怎么返的_天猫超市抢券攻略 ...
- Interview:Java岗位面试—面试求职攻略之一个JAVA程序员面试心得(非常值得收藏)
Interview:Java岗位面试-面试求职攻略之一个JAVA程序员面试心得(非常值得收藏) 导读 据网上资料显示:2018年互联网行业是寒冬,其他行业日子也不好过.各个互联网大厂纷纷缩招减员,严格 ...
- 一个简单的选品攻略,Shopee印尼站点卖家必看
shopee印尼站是属于小语种市场现阶段适用发布英文商品,上架后会将商品标题相继译成本地语言表达,Shopee也会分配本地客服来回应顾客的询盘. 在东南亚的多个电商市场中,印尼市场是较大的,近些年印尼 ...
- java毕业设计峨眉山景点介绍及旅游攻略推荐平台Mybatis+系统+数据库+调试部署
java毕业设计峨眉山景点介绍及旅游攻略推荐平台Mybatis+系统+数据库+调试部署 java毕业设计峨眉山景点介绍及旅游攻略推荐平台Mybatis+系统+数据库+调试部署 本源码技术栈: 项目架构 ...
- java地位_这12条理由告诉你,为什么Java的地位无法被撼动!
从招聘信息你就可以知道,跟iOS相关的开发有2500个左右的招聘,Java则有17000多个.数据不一定能完美的衡量技术的价值,但是在不断推陈出新的技术推广压力下,Java职位是iOS的7倍之多可以说 ...
- java江湖2新手开局攻略_放置江湖完美开局攻略
<放置江湖>中一个好的开局是非常重要的,小编这里就来和大家分享下其关于开局的一些攻略心得,以供参考. 具体如下: 1. 初始属性建议:目前可见的最重要属性有悟性.根骨和福缘.悟性影响向师傅 ...
- java丧尸围城攻略_丧尸围城全关卡流程攻略 丧尸围城怎么通关
丧尸围城全关卡流程攻略 其实游戏全部流程不是长,只要在游戏中呆上72个小时就算通关了,当然这72小时是游戏里的时间,但是如何通关和怎么样完美通关就有另一说了,我在玩1周目的时候还不是很明白玩法,只触发 ...
- 阿里10W字JAVA面试手册(面试题+简历攻略)
金九银十在即,想跳槽大厂的小伙伴们还在为面试发愁吗?10W字阿里JAVA面试手册,总有一篇可以帮助你解决烦恼. 基础篇 1.Java语言有哪些特点 2.面向对象和面向过程的区别 3.八种基本数据类型的 ...
- 机试记不住头文件_计算机考研机试攻略
目录 写在前面的话 2 关于N诺 4 如何使用本书? 5 第一章 从零开始 8 1.1机试分析 8 1.2 IDE的选择与评测结果 10 1.3 DreamJudge的使用 11 1.4输入输出技巧 ...
最新文章
- 判断是否移动端设备的JS代码,超短,百度都用它
- (0051)iOS开发之沙盒(sandbox)机制和文件操作(一)
- 【SQL提数】case..when..then..end的使用
- Ubuntu编写开机自启动脚本(转载)
- 免费送新款华为笔记本 ! !不爱可折现!
- jquery: JS淘宝网产品图片局部放大代码
- 《精通ArcGIS Server 应用与开发》——1.5 ArcGIS 10时态
- ClassUtils常用方法总结,java核心技术第九版百度网盘
- stringByReplacingCharactersInRange: withString: 实现字符串删除,替换
- SpringBoot 实现接口参数加密解密功能
- 怎么实现单点登录?面试必问!
- python arduino 蓝牙_如何使用蓝牙模块从Android设备控制Arduino
- c语言如何读文件,如何正确用C语言读取文件
- Android Thermal
- C语言实现三子棋(代码详解)
- 一年之计在于春丨看, 农田里的科技范儿
- MySQL- 经典面试题
- vs2019生成的exe文件在别人电脑运行不了
- tcpdump win
- 区块链学习(8) EOS环境安装和智能合约部署实战(绝对干货!)
热门文章
- pandas改变dataframe的列的顺序、改变数据列的排列次序
- Pandas判断dataframe是否为空
- R语言数据横向合并cbind函数实战
- R语言aggregate函数数据聚合实战
- R语言数据类型及数据类型判断
- 巴菲特+查理芒格+投资理论+经典语录+给韭菜的启示
- 3.5.1 插入 3.5.2 修改
- STM32添加项目所需要的工程文件
- demo flink写入kafka_Flink结合Kafka实时写入Iceberg实践笔记
- apache php 执行shell,PHP执行普通shell命令流程解析