转载地址:http://my.oschina.net/xishuixixia/blog/83348
1.JMeter介绍
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现。JMeter可以用于测试静态或者动态资源的性能(文件、Servlets、Perl脚本、java对象、数据库和查询、ftp服务器或者其他的资源)。JMeter用于模拟在服务器、网络或者其他对象上附加高负载以测试他们提供服务的受压能力,或者分析他们提供的服务在不同负载条件下的总性能情况。
2.启动JMeter
进入JMeter的bin目录,然后执行:
sudo ./jmeter.sh
3.原始的测试方法
在没有使用JMeter前,我对hetty的性能测试,都是通过自己写多线程代码去完成的,相当苦逼,相当麻烦,不过也能锻炼自己的编码能力,我先贴出比较原始的测试方法,如下:
public class RpcHessianClient {
public static void main(String[] args) {
String url = "http://localhost:8081/apis/hello";
HessianProxyFactory factory = new HessianProxyFactory();
ExecutorService es = Executors.newFixedThreadPool(10);
int size = 1000000;
final CountDownLatch cdl = new CountDownLatch(size);
try {
long start = System.currentTimeMillis();
factory.setUser("client1");
factory.setPassword("client1");
factory.setOverloadEnabled(true);
final Hello basic = (Hello) factory.create(Hello.class,url);
for (int i = 0; i < size; i++) {
es.submit(new Runnable() {
@Override
public void run() {
String u = basic.hello("guolei");
//System.out.println(u);
cdl.countDown();
}
});
}
cdl.await();
long time = System.currentTimeMillis() - start;
System.out.println("SayHello:");
System.out.println("耗时:" + (double) time / 1000 + " s");
System.out.println("平均:" + ((double) time) / size + " ms");
System.out.println("TPS:" + (double) size / ((double) time / 1000));
// System.out.println("Hello, " + s.getMail());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
es.shutdown();
}
}
}
4.使用JMeter来进行现代化测试
我们要使用JMeter来测试hetty,由于hetty是一款基于hessian和netty的RPC产品,我们必须使用JMeter的JAVA请求功能来进行测试,Java请求是指JMeter对Java Class进行性能测试。首先我们需要编写测试用例:
1)新建JAVA工程。
2)引入ApacheJMeter_java.jar 、ApacheJMeter_core.jar以及测试所需要的jar(jar包在JMeter目录的lib/ext目录中)。
3)继承AbstractJavaSamplerClient类开始编写主业务。如下:
public class HettyTest extends AbstractJavaSamplerClient {
private static String label = "hettyTest";
/**
* 执行runTest()方法前会调用此方法,可放一些初始化代码
*/
public void setupTest(JavaSamplerContext arg0) {
}
/**
* JMeter测试用例入口
*/
public SampleResult runTest(JavaSamplerContext arg0) {
SampleResult sr = new SampleResult();
sr.setSampleLabel(label);
try { // 这里调用我们要测试的java类,这里我调用的是一个Test类
Map<String,String> map = getDefaultParameters().getArgumentsAsMap();
sr.sampleStart(); // 记录程序执行时间,以及执行结果
Test.execute(map.get("ip"),map.get("port"));
sr.sampleEnd();
sr.setSuccessful(true);
} catch (Throwable e) {
sr.setSamplerData(e.getMessage());
e.printStackTrace();
sr.setSuccessful(false); // 用于设置运行结果的成功或失败,如果是"false"则表示结果失败,否则则表示成功
}
return sr;
}
/**
* JMeter界面中可手工输入参数,代码里面通过此方法获取
*/
public Arguments getDefaultParameters() {
Arguments args = new Arguments();
args.addArgument("ip", "localhost");
args.addArgument("port", "8081");
return args;
}
/**
* 执行runTest()方法后会调用此方法.
*/
public void teardownTest(JavaSamplerContext arg0) {
}
}
Test类是我测试逻辑,如下:
public class Test {
public static void execute(String ip,String port) throws MalformedURLException {
String url = "http://"+ip+":"+port+"/apis/hello";
HessianProxyFactory factory = new HessianProxyFactory();
factory.setUser("client1");
factory.setPassword("client1");
factory.setOverloadEnabled(true);
final Hello basic = (Hello) factory.create(Hello.class, url);
//System.out.println("SayHello:" + basic.hello("guolei"));
}
}
代码中都有注释,按照注释实际操作去理解。 System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性。
4)将项目打为jar包,放到JMeter目录下的lib/ext下(将项目依赖的jar也放到此目录)。
5)重启JMeter。
5.JMeter使用
1)选中主界面左侧的“测试计划”,右键菜单->添加->Threads(Users)->线程组。
2)再选中刚才新增的"线程组",右键菜单->添加->Sampler->Java请求。
3)再选中刚才新增的"Java请求",右键菜单->添加->监视器->聚合报告。
4)Ctrl + R,开始运行, Ctrl + E,清除历史结果。
6.查看测试结果
聚合报告中基本已经包含我们所关心的几个数据了:
Samples -- 本次场景中一共完成了多少个Transaction
Average -- 平均响应时间
Median -- 统计意义上面的响应时间的中值
90% Line -- 所有transaction中90%的transaction的响应时间都小于xx
Min -- 最小响应时间
Max -- 最大响应时间
PS: 以上时间的单位均为ms
Error -- 出错率
Troughput -- 吞吐量,单位:transaction/sec
KB/sec -- 以流量做衡量的吞吐量
分享到:
相关推荐
使用jmeter测试java请求,博客地址http://blog.csdn.net/qq_34021712/article/details/78870407
JMeter进行性能测试实例Java请求+参数化
jar包直接放进 jmeter安装目录的lib/ext 下即可使用,添加java请求,老铁赶紧下!!!!
利用jmeter java请求开启端口转发对远程数据库进行压力测试.docx
Jmeter Java Sampler压力测试
jmeter java测试工具
使用JMeter进行性能测试
自己整理的mysql性能测试脚本,需要的同学,可以下载使用
jmeter4.0进行微信小程序测试(jmeter性能测试教程) jmeter4.0进行微信小程序测试详细步骤指导书jmeter4.0进行微信小程序测试详细步骤指导书jmeter4.0进行微信小程序测试详细步骤指导书
Jmeter性能测试报告模板
Get清风利用jmeter java请求开启端口转发对远程数据库进行压力测试.docx
Apache JMeter是Apache组织开发的基于Java的压力测试工具。...JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能、多应用于c/s架构的测试........
jmeter可以使用第三方的录制工具(badboy)或者使用自身的软件的录制功能进行,jmeter录制原理:是通过代理http服务器抓取用户操作网站过程中的链接。 jmeter可以在设置http代理服务器的时候,过滤掉不需要的css、...
性能测试工具JMeter书籍(6本)目录知识点(思维导图加图)整理.rar 根据如下6本性能测试、JMeter书籍收集整理重点知识点: 2012年《零成本实现Web性能测试:基于Apache JMeter》 2016年《大型IT系统性能测试入门...
jmeter-压力测试报告-超细,Jmeter性能测试工具使用总结
Jmeter java reqest demo 项目中包含TCP, Http, RocketMQ请求.
Jmeter接口性能及自动化测试实战(基于5.2.1版本),完整版视频教程下载!...学完之后,您将能够借助Jmeter工具中的所有可用功能来设计健壮的性能测试用例,并且可以通过使用不同的负载参数来监视应用程序的性能。
《零成本实现Web性能测试:基于Apache JMeter》首先介绍基础的性能测试理论,接着详细介绍如何使用JMeter完成各种类型的性能测试。实战章节中作者以测试某大型保险公司电话销售系统为例,手把手教会读者如何用JMeter...