本部分内容:
事务:
jmeter中设置事务:
jmeter如何做负载测试?
线程属性:
线程数
调度器
性能测试中添加定时器有什么用?
狭义的并发: 集合点
jmeter场景运行:
GUI图形化远程运行:
命令模式运行
远程模式运行
事务:
事务可能由一系列请求组成,主要针对用户而言,属于宏观上的概念。
jmeter中设置事务:
1、jmeter中有事务控制器,可以通过事务控制器来完成事务的操作;
Generate parent sample:如果事务控制器下有多个采样器(请求),勾选后,在察看结果树中不仅可以看到事务控制器,还可以看到每个采样器;并且事务控制器定义的事务是否成功取决于子事务是否都成功,任何一个失败代表整个事务失败。
Include duration of timer and per-post processors in generated sample:是否包括定时器、预处理和后期处理延迟的时间,选中这一项会统计定时器(timer)的时间,否则只统计采样器(sample)的时间。
jmeter如何做负载测试?
通过jmeter的线程组可以完成性能测试、压力测试、负载测试等
在取样器错误后要执行的动作:设置线程组中某一个请求出错后的异常处理方式。
继续:请求出错后继续运行。勾选此项后,有请求出错也继续运行。在大量用户并发的情况下,服务器偶尔响应错误是正常现象,比如服务器由于性能问题不能正常响应或者响应不及时,此时我们把过程中错误记录下来,作为有性能问题的依据。
Start Next Thread Loop:遇到sampler执行出错时,直接进行下次循环,当前循环剩下的所有sampler不再执行。
停止线程:遇到sampler执行出错时,当前线程停止进行,其他线程继续。
停止测试:遇到sampler执行出错时,当前所有线程执行完当前循环停止进行。
stop Test now:遇到sampler执行出错时,当前所有线程立即停止
线程属性:
线程数
线程数:设置并发用户线程数量,即通常意义的并发用户数,一个线程对应一个模拟用户。
Ramp-Up Period (in seconds):设置并发用户加载时间,即线程启动开始运行的时间间隔,单位是秒。假设并发用户数设置为50,此处设置为10,那么每秒就会启动50/10,5个线程;如果设置0,则开始就50个线程就立即启动。
循环次数:输入框与复选框只能选择一种,不能同时被选择为场景循环方式;输入框输入数字则被认为是当前线程组所控制的脚本区域的执行次数;【永远】复选框选择后,输入框内的数字将失效,启动后脚本将一直执行下去。输入框输入0表示执行0次无意义,所以不支持。
Delay Thread creation util needed:直到需要时延迟线程的创建,设置后,线程在Ramp-Up Period的间隔时间启动并运行。不设置,测试计划开始后启动所有线程(NEW状态),但不立即运行Sampler,是按照Ramp-Up Period时间来运行的。在实际性能测试过程中,设置或者不设置都影响不大。
调度器
调度器:选中之后可以配置启动时间,立即或者预定的时间。
持续时间(秒):测试计划持续多长时间,会覆盖结束时间。
启动延迟(秒):测试计划延迟多长时间启动,会覆盖启动时间。
Jmeter做接口测试的时候,线程组和循环次数都设置为1
Jmeter做性能测试的时候,循环次数设置为永远
性能测试中添加定时器有什么用?
更能符合测试实际场景。一般用户操作不可能比工具要快
JMETER中定时器讲解:
固定定时器 : 定时器 --- 固定定时器 单位是毫秒
高斯随机定时器:随机的时间段
狭义的并发: 集合点
狭义的并发: 集合点--- 压力测试一部分
jmeter通过同步定时器来实现集合点功能的 同步定时器(Synchronizing Timer)
Number of Simulated Users to Group by:
每次释放的线程数量。如果设置为0,等同于设置为线程组中的线程数量。
Synchronizing timer 仅作用于同一个JVM中的线程,所以,如果使用并发测试,确保"Number of Simultaneous Users to Group by"中设置的值不大于它所在线程组包含的用户数。
Timeout in milliseconds:
如果设置为0,Timer将会等待线程数达到了"Number of Simultaneous Users to Group"中设置的值才释放。如果大于0,那么如果超过Timeout in milliseconds中设置的最大等待时间(毫秒为单位)后还没达到"Number of Simultaneous Users to Group"中设置的值,Timer将不再等待,释放已到达的线程。
如果设置Timeout in milliseconds为0,且线程数量无法达到"Number of Simultaneous Users to Group by"中设置的值,那么Test将无限等待,除非手动终止。Timeout in milliseconds中设置的单位是毫秒。
jmeter场景运行:
按照运行方式来分:分为GUI图形化运行、命令模式运行
按照运行架构来分:分为本地运行、远程运行
GUI图形化远程运行:
1、在负载机上部署Jmeter,确保Jmeter的bin目录下存在ApacheJMeter.jar与jmeter-server.bat两个文件。
2、双击启动负载机的jmeter-server.bat程序。
Jmeter4.0双击会报错,如何配置?
找到jmeter.properties文件并找到”rmi.ssl.” 把该项改为true ,去掉前面的# 号(去掉注释)
3、在Jmeter控制机的bin目录下找到jmeter.properties文件并修改”remote_hosts”,增加负载机IP,多个IP使用英文逗号隔开,修改后要重启Jmeter。如下图:
remote_hosts=127.0.0.1:1099,192.168.1.126:1099
4、进入Jmeter控制机的GUI图形界面,远程运行点击 按钮即可。点击后,Jmeter控制机会自动探测,只要先启动远程负载机上的Agent,开始运行测试计划时就会自己连接负载机去完成。
5、如果要停止,点击上面右图的后面两个按钮即可。前者是执行完成当前迭代停止(比如脚本中有5个请求,在运行第2个的时候收到停止命令,那么将继续执行完5个请求然后再停止),后者是立即终止。
命令模式运行
jmeter命令行工具部分参数说明:
-n:非GUI方式运行。
-t:指定运行的测试脚本地址与名称,可以是相对或绝对路径
-h:查看帮助
-v:查看版本
-p:指定读取Jmeter属性文件,比如jmeter.properties文件中设置的
-l:记录测试结果到文件,指定名称与路径,可以是相对或绝对路径
-s:以服务器方式运行(远程方式)
-r:开启远程负载机,远程负载机列表在jmeter.properties文件中指定
-R:开启远程负载机,可以指定负载机IP,会覆盖jmeter.properties中的设置
-L:定义Jmeter的日志级别,如DEBUG、INFO、ERROR等
-H:设置代理IP
-P:设置代理端口
-u:设置代理帐号
-a:设置代理帐号密码
-X:停止远程执行
-J:定义Jmeter属性,等同于在jmeter.properties中设置
-G:定义Jmeter全局属性,等同于在Global.properties中设置,线程间可相互共享
命令模式运行:
jmeter -n -t 脚本路径 -l 结果路径
jmeter -n -t "C:\Jmeter_script\T93\T93login_BBS_Random.jmx" -l "C:\Jmeter_script\T93\result\res.jtl"
远程模式运行
jmeter -n -t 脚本路径 -l 结果路径 -r