1、JMeter 介绍

Apache JMeter是100%纯JAVA桌面应用程序,被设计为用于测试客户端/服务端结构的软件(例如web应用程序)。

它可以用来测试静态和动态资源的性能,例如:静态文件,Java Servlet,CGI Scripts,Java Object,数据库和FTP服务器等等。

JMeter可用于模拟大量负载来测试一台服务器,网络或者对象的健壮性或者分析不同负载下的整体性能。

同时,JMeter可以帮助你对你的应用程序进行回归测试。

通过你创建的测试脚本和assertions来验证你的程序返回了所期待的值。

为了更高的适应性,JMeter允许调用二次开发的jar包来丰富你的测试场景;

JMeter允许你使用正则表达式来创建这些assertions.

2、JMeter与LoadRunner比较

JMeter 是一款开源(有着典型开源工具特点:界面不美观)测试工具,虽然与LoadRunner相比有很多不足,比如:它结果分析能力没有LoadRunner详细;

很它的优点也有很多:

开源,他是一款开源的免费软件,使用它你不需要支付任何费用,小巧,相比LR的庞大(最新LR11将近4GB),它非常小巧,不需要安装,但需要JDK环境,因为它是使用java开发的工具。

功能强大,jmeter设计之初只是一个简单的web性能测试工具,但经过不段的更新扩展,现在可以完成数据库、FTP、LDAP、WebService等方面的测试。

因为它的开源性,当然你也可以根据自己的需求扩展它的功能。扩展性极强。

它可以测试性能,可以测试接口,甚至可以通过加载浏览器驱动完成UI自动化的工作!

两者最大的区别:jmeter不支持IP欺骗,而LR支持。

从上边来看Jmeter是好处多多的,但是任何事、任何物都违背不了一个法则,那就是“金无足赤人无完人”,Jmeter也是有不足之处的,下边我们来看看Jmeter的不足之处,这里就不深究它到底是娘胎里带来的还是后天造成的了,一般对于软件来说都是娘胎里带来的,先天不足。

3、JMeter缺点

使用JMeter无法验证JS程序,也无法验证页面UI,所以要须要和Selenium配合来完成Web2.0应用的测试。

4、JMeter目录结构

从解压包的根目录说明:

A、backup目录

脚本备份目录,里边的文件都是以.jmx后缀结尾的文件。

实际开始安装解压后是不存在这个目录的,这个是由于小黄牛使用过JMeter后,JMeter自动创建这个目录,然后备份了脚本文件。

B、bin目录

可执行文件目录。

  1. Jmeter.bat:是启动jmeter的主脚本。
  2. Jmeter-server.bar:是用来实现联机负载。
  3. Jmeter.properties:是jmeter主要的配置文件,超过80%的配置项都是通过这个文件实现。(PS:修改配置文件后,要重启Jmeter才能生效)
  4. Jmeter.bat 打开Jmeter主界面

Jmeter使用的日志文件名称被定义到Jmeter.properties中,默认在Jmeter.log可查看日志。

该目录下,更多常用文件说明:

  1. examples:目录下包含Jmeter使用实例,打开里面是一个csv样例
  2. ApacheJMeter.jarJMeter源码包
  3. jmeter.batwindows的启动文件
  4. jmeter.logJmeter运行日志文件
  5. jmeter.shlinux的启动文件
  6. jmeter.properties:系统配置文件
  7. jmeter-server.batwindows分布式测试要用到的服务器,启动负载生成器服务文件
  8. jmeter-serverLinux下启动负载生成器文件
  9. shutdown.cmdwindows jmeter 关闭文件
  10. stoptest.cmdwindows jmeter 测试停止文件

C、dosc目录

docs目录下的文件是JMeter的Java Docs,而printable_docs的usermanual子目录下的内容是JMeter的用户手册文档,其中component_reference.html是最常用到的核心元件帮助文档。

该目录下存放的是jmeter官方文档的API文档,主要是用于二次开发。

D、extras目录

该目录下的文件提供了对构建工具Ant的支持,可以使用Ant来实现测试自动化,例如批量脚本执行,产生HTML格式的报表,测试运行时,可以把测试数据记录下来,Jmeter会自动生成一个.jtl文件,将该文件放到extras目录下,在Jmeter.batCMD界面中运行ant -Dtest=文件名 report,就可以生成测试统计报表。也可以用于持续集成。

