Jmeter压力测试
一、压力测试场景设置
一般我们在做压力测试的时候,分单场景和混合场景,单场景也就是咱们压测单个接口的时候,多场景也就是有业务流程的情况下,比如说一个购物流程,那么这样的场景就是混合场景,就是有多个接口一起来做操作。
1、单场景,一个请求就可以了
2、混合场景,多个请求
3、压测时间,一般场景都是运行10-15分钟,如果是做疲劳测试的话,可以压一天或者一周,根据具体的情况来定
二、线程属性 、调度器配置
- 线程数:当前线程数量,可以简单的理解为用户数量。
- Ramp-up Period (in seconds):达到上面指定线程数所花费的时间,单位为秒。举个栗子:假设线程数为100个,花费时间20s,那么每秒启动的线程数 = 线程数/时间,即100/20 = 5。换句话说,就是1秒启动5个线程。
- 循环次数:勾选“永远”选项,则线程组一直循环。否则,以后面所填数量为准。
- Delay Thread creation until needed:当线程需要执行的时候,才会被创建。如果不勾选此选项,所有线程在开始时就全部被创建。
- 调度器:勾选此选项,才可修改下面的调度器配置。
调度器配置
- 持续时间(秒):整个测试计划持续的时间。(优先于后面的结束时间选项)
- 启动延迟(秒):测试计划启动后,会被延迟启动,时间为选项填入的时间。(优先于后面的启动时间选项)
- 启动时间:整个测试计划将于此处填写的时间点启动
- 结束时间:整个测试计划将于此处填写的时间点结束
线程组说白了就是模拟多个用户,同时或者有顺序的去执行任务。一个线程组可设置多个线程,每个线程之间互不影响。在服务器的并发测试有着非常重要的作用。其中,每个线程的执行,操作的变量都不会影响其他线程的变量值
三、压力测试数据准备
在做压测的时候,数据量少和数据量大的情况下,测试的结果是不一样的,所以,我们在设计场景的时候是要考虑到这种情况的,要测试数据库中数据量大和数据量小的情况,如果是要测试数据量大的情况下,就要造数据了,造数据可以使用jmeter,操作数据库来造数据,也可以使用python连接数据库,批量的造数据。
四、压力测试结果查看
添加聚合报告:
查看结果关注的几个指标
1、tps是每秒钟处理的请求数,也就是指服务器的处理能力,tps越高说明服务器处理能力越好
2、响应时间,也就是每个请求的处理时间
3、并发用户数 也就是多少并发
Jmeter分布式压测 (添加负载机)
我们在压测的时候,可能并发比较大, 一台机子已经启动不了那么多并发了,这个时候我们就要使用多台机子一起来发压力,就要添加压力机,添加压力机怎么添加呢,首先要在做压力机的机子上启动jmeter的代理,然后做为控制机的机子上添加上压力机的ip即可。 Jmeter的bin目录下有一个jmeter-server,启动它即可,windows机子作为压力机的话,运行jmeter-sever.bat,linux作为压力机的话,运行jmeter-server。 然后在作为控制机的jmeter配置文件里添加压力机ip即可,jmeter的配置文件在bin目录下jmeter.properties,添加压力机的时候,在配置文件里面找到remote_hosts添加ip,然后重启jmeter就可以看到远程压力机了
一、jmeter分布式压测 (多台电脑一起压测)
1、有多台电脑,每台电脑上都有jmeter,而且这几台电脑都互相能ping通
2、在我的电脑的jmeter的配置文件jmeter.properties里面添加了其他电脑的ip (打开配置文件后,搜索 remote_hosts)(其他机子不需要配置)
3、在其他人的电脑上要启动jmeter-server
通过jmeter-server.bat
主机上的Jmeter才能找到其他电脑上的Jmeter,来调他们的包,让他们的电脑去帮助主机发请求(发压力);
只需要在主机上写好脚本就好,但是如果有参数化文件,那么也要在其他人的电脑的同样位置放一份
因为改了配置文件,因此需要重启Jmeter才能看到添加的机子
、2、在我的电脑的jmeter的配置文件jmeter.properties里面添加了其他电脑的ip (打开配置文件后,搜索 remote_hosts)(其他机子不需要配置)
关系图:一台主年脑+多台压测电脑
3、在其他人的电脑上要启动jmeter-server
重启 Jmeter之后:
不以图形化界面运行 如 :在Linux下运行 jmx脚本 ,或windows下CMD运行
我们在做测试的时候,有时候要运行很久,公司用的测试服务器一般都是linux,就可以运行在linux下面,linux下面不能像windows一样有图形化界面,那怎么运行脚本呢,就先在windows上把脚本做好,然后在linux下运行即可,linux下运行jmeter是在jmeter的bin目录下的jmeter.sh这个shell脚本。 sh jmeter.sh -n –t a.jmx -l res.jtl -n代表以没有图形化界面启动,-t代表后面是测试脚本,a.jmx也就是我们做好的jmeter脚本,-l代表测试结果 res.jtl就是测试结果文件,查看结果的话,在查看结果树视图中导入这个res.jtl就可以查看到测试结果了
1、没有图形化界面运行
2、先把jmeter的bin目录加入到环境变量里面
然后执行这个命令 (cmd命令窗口)
jmeter -n -t e:\path\HTTP请求.jmx -l e:/path/res.jtl
-n 代表在没有图形化界面下运行
-t 指定一个测试脚本
-l 指定结果文件,这个查看结果的文件要以.jtl
上图运行的时候 在 C:\Users\Administrator 下运行,因此如果命令行与结果文件 res.jtl 没有指定路径的话,该结果文件就会存在于当前所在路径下
在jmeter里面添加聚合报告,在导入res.jtl文件就可以查看执行结果
Jmeter 连接数据库、操作数据库
一、步骤:
1、导入jdbc的jar包,因为jmeter本身不能直接连接mysql,所以需要导入第三方的jar包,来连接mysql 。
找到JAR包的绝对路径
2、创建数据库连接配置,mysql的url、端口号、账号、密码
1、添加一个JDBC Connection Configuration
2、配置mysql连接池的名称,后面发sql请求的时候指定连接哪里
3、数据库的url:jdbc:mysql://192.00.0.00:3307/bugfree?allowMultiQueries=true
4、数据库驱动:这里就是指定连接什么类型的数据库,mysql、oracle、SqlServer等等
5、账号密码
3、写sql,执行sql
4、查看结果
断言
断言:
就是自动帮你校验结果用的。