Jmeter是个开源的性能测试工具。Apache JMeter是Apache组织开发的基于Java的压力测试工具。
一、Jmeter简介
Jmeter可以用于对服务器、网络或对象模拟巨大的负载,来自不同压力类别下测试它们的强度和分析整体性能。
另外,Jmeter能够对应用程序做功能/回归测试,通过创建带有断言的脚本来验证你的程序返回了你期望的结果。为了最大限度的灵活性,Jmeter允许使用正则表达式创建断言。
1.Jmeter的特点:
1.能够对http和ftp服务器进行压力和性能测试,也可以对任何数据库进行同样的测试(通过JDBC)。
2.完全的可移植性和100%纯java。
3.完全多线程框架允许通过多个线程并发取样和通过单独的线程组对不同的功能同时取样。
4.各种负载统计表和可链接的计时器可供选择。
5.数据分析和可视化插件提供了很好的可扩展性以及个性化。(可以自己开发插件往Jmeter里面去插入)
6.具有提供动态输入到测试的功能。
2.Jmeter下载与安装:
安装1.8版本的jdk。
链接:https://blog.csdn.net/weixin_37601546/article/details/88623530
Jmeter下载地址:
http://jmeter.apache.org/download_jmeter.cgi
一般启动:解压,bin目录里的jmeter.bat即可启动。
服务器模式启动:jmeter-server.bat。允许在远程节点上以服务器模式运行jmeter,并通过jmeter gui来控制。
二、Jmeter工作原理:
![41462d1705e6eecd8a85c3ccdaea1781.png](https://i-blog.csdnimg.cn/blog_migrate/9afd49f07a9db6c6f519ab947ebaac61.png)
1.手写性能脚本,通过Jmeter的多线程去压后端的服务器。2.通过浏览器去录制脚本,再通过Jmeter去压。
三、Jmeter目录结构:
![4a99e79d721617e019a7b9bf09f4712b.png](https://i-blog.csdnimg.cn/blog_migrate/f9b015122dc1ba7a500ad589255f1a96.png)
1.bin目录是可执行文件,jmeter.bat启动,里面可以设置jvm参数。
![6621bd467aa243a4d6d7652b7ec28c4a.png](https://i-blog.csdnimg.cn/blog_migrate/b1ef73831bf5d05cecf37e9309aeb43e.png)
配堆内存的大小等,启动参数可以在这个文件里手动去配置。一般情况情况下,没有特殊要求,默认就行。
2.根据经验,heap最多设置为物理内存的一半,默认设置为512M。如果heap超过物理内存的一半,可能运行Jmeter会慢,甚至出现内存溢出。
heap:堆内存。Jmeter是Java开发的,java有个特点是吃内存占cpu。
3.Jmeter的log在jmeter.log中查看。
4.jmeter.properties文件中有一个属性log_level.JMeter,可以设置改变日志详细度。默认是info,可改为debug。
jmeter.properties文件中有很多东西可以去配置,一般情况下不用动,如果需要调试或者做其它事情的话需要配一下。
5.docs下是Jmeter的api的文档。
6.printable_docs的usermanual子目录下是Jmeter用户手册,其中component_refernce.html是最常用的核心元件帮助手册。
7.extras目录下的文件提供了对ant的支持,可以利用ant来实现自动化,例如批量执行脚本,产生html报告等。
8.运行Jmeter的时候会产生一个jtl文件,把它放到extras目录下,运行ant-Dtest=文件名report就可以生成测试统计报表。
9.lib目录下的ext子目录是Jmeter的核心jar包;junit子目录是放junit脚本的。
10.用户扩展所依赖的包直接放到lib下即可,不要放到lib/ext下。
11.把jmeter.properties这个文件以gui的形式展示出来,在这里面都可以去改:
![8b45657fd34256afd6c115a68086785e.png](https://i-blog.csdnimg.cn/blog_migrate/6b27b600d2598ecd6fd17400f12b446f.png)
![c36c28ad4e23f08e3a08283736a17ba8.png](https://i-blog.csdnimg.cn/blog_migrate/57ecff16225d602cc381ee7c2dbb1897.png)
这个是它的两种方式。
四、对比下Jmeter和Lr各有什么特点:
![0f816d5190da478371d191c6e6c20aaf.png](https://i-blog.csdnimg.cn/blog_migrate/f971fff67d926b97f858cc3177b18538.png)
lr其实也支持功能测试,但是需要你去改lr的c代码。
写个脚本读取测试用例,脚本里面执行接口或者其它的一些东西,然后接口返回值和测试用例预期值进行比较。测试相等,测试通过。测试不相等,测试不通过。测试报告以html的形式打印出来。
五、Jmeter常用功能
测试计划:用来描述一个性能测试,所有内容都是基于这个计划的。
线程(用户):
一般常用线程组:可以理解成为lr中的虚拟用户组。
![f104c67ea8ccec711f5ae9e716066a74.png](https://i-blog.csdnimg.cn/blog_migrate/403df9147a862a71293c4d5873fd34ac.png)
setup thread group:可用于执行预测试操作。这些线程的行为完全像一个正常的线程组元件。类似lr中的init。
teardown thread group:可用于执行测试后动作。这些线程的行为完全像一个正常的线程组元件。类似lr中的end。