84226432 2020-07-05
测试计划可以对线程组进行控制
线程组参数详解
跳转到其中一个子节点执行
Switch Value:0 执行第一个子节点
在每个线程内,该控制器下的内容只会被执行一遍,无论循环多少次,都只执行一遍。嵌套在循环控制器之内时是个例外,每个线程组循环都会被执行一遍
比如说有一种场景是,10个并发里,有2个事操作业务A,有8个是操作业务B,要模拟这种业务场景,则可以通过吞吐量控制器来模拟(还可以通过两个线程组进行控制)
一般很少用,通常使用CSV参数化代替
常用正则表达式:(.+?)
配置请求头:
例如:User-Agent、Cookie等
一般情况下,我们在一个项目中调用的接口中域名、端口等都是相同的。当我们创建多个HTTP 请求时,由于这些数据是必填项,所以,我们就需要不停地填写相同的数据。如果项目进行过程中出现了更改域名、更改端口号等情况,我们又需要把每一个请求中的数据都做更改,这样看上去似乎有些麻烦了,这时可以使用http请求默认值。
用户自定义变量可以让我们随机选取变量,从而达到在性能测试过程中可以随机选取变量的目的。但是在实际使用中发现一个问题,并不试用于所有场景,比如登录
每次释放的线程数量。如果设置为0,等同于设置为线程租中的线程数量。
超时时间为0时,默认无超时限制。
定时器的作用域
1、定时器是在每个sampler(采样器)之前执行的,而不是之后(无论定时器位置在sampler之前还是下面);
2、当执行一个sampler之前时,所有当前作用域内的定时器都会被执行;
3、如果希望定时器仅应用于其中一个sampler,则把定时器作为子节点加入;
4、如果希望在sampler执行完之后再等待,则可以使用Test Action;
作用:通过ThreadDelay设定每个线程请求之前的等待时间(单位为毫秒)。注意:固定定时是有作用域的,放到线程组下其作用域是所有请求都会延迟固定器设置的时间,如果放到请求内,作用域是单个请求延迟时间(常用)。
响应断言
1)测试计划中添加非配置元件-http代理服务器
2)http代理服务器设置Jmeter代理端口
3)测试计划中添加线程组,并在http代理服务中选择该线程组作为目标控制器
4)浏览器中设置代理服务器,ip为Jmeter所在主机的ip地址,端口为http代理服务器设置的端口
5) 启动http代理,浏览器中访问相关页面,jmeter会自动录制该操作过程的请求信息。
随机数的使用
参见前文正则表达式提取器
jmeter官网下载jmeter-plugins-manager.jar放在jmeter的lib/ext目录下,启动Jmeter在选项中即可看到插件功能
1.Jmeter安装插件PerMon
2.服务器(有JDK环境)安装ServerAgent
启动ServerAgent: ./startAgent.sh
常见问题:
1.权限
2.端口
3.防火墙
解决方法:
防火墙设置一下白名单,打开配置文件命令:vi /etc/sysconfig/iptables
添加这行命令:-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 7777 -j ACCEPT
添加环境变量
JMETER_HOME:C:\Program Files\Java\jdk1.8.0_221
path:%JMETER_HOME%\bin
CMD输入(例如):
jmeter -n -t D:\test.jmx -l D:report.jtl -e -o D:report.html
jmeter内存溢出解决:jemter.bat下:
set HEAP=-Xms512m -Xmx512m set NEW=-XX:NewSize=256m -XX:MaxNewSize=256m #将其修改为: set HEAP=-Xms512m -Xmx4096m set NEW=-XX:NewSize=256m -XX:MaxNewSize=512m
同样的csv文件在所有机器上路径一致
代理机与主机设置:bin目录下jemter.propreties
remote_hosts=127.0.0.1,192.168.1.4 # ip地址 server_port=1099 # 端口一致 server.rmi.ssl.disable=true
代理机启动:jmeter-server.bat
主机启动:先启动jmeter-server.bat,然后启动ApacheJMeter.jar