来源:http://wangym.iteye.com/blog/731729
看了两篇如何使用JMeter在HTTP请求及数据库方面做性能测试的文章(如下两个链接),感受到这款工具的强大及易用。我在这里延续下,对JMeter里另外一种常用的测试类型:"Java请求",做个入门级的介绍。
http://www.ibm.com/developerworks/cn/java/l-jmeter/
http://www.ibm.com/developerworks/cn/opensource/os-pressiontest/
"Java请求"是指JMeter对Java Class进行性能测试。在没有使用JMeter这类工具前,我对Class的性能测试,基本都是通过自己写个循环,然后单线程或并发着去运行,最终输出整体所耗时间。
一、启动JMeter
首先下载:
http://jakarta.apache.org/site/downloads/downloads_jmeter.cgi
无论是Linux/WIndows,最简单的方法是下载Binary版本
启动图形界面方法:
Linux下运行 $安装目录/bin/jmeter.sh
Windows下运行 $安装目录/bin/jmeter.bat
二、编写用例
针对"Java请求"类型的测试,需要基于JMeter测试框架编写测试用例。
1、新建一个普通的Java工程
2、将 $安装目录/lib/ 目录引入工程
3、新建一个Java Class,如下例中的"PerformanceTest",并继承"AbstractJavaSamplerClient"
代码示例:
- /**
- *
- */
- 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;
- /**
- *@authorxuanyin
- *
- */
- publicclassPerformanceTestextendsAbstractJavaSamplerClient{
- /**
- *
- */
- privatestaticlongstart=0;
- privatestaticlongend=0;
- /**
- *执行runTest()方法前会调用此方法,可放一些初始化代码
- */
- publicvoidsetupTest(JavaSamplerContextarg0){
- //开始时间
- start=System.currentTimeMillis();
- }
- /**
- *执行runTest()方法后会调用此方法.
- */
- publicvoidteardownTest(JavaSamplerContextarg0){
- //结束时间
- end=System.currentTimeMillis();
- //总体耗时
- System.err.println("costtime:"+(end-start)/1000);
- }
- /**
- *JMeter界面中可手工输入参数,代码里面通过此方法获取
- */
- publicArgumentsgetDefaultParameters(){
- Argumentsargs=newArguments();
- returnargs;
- }
- /**
- *JMeter测试用例入口
- */
- @Override
- publicSampleResultrunTest(JavaSamplerContextarg0){
- SampleResultsr=newSampleResult();
- try{
- //Start
- sr.sampleStart();
- /**
- *Start~End内的代码会被JMeter
- *纳入计算吞吐量的范围内,为了使
- *性能结果合理,无关代码不必放此
- */
- //TODO
- /**
- *True/False可按测试逻辑传值
- *JMeter会对失败次数做出统计
- */
- sr.setSuccessful(true);
- //End
- sr.sampleEnd();
- }catch(Exceptione){
- e.printStackTrace();
- }
- returnsr;
- }
Tips:
* 可以添加main(String[] args)方法,更直观地在本地调试无误后,再把代码移至runTest()方法内
* System.out等的输出会显示在启动JMeter时的命令窗口内,但过多的输出会影响性能的准确性
4、完成用例后,将工程导出成Jar,放置于 $安装目录/lib/ext/ 下,其它依赖的Jar放置于 $安装目录/lib/ 下
5、启动(或重启)JMeter
三、运行用例
1、选中主界面左侧的“测试计划”,右键菜单->添加->Threads(Users)->线程组
2、再选中刚才新增的"线程组",右键菜单->添加->Sampler->Java请求
3、再选中刚才新增的"Java请求",右键菜单->添加->监视器->聚合报告
(聚合报告即是性能测试结果报告)
4、在"Java请求"选项卡中可以选择你想测试的类名;在"线程组"选项卡中可以输入想循环的次数及并发线程数
5、一切就绪后,点击菜单栏上的"运行"->启动,JMeter即会按第4步的配置开始运行,选中"聚合报告"即可查看实时状态
Tips:
* 如果在"Java请求"选项卡中未找到编写的测试用例类名:
则请先确认用例是否继承了JMeter框架;
其次保证用例的Jar文件在 $安装目录/lib/ext/ 下;
尝试重启JMeter
如有使用问题,欢迎给我留言一起探讨。
养成给代码做性能对比的习惯,是一名合格程序员必不可缺的素质。
相关推荐
JMeter进行性能测试实例Java请求+参数化
Jmeter 可以用于测试静态或者动态资源的性能(文件、 SOAP 、 Web、Perl脚本、java对象、数据库和查询、ftp服务器或者其他 的资源) Jmeter 用于模拟在服务器、网络或者其他对象上附加高负载以测 试他们提供...
但是Postman只能模拟单客户端的单次请求,而对于模拟多用户并发等性能测试,就必须借助其他的工具了,这里推荐功能强大的JMeter自动化测试工具ApacheJMeter-ApacheJMeter?ApacheJMeter是Apache组织开发的基于Java的...
基于jmeter+Java+HttpclientUtil实现的接口测试工具,通过Excel表格进行维护接口相关参数信息,借助Jmeter工具通过java请求设计接口测试自动化测试用例。代码重写了JavaSampleClient类,在使用过程中取出了冗余的...
JMeter是Apache组织的开放源代码项目,它是功能和性能测试的工具,100%的用java实现,最新的版本是1.9.1,大家可以到http://jakarta.apache.org/jmeter/index.html下载源代码和查看相关文档。1JMeter作用领域 ...
Jmeter是Apache组织的开放源代码项目,是功能和性能测试的工具,它是100%的Java应用。Jmeter提供的操作界面支持多种配置和结果显示。Jmeter能够模拟对服务器或者网络系统逐步加负载(压测包括HTTP/FTP/JDBC/JAVA等)...
JMeter是一款开源的Java应用程序,用于执行各种负载测试、功能测试、性能测试和压力测试任务。JMeter主要是针对Web应用程序,但它也可以用于测试其他类型的客户端/服务器系统。JMeter使用Java编写,具有跨平台性,...
JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来在不同压力类别下测试它们的强度和分析整体性能。 另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果...
JMeter 是apache 开源的性能测试工具。Jmeter 最初的想法是用来做web 自动化 测试,后面慢慢对功能做了一个扩展,扩展之后变成一个性能测试工具 Jmeter 是基于java 语言,纯java 语言,所以 在安装的过程中间需要...
1.性能测试基本概念 1.1.RT -Response time 请求响应时间 从客户端发出请求到得到响应的整个时间 一般包括网络响应时间+server的响应时间。 用户接受准则: 例如2-5-10原则,即按照正常用户体验,如果用户能够在2...
循环使用预设的延迟来模拟对服务器的连续请求。线程组是为模拟并发负载而设计的。JMeter提供了用户界面。它还公开了API,用户可以从Java应用程序来运行基于JMeter的测试。为了在JMeter中创建负载测试,需要构建测试...
性能测试:JMeter3.持续集成:Jenkins1.下载JMeter,官网:http://jmeter.apache.org/2.创建测试计划:访问http://www.cnblog.com,验证Response的返回值中存在cnblogThread组配制Http请求Response断言3.使用GUI的...
3,如何做性能测试 四、接口测试 1,如何设计接口测试用例 2,为什么要做接口测试 3,接口测试的关注点 4,request处理cookie的三种方式 五、自动化测试 1,自动化核心框架 2,自动化测试的好处 3,自动化的前提 4,...
大量要求通过发出批量请求,实际上对测试本身的性能没有影响。 筛选器 仅使用过滤器发送所需的样品! 只需在字段es.sample.filter输入以下es.sample.filter : filter1;filter2;filter3或sampleLabel_must_contain...
JMETER 各组件执行顺序与作用域 1)配置元件: 配置元件的作用主要为了初始化默认值和变量,以便后续采样器引用。相对于JAVA 语言中间定义...如果采样器没有添加逻辑控制器,采样器会按照测试树中间的顺序进行执行。
QA完成性能测试设计后,需要产出测试⽅案⽂档发送邮件到项⽬组,并且再次与相关⼈员沟通(或者组织性能测试评审),确认是否 满⾜需求 ⼆,环境设计与搭建 三,测试数据准备和构造 1. 接⼝请求参数:⾃⼰构造/⽇志...
上述四个解决方案均使用了JMeter进行压力与性能测试(实验设置的是10秒内产生3000个请求),分析其吞吐量、平均响应时间、错误率等参数,最后得出相应结论。 实验结果表明: 四种方案的响应错误率均为零,但是吞吐...
HRRS旨在解决两个主要问题: 现实的性能测试:人工生成的测试数据无法涵盖许多生产状态。 使用不切实际的用户行为进行测试可能会导致缓存行为异常。 基准可能为了简化而使用JSON / XML,而实际的生产系统则通过二...
性能测试实施十几年了,一直比较喜欢使用loadrunner来进行压力测试,此工具自身稳定性高、支持协议多,而且可以当做一个开发平台自己开发对应的数据请求进行压力测试,长时间压力测试或者大量并发数时不会像Jmeter会...