在测试中需要传一些参数,以及设置一些变量、请求头、请求的固定信息等,下面使用配置原件来显示
配置元件的用途:做一些基础配置
常用配置原件:http header cookie cache 等
配置原件的执行顺序:先加载配置 再发起请求
配置原件的作用范围:根据配置原件所在的位置,它作用于它坐在的上下文
创建配置原件:
线程组 ->add -> Config Element ->配置原件
为http请求配置Header,如下图
它的执行顺序:在运行Sampler时先加载 header
它的作用范围:在与此控件平级的目录及以下的目录可以使用这里配置的信息,以外的将不再作用范围
常见添加的信息:content-type:application/json,以及自定义参数 token等
用户定义变量控件用来 定义变量用,是参数化的形式之一
下图所示在 Name中填写变量名, value填写默认值 Description中填写描述
在这里添加完变量后,在Http Requet 中 用 ${param}的方式来引用变量
通过csv文件的形式加载参数,这是参数化的方式之一,在压测时可能需要大量的变量和值,可以使用这种方式加载大量参数值
csv文件类似于excel表格,是一种表格文件,一般第一行的单元格内填写的是变量名,从第二行开始填写变量值
FileName:本地的csv文件的地址
Variable Name:参数名,参数之间用英文逗号隔开:name,password
Ignore first line:是否忽略第一行,一般情况下第一行写的是参数名,从第二行开始是参数值,因此是True ,如果从第一行就是参数值,那就是False
Delimiter:间隔符,参数和参数之间用什么符号分割,一般都是用英文逗号
Allow quoted Data:参数是否用引号引起来,一般用False
Recycle on EOF:是否循环请求,是否轮询请求csv文件中参数,一般选true
Stop thread on EOF:csv中的数据轮询一边是否停止 ,一般写False
Sharing mode: 当前这个csv参数的作用范围
创建前置处理器:线程组->add ->pre processor ->前置处理器
常用前置处理器:
Sample Timeout:设置请求的超时时间
BeanShell PreProcessor:比较灵活,可以编写类java代码来提取变量等操作
在Sampler前执行,一些需要代码操作的使用该前置处理器,例如要生成一些特殊格式的随机数等,将产生的数值可以赋值给变量(局部变量、全局变量),用于后面的请求
例如:获取当前时间的时间戳
vars.put方法给参数赋值
vars.put(“timestamp”,timestamp+“”),其中timestamp是一个变量,可以在该sampler上下文中被引用
后置处理器用来给取样器提取响应参数的,用来给后面的请求使用
常用后置处理器:
Json 数据提取器
正则表达式
Xpath数据提取器
创建后置提取器: 线程组 -> add ->post processors ->后置处理器
json提取器:通过jsonpath语法提取数据并赋值给变量
Names of created variables:变量名
Json Path expressions: jsonPath表达式提取参数
Match No.:如果提取的参数是一个数组,这里写一个需要匹配的下标,不写的话随机取一个
Default Values:默认值,如果提取不到参数,就会使用默认值
通过Xpath规则来提取返回值数据
Names of created variables:变量名
xpath query:xpath表达式
Match No.:如果提取的参数是一个数组,这里写一个需要匹配的下标,不写的话随机取一个
Default Values:默认值,如果提取不到参数,就会使用默认值
通过正则表达式的形式匹配参数
Names of created variables:变量名
Regular expressions:正则表达式
Template:模板 1 1 1
Match No.:如果提取的参数是一个数组,这里写一个需要匹配的下标,不写的话随机取一个
Default Values:默认值,如果提取不到参数,就会使用默认值
jmeter有8大组件:线程组、前置处理器、后置处理器、采样器、配置原件、监听器、定时器、控制器
加载顺序:如下图,先从下到上再从左到右加载
线程组 ->定时器-> 控制器 ->前置处理器 ->配置原件-> 后置处理器 ->采样器 ->断言 ->监听器
这里要注意一下 Jmeter能调整各个控件的位置顺序,但是这个顺序并不影响他们的执行顺序
具有作用范围的控件:监听器、配置原件、前置后置处理器、断言、计时器
只作用在一个Request: 在Request下增加控件,就只作用在这一个Request上
作用在多个Request:将控件增加在线程组下,则控件将作用于整个线程组下的Request
作用在多个线程组:将控件直接在TestPlan上添加,将会对所有的线程组生效