JMeter使用入门

JAVA 2015-12-10

1.什么是Jmeter?我们看官网的解释

The Apache JMeter™ application is open source software, a 100% pure Java application designed to load test functional behavior and measure performance. It was originally designed for testing Web Applications but has since expanded to other test functions. 简单来说就是用来测试Web应用的开源程序 接着来看它的作用:

Apache JMeter may be used to test performance both on static and dynamic resources (Webservices (SOAP/REST), Web dynamic languages - PHP, Java, ASP.NET, Files, etc. -, Java Objects, Data Bases and Queries, FTP Servers and more). It can be used to simulate a heavy load on a server, group of servers, network or object to test its strength or to analyze overall performance under different load types. You can use it to make a graphical analysis of performance or to test your server/script/object behavior under heavy concurrent load.

用于测试Web服务(SOAP/ REST),网页动态语言 - PHP,Java和ASP.NET,文件等 - ,Java对象,数据库和查询,FTP服务器和更多) 那么它有哪些特性呢?(可以跳过不看,仅供参考)

Apache JMeter features include: Ability to load and performance test many different server/protocol types: Web - HTTP, HTTPS SOAP / REST FTP Database via JDBC LDAP Message-oriented middleware (MOM) via JMS Mail - SMTP(S), POP3(S) and IMAP(S) MongoDB (NoSQL) Native commands or shell scripts TCP Complete portability and 100% Java purity. Full multithreading framework allows concurrent sampling by many threads and simultaneous sampling of different functions by separate thread groups. Careful GUI design allows faster Test Plan building and debugging. Caching and offline analysis/replaying of test results. Highly Extensible core: Pluggable Samplers allow unlimited testing capabilities. Several load statistics may be chosen with pluggable timers. Data analysis and visualization plugins allow great extensibility as well as personalization. Functions can be used to provide dynamic input to a test or provide data manipulation. Scriptable Samplers (BeanShell, BSF-compatible languages and JSR223-compatible languages) 附文档一份可以参考jmeter_distributed_testing_step_by_step.pdf 下载地址:Jmeter,我使用的版本是2.1.3,以及JDK8,Tomcat8

2.下面我再正式开始使用吧 解压后双击bin目录下的jmeter.bat文件,可见控制面板 1.png

在测试计划下新建一个线程组以模拟多线程,线程属性部分中,线程数是启动多少个线程,Ramp-Up Period (in seconds)表示线程之间间隔多少时间允许,单位是秒,比如如果填写10,那么10/10=1表示10个线程间每隔1秒钟请求网站。循环次数:60个线程运行完毕算是一次,循环次数就是这样的一个请求过程运行多少次。 2.png

3.接下来设置所要测试的网址或者链接 右键点击我们刚创建的线程组,在弹出的菜单中,选择添加->Sampler->Http请求,当然这里可以根据需要填写其它。 我们需要填写相应参数,路径的意思是假如你只是对一个链接进行压力测试,直接填写一个链接就ok,比如 http://www.baidu.com,但是大多数情况下都不是这样的,我们这里需要多个链接,我们要将多个链接保存到一个文本文件中,然后随机读取进行压力测试。 路径文本框下面的选项,可以按默认的就成,Use multipart/form-data for HTTP POST是当请求中有附件的情况,一般情况下都不用选中的。 3.png 那么路径如何设置呢?点击栏目上的 选项——函数助手,选择_StringFromFile,然后在本机新建一个测试文件,如在E盘建一个空的test.txt文件,在第一行中输入路径,然后点击“生成”按钮,在生成按钮的左边文本框中将生成一个字符串,将字符串赋值黏贴到相应位置,如下图 4.png

4.我们在刚才建立的test.txt中写上路径只需要写url之后的路径就行,如

/examples/servlets/servlet/RequestInfoExample
 /examples/servlets/servlet/RequestHeaderExample
 /examples/jsp/jsp2/el/basic-arithmetic.jsp 

当我们并非请求的时候,就会从test.txt中随机选择url来进行压力测试,如果路径有中文,要注意编码。

5.接下来我们就可以运行查看结果了,鼠标右键点击线程组,在弹出的菜单中选择添加->监听器->用表格查询结果,然后点击绿色的开始按钮开始测试。当然也可以用其它方式查看结果,取决于实际需求。 5.png

6.补充

Sample:每个请求的序号 Start Time:每个请求开始时间 Thread Name:每个线程的名称 Label:Http请求名称 Sample Time:每个请求所花时间,单位毫秒 Status:请求状态,如果为勾则表示成功,如果为叉表示失败。 Bytes:请求的字节数 如果Status为叉,那很显然请求是失败了,但如果是勾,也并不能认为请求就一定完全成功了,因为还得看Bytes的字节数是否是所请求网页的正常大小值,如果不是则说明发生了丢包现象,也不是完全成功。

下面还有几个参数: 样本数目:也就是上面所说的请求个数,成功的情况下等于你设定的并发数目乘以循环次数。 平均:每个线程请求的平均时间 最新样本:表示服务器响应最后一个请求的时间 偏离:服务器响应时间变化、离散程度测量值的大小,或者,换句话说,就是数据的分布

术语: 1、线程组:测试里每个任务都要线程去处理,所有我们后来的任务必须在线程组下面创建。可以在“Test Plan(鼠标右击) -> 添加  ->Threads(Users) -> 线程组”来建立它,然后在线程组面板里有几个输入栏:线程数、Ramp-Up Period(in seconds)、循环次数,其中Ramp-Up Period(in seconds)表示在这时间内创建完所有的线程。如有8个线程,Ramp-Up = 200秒,那么线程的启动时间间隔为200/8=25秒,这样的好处是:一开始不会对服务器有太大的负载。 2、取样器(Sampler):可以认为所有的测试任务都由取样器承担,有很多种,如:HTTP请求。 3、断言:对取样器返回的请求结果给出判断是否正确。 4、monitor:它的功能是对取样器的请求结果显示、统计一些数据(吞吐量、KB/S……)等

总结:Jmeter是一个非常强大的测试软件,可以用于对静态和动态资源进行模拟压力测试,也可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能,使用十分便捷。


本文由 Tony 创作,采用 知识共享署名 3.0,可自由转载、引用,但需署名作者且注明文章出处。

如果对您有用,您的支持将鼓励我继续创作!