Apache JMeter 是Apache组织的开放源代码项目,是一个100%纯Java桌面应用,用于压力测试和性能测试。java
1.可以对HTTP和FTP服务器进行压力和性能测试,也能够对任何数据库进行一样的测试shell
2.彻底的可移植性和100%的纯java数据库
3.彻底Swing的轻量级组建支持编程
4.彻底多线程框架容许多个线程并发取样和经过单独的线城组对不一样的功能同时取样缓存
5.精心的GUI设计容许快速操做和更精确的计时服务器
6.缓存和离线分析/回放测试结果cookie
7.高可扩展性:session
可连接的取样器容许无限制的测试能力多线程
各类负载统计表和可链接的计时器可供选择并发
数据分析和可视化插件提供了很好的可扩展性以及个性化
具备提供动态输入到测试的功能
支持脚本编程的取样器
1.负载发生器:用于产生负载,一般以多线程或者多进程的方式模拟用户行为
2.用户运行器:一般是一个脚本运行引擎,用户运行期附加在线城或进程上,根据脚本要求模拟指定的用户行为。
3.资源生成器:用于测试过程当中服务器、负载机的资源数据。
4.报表生成器:根据测试中得到的数据生成报表,提供可视化的数据显示方式
1) 性能测试工具---协议
2) 自动化测试工具---对象识别技术
1) 查看jmter.log
在bin目录下。
2) log_leve.jmeter属性
修改jmeter的log级别。默认时INFO 。修改成DEBUG级别将会更详细。只有调试时会开启DEBUG模式。
3) Java虚拟机启动配置
Jmeter 修改内存可在Jmeter.bat中修改HEAP,以下图:
TestPlan(测试计划):用来描述一个性能测试,包含与本次性能测试全部相关的功能。也就是说本次的性能测试的全部内容是基于一个测试计划的
下面看一下一个测试计划主要有拿些功能模块(右键“测试计划”弹出菜单)。
Threads(users)线程 用户
1.SetUp thread group (SetUp 线程组)
一种特殊类型的线程组,可用于执行预测试操做。这些线城的行为彻底像一个正常的线程组元件。不一样的是,这些类型的线程执行测试前进行按期线程组的执行。
2.tearDown线程组
一种特殊的线程组,可用于执行测试后动做。这些线城的行为彻底像一个正常的线程组元件。不一样的是,这些类型的线程执行测试后执行按期线程组。
3.线程组
这个就是咱们一般添加运行的线程。通俗的讲一个线城组,能够看做一个虚拟用户组, 线程组中的每一个线程均可以理解为一个虚拟用户。线程组中包含的线程数量在执行过程当中是不回发生改变的。
测试片断元素是控制器上的一个种特殊的线程组,它在测试树上与线程组处于一个层级。它与线程组有所不一样,由于它不被执行,除非它是一个模块控制器或者是被控制器所引用时才会被执行。
做用:
1.在脚本开发过程当中能够用来备份元件。
2.其下的元件能够被模块控制器调用,咱们能够利用它来模块化请求供模块控制器调用。
取样器(Sample)是性能测试中向服务器发送请求,记录响应信息,记录响应时间的最小单元,JMeter 原生支持多种不一样的sampler ,如 HTTP Request Sampler 、 FTP Request Sample 、TCP Request Sample 、JDBC Request Sampler 等,每一种不一样类型的 sampler 能够根据设置的参数向服务器发出不一样类型的请求。(在jmeter 的全部sampler 中,Java Request Sampler 和 Beanshell Request Sampler 是两种特殊的可定制的 Sampler ,后面会深刻讨论。)
逻辑控制器(Logic Controller)
逻辑控制器,包括两类无件,一类是用于控制test plan 中 sampler 节点发送请求的逻辑顺序的控制器,经常使用的有 若是(If)控制器 、switch Controller 、Runtime Controller、循环控制器等。另外一类是用来组织可控制 sampler 来节点的,如 事务控制器、吞吐量控制器。
配置元件(Config Element)
配置元件(config element)用于提供对静态数据配置的支持。CSV Data Set config 能够将本地数据文件造成数据池(Data Pool),而对应于HTTP Request Sampler和 TCP Request Sampler等类型的配制无件则能够修改Sampler的默认数据。(例如,HTTP Cookie Manager 能够用于对 HTTP Request Sampler 的cookie 进行管理)
定时器(Timer)
定时器(Timer)用于操做之间设置等待时间,等待时间是性能测试中经常使用的控制客户端QPS的手端。相似于LoadRunner里面的“思考时间”。JMeter 定义了Bean Shell Timer、Constant Throughput Timer、固定定时器等不一样类型的Timer。
前置处理器(Per Processors)
用于在实际的请求发出以前对即将发出的请求进行特殊处理。例如,HTTP URL重写修复符则能够实现URL重写,当RUL中有sessionID 一类的session信息时,能够经过该处理器填充发出请求的实际的sessionID 。
后置处理器(Post Processors)
用于对Sampler 发出请求后获得的服务器响应进行处理。通常用来提取响应中的特定数据(相似LoadRunner测试工具中的关联概念)。例如,XPath Extractor 则能够用于提取响应数据中经过给定XPath 值得到的数据。
断言(Assertions)
断言用于检查测试中获得的相应数据等是否符合预期,断言通常用来设置检查点,用以保证性能测试过程当中的数据交互是否与预期一致。
监听器(Listener)
这个监听器可不是用来监听系统资源的元件。它是用来对测试结果数据进行处理和可视化展现的一系列元件。 图行结果、查看结果树、聚合报告。都是咱们常常用到的元件。