一、优点:
1)开源工具,轻巧灵活,可扩张性好;
2)100%纯Java编写;
3)用于压力测试和性能测试;
二、作用:
1)可对 Servlet,Perl脚本,Java对象,数据库和查询,FTP服务器 等进行性能测试;
2)可用于分析不同压力条件下的总体性能情况;
3)可根据提供的图形化界面,分析性能指标或者在高负载情况下测试你的服务器以及脚本对象。
三、安装配置:
1)安装配置好 jdk ,最好安装1.8版本
2)4.0版本的jmeter安装包,jmeter下载地址:http://jmeter.apache.org/download_jmeter.cgi
下载后,解压文件到任意目录,避免在一个有空格的路径安装 Jmeter,这将导致远程测试出现问题
注意:jmeter 只需要配置好JDK环境
3)Jmeter启动:双击 Jmeter文件中的 bin 目录下运行ApacheJMeter.jar 启动,也可用双击 jmeter.bat 启动
四、Jmeter 文件目录介绍:
- bin :可执行文件目录
a)jmeter.bat :windows的启动文件
b)jmeter.log :日志文件
c)jmeter.sh :linux的启动文件(也就是说可以把jmeter部署在linux系统)
d)jmeter.properties :系统配置文件
e)jmeter-server.bat : windows分布式测试要用的服务器配置(多机器之间进行压测)
f)jmeter-serve :linux分布式测试要用到的服务器配置
- docs :JMeter 的API接口文档目录
- extras :扩展插件目录
- lib :所用到的插件目录,里面全是 jar 包,JMeter 会自动在 JMeter_HOME/lib 和 ext 目录下寻找需要的类
- Licenses : JMeter 证书目录
- printable_docs :用户使用手册
五、基础构成
1、组成部分:
1)资源生成器:用于生成测试过程中服务器,负载机的资源代码。
2)用户运行器:通常是一个脚本运行引擎,根据脚本要求模拟制定的用户行为。
3)报表生成器:根据测试中实时地的数据生成报表,提供可视化的数据显示方式。
4)负载发生器:用于产生负载,通常以多线程或是多进程的方式模拟用户行为。
2、主要概念:
2.1 TestPlan(测试计划):用来描述一个性能测试,包含与本次性能测试所有相关的功能。也就是说本次的性能测试的所有内容是基于一个计划的。
2.2 Threads (Users)线程 用户
A、setup thread group :一种特殊类型的 ThreadGroup 的,可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试前进行定期线程组的执行。
B、teardown thread group :一种特殊类型的 ThreadGroup 的,可用于执行测试后操作。这些线程的行为完全像一个正常的线程组元件。不同的是,这些类型的线程执行测试结束后执行定期的线程组。
C、thread group (用户组):这个是我们通常添加运行的线程。可以看做一个虚拟用户组,线程组中的每个线程都可以理解为一个虚拟用户。线程组中包含的线程数量在测试执行过程中是不会发生改变的。
2.3 、测试片段 (Test Fragment):测试片段元素是控制器上的一个特殊的线程组,他在测试树上与线程组处于一个层级。他与线程组有所不同,因为他不被执行,除非他是一个模块控制器或是被控制器所引用时才被执行。
以下是线程组的8类可执行元件
2.4、配置元件(config element):用于模块对静态数据配置的支持。如 CSV Data Set config 可以将本地数据文件形成数据池(Data Pool)。
2.5、定时器(Timer):用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。jmeter 定义了 Bean Shell Timer、Constant Throughput Timer、固定定时器等不同类型的Timer。
2.6、前置处理器(Per Processors):用于在实际的请求发出前对即将发出的请求进行特殊处理。例如,HTTP URL 重写修复符则可以实现URL重写,当URL中有sessionID 一类的session 信息时,可以通过该处理器填充发出请求的实际的sessionID。
2.7、后置处理器(Post Processors):用于对sampler 发出的请求后得到的服务器响应进行处理。一半用来提取响应中的特定数据。
2.8、断言(Assertions):用于检查测试中得到的相应数据是否符合预期,用来设置检查点,用以保证性能测试过程中的数据交互与预期是否一致。
2.9、监听器(Listener):用来对测试结果数据进行处理和可视化展示的一系列元件。图形结果,查看结果树,稽核报告。都是经常用到的,但是,这个监听器不能用于监听系统资源!!!
2.10、两种类型的控制器:取样器(sampler) 和 逻辑控制器 (Logic Controller),用这些原件来驱动处理一个测试。
a))取样器(sampler):性能测试中想服务器发送请求,记录响应信息,记录响应时间的最小单元,Jmeter原生支持多种不同的Sampler、TCP Request Sample、JDBC Request Sample等,不同类型的Sampler 可以根据设置的参数向服务器发出不同类型的请求。
b)逻辑控制器(Logic Controller):包括两类元件,一类是用于控制test plan 中sampler 节点发送请求的逻辑顺序的控制器,常用的有 IF控制器,Runtime Controller、循环控制器等。另一类是用来组织可控制sampler来杰斯安的,如 事务控制器,吞吐量控制器等。