JMETER的使用和元器件的介绍 -第二节
我们以jmeter 5.4.1为例子,如果发get请求
接口例子 get
GET /WebServices/WeatherWS.asmx/getSupportCityString?theRegionCode=string HTTP/1.1 Host: ws.webxml.com.cn
那么相关的配置为下图,要将参数输入到参数内,参数内的传参在发送请求时会在url地址后带上参数
接口例子psot
传json的格式 {"username": "eppadmin", "password": "7b61b190ecd5e8d6a5251807df586a71"}
POST /WebServices/WeatherWS.asmx/getSupportCityString HTTP/1.1 Host: ws.webxml.com.cn Content-Type: application/x-www-form-urlencoded Content-Length: length theRegionCode=string
已知请求体发送的请求为:theRegionCode=string 相关的配置为
因为要发送请求头,所以我们要在
填写对应参数:Content-Type: application/x-www-form-urlencoded 注意请求参数要写到消息体数据里,这样请求的内容就会输入到消息体内
注意传json内容的格式不要写错标准格式为:{"city":"110000", "month":"4"}
如何让自己避免重复写的jmeter的相关配置?
下面的接口相关的ip和编码,端口不用写,自动带上,如果下面的接口写了默认配置会把他自动覆盖
逻辑控制器if 如果登录成功为真的话执行下面 什么情景下用如果???
、
勾选第二个代表他的每项子请求都要判断下条件
添加用户的自定义变量和if循环的结合?
预期:加一个后置处理器,登录完之后修改if的vip的值为1 子请求无法进行访问?
操作步骤 在登录下,
1.添加一个后置处理器 添加内容 vars.put("vip","1")
2.在if判断器下勾选子请求发送前判断值
3.发送会看到子请求不会请求
测试性能时候最好加一个事物控制器,把所有的接口放到事物控制器下?????????
如果不把登录和注册算成一个事物,一个tps大,一个接口tps小,算到一起会小,强关联才算一个事物
不是强关联就要单独算事物
如果一个接口你不给它加断言他是不会错的?除非崩溃?想要看看错不错就得给他加上断言 ?
随机控制器,随机执行一个?
设计场景,100个tps压测两个接口,分a40%,分b60%如何压测??????
按照个数来?????????????????
设计五个人,循环十次,每次请求10次查询场景?
设计每个用户只登录一次,循环一百遍??????????
加一个仅一次控制器
设计一个用户登录进来,循环查三次不同城市数据??????????
为什么有了循环控制台还要foreach??? 循环查几次
for each a 循环a里面每一个 一般添加一个用户变量,赋值几个名字,然后调到接口这样用的场景
从上一个接口获取数据给下一个接口 ?动态关联 有范围来取 这种比用户变量那个关联要好用
好多种方法,先说下边界提取器 ,也就是查表头
常用的就是取出数据设置成全局变量给别的接口去调用
下载接口的定义?
先拆数据在传输数据
浏览器可以把你传输的数据按照你的要求下载下来,数据流除了数据还有格式,但是只能返回结果,不能转换txt,postman可以
固定定时器?每个请求发送前延迟
你理解什么是重定向?重定向有什么作用?举几个例子?
你访问的资源已经不在你这个地址了,要给人家一个新的地址,完成是两个请求这就是重定向 ,没有找到我找到的资源所以是
302也就是临时重定向 暂时搬到那里
303 永远重定向 永远把数据搬到另一个地址
第二次请求就是200了
用处???????
1.比如你访问百度,使用http访问,会给你指定一个地址 指向https 307是高级版的302比较安全
这样比报错好 和用户二次访问好
2.比如你访问聚美优品的首页,会跳转网站 ,网站分为分站和子站
3.就是登录的时候会生成id 然后请求Home 登录
定时器
高斯定时器?????????????怎么配置????????
80%左右的比例
统一随机定时器??????????????????????????????
常数吞吐量控制器????????????
控制你发的请求的快慢 ,控制tps低让等待发
通过延时控制tps 定时器就是请求发送之前,加入固定的等待时间,有的是高级和低级的配置 tps不够就没用
吞吐量定时器???????????????????????????????????????????????????
在几秒内上用户,如果上不够,不等了直接上发送
JMETER参数化的操作???????????????????????????????????????????
考虑不可能一个用户登录,每次都要变化写成一样的
如果想买运行三次停止就选 fasle true
如果循环不停止 就true false
设计场景,100tps,五分钟?
100*60*5=30000 最少三万个用户
场景???开发给你数据库权限,从数据库写sql语句,写出来语句放到jmeter里面去
d. 从数据库中获取数据
1.先下载Mysql驱动,放到Jmeter的lib目录下
2.添加-配置元件-JDBC Connection Configuration
3.设置下列参数并保存:
ariable Name:连接池名称
Database URL:jdbc:mysql://host:port/db
JDBC Driver class:com.mysql.jdbc.Driver
username:连接数据库的用户名
password:连接数据库的密码
4. 添加JDBC Request取样器
5. 给JDBC取样器添加后置处理器,提取对应数据到系统变量
返回结果看不到他真正存在一个变量里面所以需要加一个debug取样器,这样能看到取到的值是否是我加到的环境变量里
这样的结果和我想要的结果不一样,不太好取值这样操作 ,因为debug取样器拿出来的是一个集合
上面的是将你取到的变量每个以city_name_13=bobo 这种返回结果
下面是将取到的结果以字典方法存到一个列表里
取多个字段的用法??????????????????????
仅链接一次数据库,查询所有城市,查询接口 按照数据库返回的数据---执行N遍???????????????????