Jmeter

Posted qin-shi-wei

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jmeter相关的知识,希望对你有一定的参考价值。

Jmeter是什么:

  

Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。 它可以用于测试静态和动态资源,例如静态文件、Java 服务程序、CGI 脚本、Java 对象、数据库、FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
Apache jmeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
 
 
JMeter的作用
1.能够对HTTP和FTP服务器进行压力和性能测试, 也可以对任何数据库进行同样的测试(通过JDBC)。
2.完全的可移植性和100% 纯java。
3.完全 Swing 和轻量组件支持(预编译的JAR使用 javax.swing.*)包。
4.完全多线程 框架允许通过多个线程并发取样和 通过单独的线程组对不同的功能同时取样。
5.精心的GUI设计允许快速操作和更精确的计时。
6.缓存和离线分析/回放测试结果。
 
JMeter的高可扩展性
1.可链接的取样器允许无限制的测试能力。
2.各种负载统计表和可链接的计时器可供选择。
3.数据分析和可视化插件提供了很好的可扩展性以及个性化。
4.具有提供动态输入到测试的功能(包括javascript)。
5.支持脚本编程的取样器(在1.9.2及以上版本支持BeanShell)。
在设计阶段,JMeter能够充当HTTP PROXY(代理)来记录IE/NETSCAPE的HTTP请求,也可以记录apache等WebServer的log文件来重现HTTP流量。当这些HTTP客户端请求被记录以后,测试运行时可以方便的设置重复次数和并发度(线程数)来产生巨大的流量。JMeter还提供可视化组件以及报表工具把量服务器在不同压力下的性能展现出来。
相比其他HTTP测试工具,JMeter最主要的特点在于扩展性强。JMeter能够自动扫描其lib/ext子目录下.jar文件中的插件,并且将其装载到内存,让用户通过不同的菜单调用。
 
 
    1、Label: 定义的HTTP请求名称
    2、Samples: 表示这次测试中一共发出了多少个请求
    3、Average: 访问页面的平均响应时间
    4、Min: 访问页面的最小响应时间
    5、Max: 访问页面的最大响应时间
    6、Error%: 错误的请求的数量/请求的总数
    7、Throughput:每秒完成的请求数
    8、KB/Sec: 每秒从服务器端接收到的数据量
 

主要组件介绍

(1)测试计划(Test Plan)

   是使用JMeter进行测试的起点,它是其它JMeter测试元件的容器。

(2)线程组(Thread Group)

   代表一定数量的并发用户,它可以用来模拟并发用户发送请求。

(3)取样器(sampler)

   定义实际的请求内容,被线程组包含,我们主要用HTTP请求。

(4)监听器(Listener)

负责收集测试结果,同时也被告知了结果显示的方式。我们常用的包括:聚合报告、察看结果树、用表格查看结果,都支持将结果数据写入文件。其他的添加上去看看就行。

 
技术图片
 

(5)逻辑控制器(Logic Controller)

可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。

其分为循环控制器和事务控制器。

(6)断言(Assertions)

可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。

(7)配置元件(Config Element)

维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。我们主要在参数化中用到CSV Data Set Config。

(8)前置处理器(Pre Processors)和后置处理器(Post Processors)

负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。我们主要在动态关联中用到后置处理器的正则表达式提取器。

(9)定时器(Timer)

负责定义请求之间的延迟间隔。

3.三种脚本生成方式

方式一:直接导入 Badboy所录制脚本

在前面的文章我们讲解了使用badboy进行脚本录制,这里可以直接将其导入到Jmeter中。具体补步骤如下:

(1)打开JMeter会有一个默认的测试计划,点击文件->打开,选中录制的脚本文件如:Baidu_login.jmx,打开脚本进行测试。

(2)在线程组(Thread Group)上添加 监听器->聚合报告(用于分析测试结果)后,点击 运行-启动,开始测试,测试完毕后在聚合报告中就可以看到测试结果。一个简单的测试计划就完成了。

 
技术图片
 

方式二:手动编写测试样例

(1)在测试计划中先添加一个线程组,然后在该线程组中加入http请求模块。可以在sampler中看到,Jmeter还能测试数据库连接查询压力,FTP连接压力等。

 
技术图片
 

(2)编写测试请求。

 
技术图片
 

(3)添加监听等。

(4)设置线程并发量。

 
技术图片
 

(5)点击运行,查看运行结果,进行分析。

 
技术图片
 
 
技术图片
 

即300个并发量中,平均时间是17074毫秒,中间段发出的的请求耗时18891毫秒,末尾百分之90处发出的请求耗时25575毫秒。整个测试过程中,最小耗时为2616毫秒,最大耗时为26911毫秒。




以上是关于Jmeter的主要内容,如果未能解决你的问题,请参考以下文章

JMeterJMeter的工作原理

JMeterJMeter的工作原理

JMeterJMeter的工作原理

JMeterJMeter在linux下运行

Jmeter 简要介绍与安装

安装jmeter详情