
PS: 这里要说下Cookie,在后面的参数化过程中发现登录接口请求头里要携带cookie;我一直的误解就是只有登录才有cookie产生,其实是不对的, 一般的cookie是会话被创建时就产生,关闭后就消失 ;可以随便访问项目的网页获取到cookie,然后想办法将cookie加到请求头里去~
1、CSV控制-CSV DATA Set Config
线程组 ->新建请求 ->参数用变量代替 ,格式${变量名}
新建EXCEL文件,写入测试数据->另存为.csv文件的格式;
线程组 ->添加配置元件->CSV DATA Set Config->在配置元件里输入csv的绝对地址 ->若CSV不含表头,则在CSV数据文件设置里输入表头变量;反之,则不添加;
2、用户自定义变量
比如有登录接口和获取token的接口,都需要输入用户名和密码,如果我在每个接口请求参数都输入一次,相当于输入了两次;那么,可以使用自定义变量,将用户名和密码的值存在一个变量里,后续的接口需要时直接调用参数即可,减少重复输入的次数。具体 *** 作如下:
线程组-> 添加配置元件->选择用户自定义变量->添加变量名及对应的值(key&value)
线程组 ->新建请求 ->参数用变量代替,格式为${变量名},调用变量值;
PS: 用户定义变量的所有数据只会初始化一次,不管你多少线程,循环多少次,它的值是不变的(即同一个变量的值写死,不能改变)。 用户自定义变量作用域不同,表示的含义也有区别;放在线程组外,表示全部变量;放在线程组内表示局部变量。
3、用户参数
在调试脚本的时候,可以使用前置处理器中的用户参数组件进行数据的提供,在该数据中可以使用固定值也可以使用变量值。
线程组-> 添加前置处理器->选择用户参数->添加变量名,并输入多个对应的值
每次迭代更新一次:如果选中该选项,则参数的值在每个迭代中保持不变,在新的迭代开始时取下一个值。
PS:在使用用户参数时,如果有n个值,需要设置线程数=n,若设置循环为n,只会调用第一个值执行n遍。
4、函数助手
函数助手里内置了多个函数,如__Random或${__CSVRead(,)}等可以按需求使用不同的功能函数;
面板->选项->函数助手对话框->根据需要选择不同的函数->设置范围及变量名->后续接口调用。
${__CSVRead(,)}可以实现读取CSV数据,()里逗号左边是CSV路径,右边是CSV里存放的变量的索引;索引从0开始依次增加1,如 ${__CSVRead(D:\jmeter\logins.txt,0)}。 注:这里的CSV文件就不要表头了。
用户自定义变量的值写死,不能改变;而用户参数,可以引入函数助手,使得同一变量有不同的变量值。
创建:添加->配置元件->用户定义的变量
作用:当前的线程组内所有Sampler都可以引用变量,方便脚本更新;当参数发生变化时,只要在【用户定义的变量】中更新对应变量的参数即可,不需要逐个修改每个http中的参数
变量定义:可以是具体的值,也可以是函数(函数可自动生成:选项->函数助手对话框)
变量引用:Sample中引用变量的格式为:${变量名}
创建:选项->函数助手对话框
__MD5 :进行MD5加密,获取加密函数
__Random: 在最大值和最小值之间取一个随机值。有三个参数:最大值,最小值,获取的随机值的变量名
例如,生成[0,2]内的随机函数
直接将函数作为变量传递:
或者将函数作为用户定义的变量值传递:
还有其他常用函数解释:
__P: 设置属性的默认值。有两个参数:变量名,默认值(默认值为1)。例如:${__P(hostname,XXX)}:返回属性hostname的值,如果没有定义该属性则返回值XXX
__CSVRead: 从CSV文件中读取字符串。有两个参数:文件名,第几列(0表示第一列)
__UUID: 随机取值,且结果唯一
创建:添加->配置元件->CSV Data Set Config
作用:可以从.csv、.dat等文件中获取数据,并将这些数据参数化。当数据发生变化时,只需要改原始文件,不需要改脚本
1)Filename:文件路径(如果和脚本同路径,只需要输入文件名;否则要输入全路径)
2)File encoding:编码和文件格式保持一致,如果有中文,最好用UTF-8
3)Variable names:参数名称,参数之间用,隔开
4)Delimiter:输入文件(csv/dat等)中的分割符号;用\t代替tab键
5)Allow quoted data:当获取的数据中包含"时,要设置为True
6)Recycle on EOF: 设置为True后,允许循环取值
7)Stop Thread EOF: 当Recycle on EOF为false并且Stop Thread EOF 为true,则读完csv文件中的记录后,停止运行,线程数及执行次数无效
8)Sharing Mode:共享模式: All threads:所有线程,所有线程循环取值,线程1取第一行,线程二取下一行;Current thread group:当前线程组,各个线程组分别循环取值;Current thread:该测试计划内的所有线程都取第一行
.csv文件的填写格式:
调用CSV Data Set Config中的变量:
Jmeter可以用来模拟多用户来访问http(s)请求,并返回访问结果,而地图服务归根结底仍是个http(s)请求。所以我们可以使用Jmeter对地图服务进行压力测试。
当然地图服务也有着它的特殊性,对于一般的网页服务用户是打开,浏览,跳转,关闭这些步骤。而对于一个地图服务来说用户除了以上的 *** 作外还会不停的去放大缩小、拖拽地图。因此页面上的数据也会不停的改变所以我们要充分考虑其特殊性来设计压力测试。
1.创建一个测试计划,自定义其名称和注释,并将测试计划文件保存在文件目录下。
2.添加线程(组),设置线程组参数。线程组模板多样而且支持插件拓展,本文选取steping thread group作为例子。
名称: 线程组的名称
注释: 线程组注释
采样器错误后执行的动作: 分为继续、开始下一个进程循环、停止线程、停止测试、立刻停止测试五种。常用的为继续和停止测试两种。
在Steping Thread Group线程组中一下参数需要设置:
This group will start: 本次测试中将启动的最大线程数。
First wait for: 启动第一个线程之前等待的时间。
Then start: 第一次启动的线程数。
Next add: 启动后每次增加的线程数。
Threads every: 两次增加线程数的时间间隔。
Using ramp-up: 增加线程数的时间。
Then hold load for: 增加到最大线程数后持续的时间。
Finally stop: 停止过程中每次减小的线程数。
Threads every: 两次减小线程数的时间间隔。
3.添加测试请求,并设置参数。
协议:http(s)
服务器名称或IP:填写ArcGIS server 对应的服务器名称或IP地址,要保证测试客户机和服务器网络通畅。
端口:所测试http(s)请求的端口号。在ArcGIS Server中http对应6080,https对应6443。
路径:填写测试的http(s)服务端口号后的部分。
4.设置ArcGIS自定义参数
同请求一起发送的参数:
F: 返回类型,支持html | json | image | kmz四种格式,我们请求的是图片,选择f=image即可;
Bbox: 地图的左下角坐标和右上角坐标,排列顺序是<xmin>,<ymin>, <xmax>, <ymax>。例如bbox=-104,35.6,-94.32,41;
Size: 返回图片的大小,宽度和长度,例如:size=600,550;
imageSR: 请求图片的坐标系统;
format: 请求图片的格式,有以下几种:png | png8 | png24 |jpg | pdf | bmp | gif | svg | png32
layers: 请求图片的图层,有四个关键词:show(显示)hide(隐藏)include(包括)exclude(不包括);例如:show:1(表示显示第一层数据),同样hide:1(表示隐藏第一层数据);
layer Definitions: 表示获取满足当前条件的数据,相当于where条件或者是Filter;例如:layerdefs=0:COM1='COPPER'(表示第0层,字段COM1中的值等于“COPPER”的所有要素);
transparent: 透明度,只对png格式有效;
5.通过Bbox参数,模拟用户移动、放大缩小地图。
Bbox参数可以随http请求发送一个矩形范围,来让服务器返回对应矩形范围内的数据。通过Bbox参数传入不同大小的矩形范围和不用位置的矩形范围来模拟用户不断的放大缩小和拖拽地图。Bbox中参数为地图的左下角坐标和右上角坐标,排列顺序是<xmin>,<ymin>, <xmax>, <ymax>。首先需要一个生成的随机矩形范围的数据,可以是txt或者csv。
填写随机网格数据配置参数
变量名称: CSV文件中的表头名称,用英文逗号隔开
忽略首行: 选择true
在设置请求中添加Bbox参数,将四个坐标参数使用${}引用,填写格式为 ${XMin},${YMin},${XMax},${YMax} 。勾选编码选项
6,添加监听器收集测试结果。
添加监听器,配置监听器输出的文件路径。
启动jmeter,查看测试结果。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)