1.1 参数类型
01、接口响应为3XX的请求一般要使用跟随重定向,200的请求任意都可以
02、自动重定向只有一个最终的响应结果,不会有过程,跟随重定向会记录请求每一步的路径
自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。
Use keep Alive:当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。
Use multipart/from-data for HTTP POST:当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。
Browser-compatible headers:浏览器header兼容设置。当使用了 multipart/from-data,它会优先于header中的Content-Type and Content-Transfer-Encoding设置,只发送header的Content-Disposition。
同请求一起发送参数 :在请求中发送URL参数,对于带参数的URL ,jmeter提供了一个简单的对参数化的方法。用户可以将URL中所有参数设置在本表中,表中的每一行是一个参数值对
从HTML文件获取所有有内含的资源(高级选项中):当该选项被选中时,jmeter在发出HTTP请求并获得响应的HTML文件内容后,还对该HTML进行Parse 并获取HTML中包含的所有资源(图片、flash等),默认不选中,如果用户只希望获取页面中的特定资源,可以在下方的Embedded URLs must match 文本框中填入需要下载的特定资源表达式,这样,只有能匹配指定正则表达式的URL指向资源会被下载。
Save response as MD5 hash?(高级选项中) :选中该项,在执行时仅记录服务端响应数据的MD5值,而不记录完整的响应数据。在需要进行数据量非常大的测试时,建议选中该项以减少取样器记录响应数据的开销
1.2 传参
1.2.1 普通参数
1、parameter
键值对形式的参数 (参数名称:值)
xx=xx&xxx=xx格式的参数为GET或者POST请求中,url中带的参数值
2、body data
json格式的是POST请求中的参数,POST请求参数时,看请求的格式,是否需要在请求中添加HTTP信息头管理器,将请求的Content-Type 或者User-Agent 等进行定义,Body Data方式中,请求的参数不会映射成后台程序中对应的实体类型
1.2.2 beanShell接口传递参数
1、添加正则表达式,提取出token的值
2、在“获取token”线程组:添加后置处理器BeanShell PostProcessor
${__setProperty(newtoken,${token},)}
意思是把获取的变量${token}设置为全局变量,并以新的名字newtoken来进行引用。
3、在“业务流”线程组引用全局变量newtoken
引用方式是${__P(newtoken,)},注意花括号中是两个下划线,newtoken后还跟一个逗号,不要写漏了。
4、需要调试的话,可以添加一个debug postprocessor查看数据是否获取正确。
1.2.3 配置元件(CSV Data Set Config)
1、jmeter参数文件的第一行没有列名称
2、编码问题在使用CSV Data Set Config参数化时要求的比较严格
3、Recycle on EOF? --- True=当读取文件到结尾时,再重头读取文件
False=当读取文件到结尾时,停止读取文件
4、Stop thread on EOF? --- 当Recycle on EOF为False时,当读取文件到结尾时,停止进程,当Recycle on EOF为True时,此项无意义
1.3 上传测试文件
1、必须设置Use multipart/form-data for POST,否则request将不包含上传的文件,
2、必选添加文件的参数名称,否则在Server段用Servlet进行解析时,无法获得文件,
3、MIME类型则‘textplain’,'multipart/form-data'(与抓包中content-type一致)
4、Client implementation-〉Implementation-〉Java
1.4 随机变量
1.4.1 jmeter自带函数
jmeter自带的函数助手可以查看jmeter函数
举例:其中_Random为随机数的生成函数,下图是随机四位数的生成截图,输入最大值和最小值,点击“Generate”按钮,就会生成自动随机生成四位数的函数;函数使用和变量使用方法一致;
1.4.2 代码生成随机变量
在线程下添加前置处理器,在script中编写代码用于生成随机变量,下面代码是随机生成过alarm_name变量的代码:
String alarm_name="alarm_"+System.currentTimeMillis();
vars.put("alarm_name", alarm_name);
1.5 断言
1、BeanShell断言
作用对象:针对sampler中的Bean Shell sampler而使用的断言
2、BSF断言
BSF(Bean Scripting Framework),作用对象:针对sampler中的BSF sampler而使用的断言
3、比较断言(compare assertion)
这是一种比较特殊的断言元件,针对断言进行字符串替换时使用;
作用对象:需要替换的字符串
4、HTML断言
对响应类为XML类型的文件进行断言;
作用对象:针对sampler中的SOAP/XML-RPC Request而使用的断言
5、JSR223断言
JSR223即Java 规范请求,是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求;
作用对象:针对sampler中的JSR223 sampler而使用的断言
6、MD5Hex断言
MD5是一种消息摘要算法,用以提供消息的完整性保护(具体关于MD5的知识请自行查询);
作用对象:针对参数类型为MD5Hex加密的参数的断言
7、Size断言
用于判断返回内容的大小;
作用对象:返回信息,响应报文
8、SMIME断言
SMIME是一种多用途网际邮件扩充协议,相比于之前的SMAP邮件传输协议,增加了安全性,对邮件主题进行保护;
作用对象:针对采用了该种邮件传输协议的信息
9、XML概要断言
亦可以称为XML模型断言/XML数据类型断言;XML Schema 定义了两种主要的数据类型:①xml document schema 文档架构 ;② 文档架构xml-schema xml模式
作用对象:返回结果为XML概要断言的2中数据类型的消息
10、XML断言
XML(可扩展标记语言) 提供一种描述结构化数据的方法。与主要用于控制数据的显示和外观的 HTML 标记不同,XML 标记用于定义数据本身的结构和数据类型;
作用对象:判断返回结果是否和xml的格式即<>>成对出现
11、XPath断言
XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
作用对象:针对返回信息为XPAth的数据类型进行断言
12、响应断言
判断返回内容中的内容
作用对象:响应报文中的所有对象
13、断言持续时间
用于判断服务器的响应时间
作用对象:服务器
1.6 并发测试
Number of Threads(users): 一个用户占一个线程, 200个线程就是模拟200个用户
Ramp-Up Period(in seconds): 设置线程需要多长时间全部启动。如果线程数为200 ,准备时长为10 ,那么需要1秒钟启动20个线程。也就是每秒钟启动20个线程。
Loop Count: 每个线程发送请求的次数。如果线程数为200 ,循环次数为10 ,那么每个线程发送10次请求。总请求数为200*10=2000 。如果勾选了“永远”,那么所有线程会一直发送请求,直到选择停止运行脚本。