JMeter简介
Apache JMeter是Apache组织开发的基于Java的压力测试工具。
JMeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试他们的强度和分析整体性能。另外,JMeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。
JMeter的特点
能够对HTTP和FTP服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC);
完全的可移植性和100%纯java;
完全多线程框架允许通过多个线程并发取样和通过单独的线程对不同的功能同时取样;
各种负载统计表和可链接的计时器可供选择;
数据分析和可视化插件提供了很好的可扩展性以及个性化;
具有提供动态输入到测试的功能。
JMeter下载与安装
前置条件:安装好jdk;
JMeter下载地址:
https://jmeter.apache.org/download_jmeter.cgi
注:Windows版本下载zip,Linux版本下载tgz,一般下载Binaries,Source含有源码;
一般启动:解压,bin目录里的jmeter.bat即可启动;
服务器模式启动:jmeter-server.bat,允许在远程节点上以服务器模式运行jmeter,并通过jmeter gui来控制。
JMeter工作原理
Jmeter可以作为web服务器与浏览器直接的代理网关,以便捕获浏览器的请求和web服务器的响应,如此就可以很容易地生成性能测试脚本。有了性能测试脚本,jmeter就可以通过线程来模拟真实用户对web服务器的访问压力。这与LoadRunner的工作原理基本一致。
JMeter目录结构
在正式使用Jmeter之前,还是有必要先了解JMeter的常见的目录结构的~
1. bin--可执行文件目录
- examples:打开里面是一个csv样例
- jmeter.bat:windows的启动文件(注:可以手动去配,但是其中heap最多设置 为物理内存的一半,默认设置为512M,如果heap超过物理内存的一半,可能运行jmeter会慢,甚至出现内存溢出。)
- jmeter.log :jmeter运行日志文件
- jmeter.sh:linux的启动文件
- jmeter.properties:系统配置文件,有一个属性log_level.JMeter,可以设置改变日志详细度,默认是info,可改为debug。
- jmeter-server.bat:windows分布式测试要用到的服务器配置
- jmeters-server:linux分布式测试要用的服务器配置
其中系统配置文件中的SSL设置重点关注如下几个:
https.default.protocol=TLS //指定HTTPS协议层
https.default.protocol=SSLv3 //指定SSL版本
https.socket.protocols=SSLv2Hello SSLv3 TLSv1 //设置启动的协议
https.use.cached.ssl.context=true //缓存控制,控制SSL是否可以在多个迭代中重用
2. docs目录--JMeter文档目录
3. extras目录--扩展插件目录
提供了对Ant的支持,可以使用Ant来实现自动化测试,例如批量脚本执行,产生html格式的报表等。测试运行时,可以把测试数据记录下来,jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,运行"ant -Dtest=文件名 report",就可以生成测试统计报表。
4. lib目录--包含JMeter依赖的相关文件
lib中ext子目录是Jmeter依赖的核心jar包,ApacheJMeter_core. jar、ApacheJMeter_java.jar在写client端需要引用,JMeter插件包也在此目录下。
lib中junit子目录是存放junit测试脚本的。
用户扩展所依赖的包直接放到lib下即可,不要放到ext下。
5. licenses目录--jmeter证书目录
6. Printable_docs目录
usermanual子目录下是jmeter用户手册,尤其是component_reference.html是最常用的核心元件帮助手册。
JMeter VS LoadRunner
对比项 | JMeter | LoadRunner |
安装 | 简单,下载解压即可 | 复杂 |
录制/回放模式 | 支持 | 支持 |
测试协议 | 偏少,用户可自行扩展 | 较多,用户不可自行扩展 |
分布式大规模压力测试 | 支持 | 支持 |
虚拟IP | 不支持 | 支持 |
图形报表 | 支持(较弱) | 支持(较强) |
网络模拟 | 不支持 | 支持 |
测试逻辑控制 | 支持 | 支持 |
监控服务器资源(CPU、内存等) | 支持 | 支持 |
功能测试 | 支持 | 不支持 |