E、lib目录

该目录包含两个子目录,其中ext子目录存放有JMeter的核心jar包,另一个junit子目录存放JUnit测试脚本。

用户扩展所依赖的包,应该直接放到lib目录下,而非lib/ext下。

注意:无法识别 zip 格式的包文件,所以需要的包文件均要求以 .jar 结尾

F、其他目录

  1. Licensesj=Jmeter软件许可文件目录
  2. printable_docs:该目录存放的是Jmeter官方提供的帮助文档。printable_docsdemos子目录下有一些常用的JMeter脚本案例,可以作为参考。可打印半版本目录。
  3. LICENSEJMeter许可说明
  4. NOTICEJMeter简单信息说明
  5. README.mdJMeter官方基本介绍

5、jmeter.properties配置文件

A、默认语言设置

  1. language=en

B、捕捉cookie开关

  1. CookieManager.save.cookies=true

C、配置编辑器的字体和尺寸

  1. jsyntaxtextarea.font.family=宋体
  2. jsyntaxtextarea.font.size=20

D、配置默认编码格式

  1. sampleresult.default.encoding=UTF-8

E、SSL 配置

重点关注下面几个配置# 指定 HTTPS 协议层

  1. # 指定 HTTPS 协议层
  2. https.default.protocol=TLS
  3. # 指定 SSL 版本,实际应用中可能需要修改
  4. https.default.protocol=SSLv3
  5. # 设置启动的协议
  6. https.socket.protocols=SSLv2Hello SSLv3 TLSv1
  7. # 缓存控制,控制 SSL 是否可以在多个迭代中重用
  8. https.use.cached.ssl.context=true

F、JMeter 测试项目自动备份配置

  1. # 设置是否启用自动备份,默认是 true
  2. jmeter.gui.action.save.backup_on_save=true
  3. # 设置自动备份目录,默认备份至 JMeter 根目录的 backups下
  4. jmeter.gui.action.save.backup_directory=
  5. # 设置自动备份项目数,默认为最近 10 个
  6. jmeter.gui.action.save.keep_backup_max_count=10

G、远程主机配置

  1. # 配置远程主机的 IP,默认为本机。用逗号","可以设置多个远程主机
  2. remote_hosts=127.0.0.1
  3. # 多个远程主机指定示例如下,其中:后为端口
  4. remote_hosts=127.0.0.1:1099,127.0.0.1:1200,127.0.0.1:1300
  5. 对于 RMID 的配置请直接看配置文件中的选项说明

H、日志管理配置

  1. # 设置日志格式
  2. log_format_type=default
  3. # 设置日志输出级别
  4. log_level.jmeter=INFO
  5. # 设置 junit 日志输出级别
  6. log_level.jmeter.junit=DEBUG
  7. # 设置日志输出目标文件,默认为 jmeter.log
  8. log_file=jmeter.log

I、jmeter.bat 关键配置修改

为了更优化的使用 jmeter,需要对 jmeter.bat 中的一些配置根据当前机器的配置进行优化,这里进行关键配置项说明,大家根据自己的机器的配置来进行修改。

jvm 相关配置,大概在 80 行左右,找到这些配置,对其中的数值根据当前机器的硬件配置来修改。

  1. set HEAP=-Xms2048m -Xmx2048m
  2. set NEW=-XX:NewSize=512m -XX:MaxNewSize=512m
  3. set SURVIVOR=-XX:SurvivorRatio=8 -XX:TargetSurvivorRatio=50%
  4. set TENURING=-XX:MaxTenuringThreshold=2
  5. if %current_minor% LEQ "8" (
  6. rem Increase MaxPermSize if you use a lot of Javascript in your Test Plan :
  7. set PERM=-XX:PermSize=512m -XX:MaxPermSize=1024m)

J、设置输出报告模板格式

  1. jmeter.save.saveservice.output_format = csv

6、关于配置修改的注意事项

配置文件可能存在优先级关系,好像user.properties会覆盖jmeter.properties,一般修改配置都是修改或者添加user.properties,不建议修改jmeter.properties

通过修改reportgenerator.properties的下面配置,可以减少采样时间,增加采样精度。

生成的报告的其他内容也可以在这里修改。

当然,建议这些修改,都放到user.properties里面去。

修改jmeter.properties里的这些配置,可以控制报告DashBoard的显示时间,建议这些配置放到user.properties里面去: