jmeter是一款开源桌面应用软件,可用来模拟用户负载来完成性能测试工作。
jmeter的结构
取样器
用来模拟用户操作,向服务器发出(http等)请求。可以理解为一个没有界面的浏览器。
![](https://i-blog.csdnimg.cn/blog_migrate/0a7b04638e14569bff7e348fa0eac8f3.png)
断言
用来判断请求是否成功返回,返回的内容是否符合要求。
![](https://i-blog.csdnimg.cn/blog_migrate/b61cf2ae54c8df5336e19a79eb1f6dac.png)
监听器
jmeter的测试结构需要添加监听器来收集,jmeter结果收集程序的设计模式就是监听器模式。
![](https://i-blog.csdnimg.cn/blog_migrate/3d40688dc8bab9fbfb62220e5fb74fcd.png)
前置处理器
测试过程中,在发送请求前,有时候需要做一些环境或者参数的准备工作,那么可以使用前置处理器。
![](https://i-blog.csdnimg.cn/blog_migrate/b9b6495eb79210568e7679489fb92bda.png)
配置元件
测试过程中,如果需要做参数化,那么jmeter的参数化可以通过配置元件来完成。
![](https://i-blog.csdnimg.cn/blog_migrate/df43bab7b13c0f8e24f74b752a28fcfe.png)
后置处理器
后置处理器,一般放在取样器之后,用来处理服务器的返回结果。比如登录,获取到的token信息,需要在下一个接口里面使用。这个时候可以用后置处理器获取token。我们经常说的关联,就是用后置处理器完成的。
![](https://i-blog.csdnimg.cn/blog_migrate/c1dfec0e0385d7821de9302d60098d18.png)
控制器
比如一个场景,登录后,用户再多次下单。那么这个时候可以用控制器实现,只需要一次登录就行,下单多次。就看怎么组合控制器了。
![](https://i-blog.csdnimg.cn/blog_migrate/8b72f36abbcba9918b629ff1a2d750fa.png)
定时器
比如:要设置一个场景,是需要瞬间并发的,这个时候我们就可以用定时器。
![](https://i-blog.csdnimg.cn/blog_migrate/17b186dd6935e6b85f2f591ac27b72ac.png)
线程组
性能测试主要就是采用大量的虚拟用户,对系统进行压测。线程组,就是用来模拟虚拟用户的。可以在里面设置线程数(一线程数可看作是一个虚拟用户)
![](https://i-blog.csdnimg.cn/blog_migrate/985dbb8af3e9e2dc3074208692514472.png)
大部分时候,了解这些元件,就够我们用与脚本开发、场景设置了。
jmeter的运行原理
jmeter的运行是由测试计划开始,在计划下需要设置线程组用来模拟你的压测用户。有了用户需要有取样器,对系统进行访问。接着,你要用断言判断你的返回是否正确。最后,你需要有结果分析,告诉你压测的情况如何。
这个测试脚本的开发,需要由这5部分组成。
![](https://i-blog.csdnimg.cn/blog_migrate/465eb150365eb2237ecc6b51131e862d.png)
如上图所示,jmeter可以支持负载。所以,当一台压测机器的CPU扛不住时,可以加压测机。