接上一篇博客,想要了解线程组、HTTP请求、察看结果树的可查看:Jmeter使用教程 压力测试(1)
用户自定义的变量/User Defined Variables
可以在这里添加你所需的变量名和对应的值,然后在需要对应的地方用该格式引用${变量名}
使用自定义变量的好处在于无需在长串代码中寻找需要修改的值,也可以多地方引用该变量,个人感觉更便捷一些。
例如下图,我将ip设为变量,变量名为domain,那么我就可以在http请求中使用${domain}
来引用他。
HTTP信息头管理器/HTTP Header Manager
当后端需要一些验证信息,就可以利用信息头管理器了。请求头中的数据通过键值对的形式放到HTTP信息头管理器中。需要什么值就添加什么即可,Cookie也可以使用此种方式。
- 如果信息头管理器放到线程组下,那么线程组下所有 HTTP 请求都会共享这些 HTTP 信息头
- 如果信息头管理器放到某一 HTTP 请求下,那么只有该请求拥有这些 HTTP 信息头
- 存在优先级概念,如果有多个信息头管理器,名称重名的话,会按优先级高的先取
举例,名称:content-type ;传值:application/json ,这是用于告诉服务端消息主体是序列化后的 JSON 字符串。
响应断言/Response Assertion
检查测试中得到的响应数据等 是否符合预期,用以保证性能测试中的数据交互与预期一致。
Apply to:
Main sample and sub-samples: 范围包括主取样器与所有子取样器。
Main sample only : 范围仅限于主取样器。
Sub-samples only :范围仅限于所有子取样器。
JMeter Variable Name to use :范围包括使用的Jmeter变量。
测试字段:
响应文本:响应正文(常用)。
响应代码:响应状态码,比如200、304、404等。
响应信息:响应消息,比如OK、Not Modified、Not Found等。
响应头:响应请求头。
请求头:请求头。
URL样本:请求的URL。
文档(文本):从各种类型的文档中提取文本。此选项开启也会严重影响性能,谨慎使用。
忽略状态:忽略响应状态。
请求数据:请求的body内容。
模式匹配规则:
包括:如果文本包含正则表达式模式,则为true。
匹配:如果整个文本与正则表达式模式匹配,则为true。
相等: 如果整个文本等于模式字符串(区分大小写),则为true。
字符串:如果文本包含模式字符串(区分大小写),则为true。
否:对断言结果进行否定。
或者:将多个测试模式以逻辑“或”组合起来。
举例,参数需根据响应结果来设置,如响应结果中有参数"status":200表示请求成功,那么即可如下设置。如运行后断言失败,在察看结果树里HTTP请求会显示红色失败样式。
BeanShell断言/BeanShell Assertion
BeanShell断言可以使用beanshell脚本来执行断言检查,可以用于更复杂的个性化需求,使用更灵活,功能更强大,但是要能够熟练使用beanshell脚本。
**每次调用前重置bsh.Interpreter/Reset bsh.Interpreter before each call:**若选择此项,则将为每个样本创建对应的解释器。
参数/Parameters:
传递到脚本的参数,有如下两种参数传递方式:
String Parameters:作为单一的变量参数传递;
String[] bash.args:作为数组的字符串数组参数,参数之间通过空格进行分割;
脚本文件/Script file:包含 BeanShell 脚本的运行文件。将重写当前脚本 Script,其文件名存储在脚本变量名中。
**脚本/Script:**手动编写BeanShell 脚本。
举例,响应结果中有参数"code":200表示请求成功,那么即可如下设置。如运行后断言失败,在察看结果树里HTTP请求会显示红色失败样式。
if(!ResponseCode.equals("200")){
Failure = true;
FailureMessage="/common/home:" + ResponseCode + "\n";
return;
}
String response = new String(ResponseData);
Failure = !(response.contains("\"code\":200"));
if (Failure) {
Failure = true;
FailureMessage=response;
}