Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于对软件做压力测试,它最初被设计用于Web应用测试但后来扩展到其他测试领域。 它可以用于测试静态和动态资源例如静态文件、Java 小服务程序、CGI 脚本、Java 对象、数据库, FTP 服务器, 等等。JMeter 可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
进入Apache官方网站下载Jmeter。链接地址:http://jmeter.apache.org/download_jmeter.cgi
直接点击bat,打开jmeter:
现在看到了Jmeter的主界面。下面介绍Jmeter中主要组件的功能和作用, 首先我们看看Jmeter在概念上的组件分类如图:
1. Threads:这个组件主要用来控制Jmeter并发时产生线程的数量,在它的下一级菜单下只有一个组件(线程组),可以这么理解每个线程就是一个虚拟的用户。所有的其他类型组件必须是(线程组)节点的子节点。
(1)setup thread group---测试开始前的准备操作,每次测试前都会执行
和Tread Group类似,不同的是测试开始前才执行
(2)teardown thread group---测试结束后的收尾操作,每次测试后都会执行
和Tread Group类似,不同的是测试完成后才执行
(3)线程组
通常添加运行的线程。通俗的说所有的任务都是基于线程组,开通多少个线程就代表有多少个并发用户。
2. test fragment:测试片段元素是控制器上的一个特殊的线程组,它在测试树上与线程处于一个层级。它与线程组有所不同,因为它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。
3. 配置元件(config element):用于提供对静态数据配置的支持。CSV date set config可以将本地数据文件形成数据池(date pool),而对应于http request sampler和TCP request sampler等类型的配置元件则可以修改sampler的默认数据。(例如,http cookie manager 可以用于对http request sampler 的cookie进行管理
4. 定时器 : 这个主要是用来调节(线程组),控制线程每次运行测试逻辑(比如说:发出请求)的时间间隔。当然这个下面还有很多类型的定时器,他们主要功能就是调节时间间隔,但个个组件之间的策略有很大不同。
5. 前置处理器(per processors): 用于在实际的请求发出之前对即将发出的请求进行特殊处理。(例如,http URL重写修复符则可以实现URL重写,当URL中有session ID一类的session信息时,可以通过该处理器填充发出请求的实际的session ID。
6. 后置处理器(post processors):用于对sampler发出请求后得到的服务器响应进行处理。一般用来提取响应中的特定数据(类似lr测试工具中的关联概念,例如,XPATH EXTRACTOR则可以用于提取响应数据中通过给定XPATH值获得的数据。)
7. 断言:意思是指对于Sample完成了请求发送之后,判断一下返回的结果是否满足期望。
8. 监听器 : 这个组件不同于平时在Web编程的那种监听器,他是伴随着Jemeter测试的运行而从中抓取运行期间的数据的一个组件,经常使用的是聚合报告组件,从里面可以统计到测试的TPS,响应时间等关键测试数据。
9. Sample:取样器(sample)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMETER原生支持多种不同的sample,比如 http请求、FCP请求等,每种不同类型的sampler可以根据设置的参数向服务器发出不同类型的请求。
10.逻辑控制器:包括两类元件。一类是用于控制test plan 中sampler节点发生请求的逻辑顺序的控制器,常用的有如果(if)控制器、switch controller、runtime controller、循环控制器等。另一类是用于组织可控制sampler来节点的,如事务控制器、吞吐量控制器。
( 9and10添加线程组后在线程组上右键出现)