![ad9c290012ab59bcf973fe47964c345c.png](https://img-blog.csdnimg.cn/img_convert/ad9c290012ab59bcf973fe47964c345c.png)
Apache JMeter是Apache组织开发的基于Java的压力测试工具。用于压力测试和性能测量,它最初被设计用于Web应用测试,但后来扩展到其他测试领域。
JMeter是开源代码的测试工具,完全免费使用。
JMeter功能
JMeter 可以用于对静态的和动态的资源(文件,Servlet,Perl脚本,java 对象,数据库和查询,FTP服务器等等)的性能进行测试。它可以用于对服务器、网络或对象模拟繁重的负载来测试它们的强度或分析不同压力类型下的整体性能。你可以使用它做性能的图形分析或在大并发负载测试你的服务器/脚本/对象。
JMeter功能包括:
l 能够对HTTP和FTP服务器进行压力和性能测试,可以对任何数据库进行同样的测试(通过JDBC)
l 能够对多种不同的应用程序/服务/协议类型进行负载和性能测试:
n Web - HTTP, HTTPS (Java, NodeJS, PHP, ASP.NET, …)
n SOAP / REST Web服务
n FTP
n 数据库 通过 JDBC
n LDAP
n 面向消息的中间件 (MOM) 通过 JMS
n 邮件 - SMTP(S), POP3(S) and IMAP(S)
n 本机命令或shell脚本
n TCP
n Java 对象
l 全功能的测试IDE(集成开发环境),允许快速的测试计划录制(通过浏览器或本机应用程序),构建和调试。
l CLI模式(命令行模式(以前称为非GUI)/无头模式)支持从任何Java兼容的操作系统(Linux,Windows,Mac OSX, …)进行负载测试。
l 完整且随时可呈现的动态HTML报告。
l 通过从最常用的响应格式,HTML,JSON,XML或任意文本格式中提取数据的能力,轻松实现数据相关性(数据关联)。
l 完全的可移植性和100%纯Java。
l 完整的多线程框架,允许通过多个线程并发取样,和通过单独的线程组对不同的功能同时取样。
l 缓存和离线分析/回放测试结果。
l 高度可扩展的核心:
n 可插拔采样器允许无限的测试功能。
n 可编写脚本的采样器(与Groovy和BeanShell等JSR223兼容的语言)
n 可以使用可插拔定时器选择多个负载统计信息。
n 数据分析和可视化插件具有很好的可扩展性和个性化。
n 函数可用于为测试提供动态输入或提供数据操作。
n 通过Maven,Gradle和Jenkins的第三方开源库轻松实现持续集成。
综上,我们可以使用JMeter做如下测试:
Ø 压力负载测试(性能测试)
Ø 接口测试
Ø 功能测试:通过录制测试脚本,可以快速的形成测试脚本
Ø 回归测试:利用插件架构的优势,可以用于功能和接口的回归测试
JMeter优势和劣势
优势:
l 轻量级、体积小、免安装;
l 开源软件、扩展性好,我们可以根据自己的需要修改源代码;
l 支持代理录制,支持第三方软件 Badboy 录制的脚本,脚本可移植性好;
l 对 JavaWeb 支持性好,符合当前形势,Java 语言编写的系统和项目多;
l 支持分布式性能测试;
l 容易与 Jenkins 进行集成。
劣势:
l 不支持自动关联,必须手动书写关联脚本;
l 不支持 HTTPS 的脚本,但是可以直接测试 HTTPS 的请求;
l 不支持模拟浏览器的用户行为,每个用户只能代表一个并发;
l 没有自带的资源监控体系,需要借助第三方插件;
l 支持的协议较少(这里要说一点,支持的协议虽然少,但是确精)。
l 不支持录制的脚本和回放脚本进行比较。
JMETER实战