Jmeter性能测试应用篇
Jmeter的组成
测试计划
Jmeter的组上层组件
线程组
用于控制多线程并发,控制虚拟用户数
断言
预期结果和实际结果进行比对,看是否正确,但是在性能测试中不推荐进行断言,因为性能测试重点不在准确性判断
定时器
用于操作线程时,设置停顿多尝时间,什么条件下停顿,集合点等
监听器
监听器是比较重要的一部分,可以调试我们的脚本,和监控一些资源
配置元件
配置元件在做网络并发时比较重要,在做真正的并发之前需要有那些配置信息,可以自定义一些变量,例如mysql的连接信息
后置处理器
在并发完成之后想要做些什么,例如关联,后一个请求需要前一个请求的响应结果,通过后置处理器拿到,存储一个变量,给后边调用
前置处理器
在并发之前想要做些什么
逻辑控制器
当什么什么条件满足时,去做什么
一个程序员,他媳妇让他去买包子,说出去买俩包子,如果看到卖西瓜的,买一个,程序员出去看到了卖西瓜的,结果买了一个包子回家,这就是靠逻辑控制器控制的
Sampler
Sampler真正意义上时存放我们所有的请求的
Jmeter实现多并发
Jemter如何实现多并发,在jmeter中,这个概念叫线程中,是个负载发生器,一般来说使用多线程或多进程的方式来模拟用户的使用行为。Jmeter中是以线程的方式来模拟用户的并发访问的。
添加线程组
设置线程组
Jmeter实现逻辑分支控制
逻辑控制器:用于控制测试脚本的逻辑判断,也可以理解为如何控制脚本运行。例如:如果控制器,当满足什么样的条件后执行那一步操作。
If控制器是最常用的控制器,因为它可以控制很多场景,例如10个用户进来,可以让用户1去查看作业,用户2去查看资源,用户3,等等,这样就控制了固定用户的使用行为
操作步骤
1、线程组下添加查看结果树
2、线程组下添加if控制器,在if控制器下添加以Sampler
此时,点击启动,会有什么变化吗?答案,没有变化,因为Sampler在if控制器里边,而if控制器并没有设置触发条件,所以不会去发起请求,那么我们如何走到这个控制器里边?
3、在线程组下添加一个配置元件-用户自定义变量
4、编写触发if控制器的条件
5、点击启动按钮
此时,达成uuid等于100001的用户,去访问百度首页
Jmeter实现配置管理
配置元件
用来提供一些配置相关信息,如HTTP请求头、cookie管理,提供参数化数据。还可以进行用户自定义变量等配置,用来定义常量等。
1、下载驱动
下载地址链接: link
1、下载JDBC驱动包(注:驱动包的版本一定不能大于数据库的版本,比如数据库版本是5.1.0,驱动包版本必须是5.1.0或以下版本)我下载的是mysql-connector-java-5.1.38.jar
将下载的jar包放到jmeter安装目录lib/ext目录下
重启jmeter,jar才能生效
2、添加JDBC配置管理举例
3、添加JDCB请求
4、写入配置变量名和sql
5、点击运行并查看结果树
Jmeter实现请求预处理
Jmeter实现请求预处理时通过前置处理器这个组件来控制的:主要用于在实际请求发出之前对即将发出的请求进行特殊处理。例如,用户参数,可以在实际发送请求之前来定义变量,可以在后边的实际请求中进行使用。
例举:
添加用户参数
2、添加Beanshell Sampler
3、添加查看结果树
4、点击运行,查看结果树及控制台
Jmete实现集合点,定时并发
使用组件:定时器
用于操作与操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。类似于LoadRunner中的思考时间
添加后,请求会延迟3秒
Jmeter常用函数助手
__counter计数器
CSV_read
Jmeter实现分布式并发
在做大并发量时候,例如1000以上,单台电脑配置无法支撑,数据大小比较大的时候,这时候就需要分布式,Master指的是主压力机,Slave指副压力机
Step1、Master在jmeter.properties中添加remote_hosts
Step2、Slave在jmeter.properties中添加server_port
Step3、Slave启动jmeter-server
Linux启动报错
Step4、Master机器重启,运行,远程启动Slave,会增加刚才配置的Slave机器
如果启动失败,检查Slave机器防火墙,将其关闭