在jmeter进行测试的时候,有时我们需要确定Jmeter是否正确工作。因为个别情况下,我们利用监听器查看时,监听器返回的结果是正确的,但实际上我们发送的请求中的有些参数可能是错误的,系统并没有按照我们预期的方式进行响应,例如典型的web应用一般都会有如下2种情况:

1.有一个登录页,它是整个应用的入口。当用户登录之后,应用会将用户相关的安全信息放到session中。

2.有一个filter,它拦截请求,检查每个请求相关的session中是否包含有用户安全信息。如果没有,那么请求被重定向到登录页,要求用户提供安全信息。

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


在这种配置下应用前面介绍的测试计划,那么除了登录页之外的其它请求都将因为缺少用户安全信息,而使请求实际定位到登录页。如果不加断言,那么在监听器看来所有的请求都是成功。而实际上,这些请求最终都没有到达它们应该去的地方。

要在JMeter中添加断言,我们首先要知道我们期望返回什么结果,比如我们利用jmeter测试http请求,向程序添加数据,同时,Jmeter又有查询的http请求,那么,我们当然要验证我们利用jmeter的http请求,是否成功添加了数据,这个时候,我们可以在查询的http请求中添加断言。

Jmeter3.0中有13种不同的断言,下面简单介绍下每个断言各自拥有什么样的作用:

1、BeanShell断言

作用对象:针对sampler中的Bean Shell sampler而使用的断言

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


2、 BSF断言

作用对象:针对sampler中的BSF sampler而使用的断言

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


3、比较断言(compare assertion)

这是一种比较特殊的断言元件,针对断言进行字符串替换时使用;

作用对象:需要替换的字符串

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


Select Comparison Operators:选择比较运算符

Compare Content:可以选择比较的内容类型(true/false或者自定义,编辑)

Compare Time:比较时间(可以设定比较的时间,单位为秒,默认为-1)

Comparison Fitters:比较修改工具

regular expression substitutions:替换正则表达式

Regex String:要替换的字符串(可从断言结果中选择)

substitutions:替换的字符串(替换结果)

4、HTML断言

对响应类为XML类型的文件进行断言;

作用对象:针对sampler中的SOAP/XML-RPC Request而使用的断言

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


Tidy Settings:Tidy 环境(Tidy是一个HTML语法检查器和打印工具,可以将HTML转换为XML类型的文件)

Doctype:文档类型(可通过下拉框选择不同文档类型→ omit疏忽遗漏的/auto动态的/strict严格的/loose宽泛的。

Format:文件格式(可选择HTML/XHTML/XML三种不同类型的文件格式来检查返回内容)

Errors only:误差校正(能接受的最大值)

Error threshold:误差/错误范围(可选择误差/错误数量的范围,最大值)

Warning threshold:警告范围(可选择误差警告的数量范围,最大值)

如果勾选"Error only"这里忽略Warning,只对误差作统计检查;如果对返回内容的检查结果不超过指定结果,则断言通过,否则失败。

Write JTidy report to file:写入JTidy报告的文件(JTidy是Tidy的一个java移植,可以将它当成一个处理HTML文件的DOM解析器)

5、JSR223断言

JSR223即Java 规范请求,是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求;

作用对象:针对sampler中的JSR223 sampler而使用的断言

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


6、MD5Hex断言

作用对象:针对参数类型为MD5Hex加密的参数的断言

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


MD5Hex:将已被MD5加密的参数写入其中,添加取样器等其他元件

7、Size断言

用于判断返回内容的大小;

作用对象:返回信息,响应报文

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


APPly to:应用范围(返回内容的断言范围)

Main sample and sub-samples:作用于父节点取样器及对应子节点取样器

Main sample only:仅作用于父节点取样器

Sub-samples only:仅作用于子节点取样器

JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

Response Size Field to Test:响应字节的测试范围(可以选择用于判断的响应范围)

Full Response:全部响应

Response Headers:响应头部

Response Body:响应主体

响应代码:响应报文相关的代码

响应信息:响应报文的信息

Size to Assert:断言字节范围

字节大小单位为:字节;比较顺序是①返回内容的大小②比较类型③指定字节大小

8、SMIME断言

作用对象:针对采用了该种邮件传输协议的信息

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


9、XML概要断言

亦可以称为XML模型断言/XML数据类型断言;XML Schema 定义了两种主要的数据类型:①xml document schema 文档架构 ;② 文档架构xml-schema xml模式

作用对象:返回结果为XML概要断言的2中数据类型的消息

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


XML Schema:XML概要模型

File Name:文件名(写入需要断言的文件名称)

10、XML断言

作用对象:判断返回结果是否和xml的格式即<></>成对出现

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


11、XPath断言

作用对象:针对返回信息为XPAth的数据类型进行断言

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


Apply to:适用范围

Main sample and sub-samples:主要样本和次级样本

Main sample only:仅主要样本

Sub-samples only:仅次级样本

JMeter Variable:jmeter变量(输入框内可输入jmeter的变量名称)

XML Parsing Options:XML解析选项

Use Tidy(tolerant parser):使用Tidy(容错解析器),默认选择quiet(不显示)

Quiet:不显示

Report errors:错误报告

Show warnings:显示错误

Use Namespaces:使用名称空间

Validate XML:验证XML(文件包/数据)

Ignore Whitespace:忽略空格(这允许你指定语法分析器可以忽略哪个空格,而哪个空格是重要的)

Fetch external DTDs:获取外部DTDs(一些XML元素具有属性,属性包含应用程序使用的信息,属性仅在程序对元素进行读、写操作时,提供元素的额外信息,这时候需要在DTDs中声明)

XPath Assertion:输入框中写入xpath断言,点击Validate验证其正确性

True if nothing matches:确认都不匹配

12、响应断言

判断返回内容中的内容

作用对象:响应报文中的所有对象

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


APPly to:适用范围

Main sample and sub-samples:作用于父节点取样器及对应子节点取样器

Main sample only:仅作用于父节点取样器

Sub-samples only:仅作用于子节点取样器

JMeter Variable:作用于jmeter变量(输入框内可输入jmeter的变量名称)

要测试的响应字段:要检查的项

响应报文

Documeng(text):测试文件

URL样本

响应代码

响应信息

Response Headers:响应头部

Ignore status:忽略返回的响应报文状态码

模式匹配规则:

包括:返回结果包括你指定的内容,支持正则匹配

例如:

响应字段为: 响应文本

模式匹配规则:匹配

断言为:1、invalid 2、[a-z]+

当返回值为:{"msg":"channel invalid."} , 这两个断言都是ok的,返回true

匹配:根据指定内容进行匹配

例如:

响应字段为: 响应文本

模式匹配规则:匹配

断言为:1、{"msg":"channel invalid."} 2、{"msg":"[a-z]+ invalid."} , 3、[a-z]+

当返回值为:{"msg":"channel invalid."} ,断言1 2 是ok的, 断言3是false

当返回值为:{"msg":"channel invalid."} , 断言1 3是false, 断言2才是ok的。

原因是,断言1 只能用于equals,而断言3 只匹配了返回值部分,而不是全部匹配。

Equals:返回结果与你指定结果一致

Substring:返回结果是指定结果的字串

例如:

响应字段为: 响应文本

模式匹配规则:匹配

断言为:1、invalid 2、[a-z]+

当返回值为:{"msg":"channel invalid."} , 断言1返回true, 但断言2返回false

否:就相当于取反。 如果上面断言结果为true,勾选"否"后,最终断言结果为false。如果上面断言结果为false,勾选"否"后,则最终断言结果为 true。

13、断言持续时间

用于判断服务器的响应时间

作用对象:服务器

软件测试员如何完全掌握Jmeter?这13种不同的断言了解一下!


APPly to:适用范围

Main sample and sub-samples:作用于父节点取样器及对应子节点取样器

Main sample only:仅作用于父节点取样器

Sub-samples only:仅作用于子节点取样器

Duration to assert:持续断言

Duration in milliseconds:响应时间设置(单位:毫秒),如果响应时间大于设置的响应时间,则断言失败,否则成功!

总结:

如果我们要确定Jmeter有没有按照我们的预期进行工作,我们应当考虑使Jmeter提供的断言,加到Sampler里面可以对返回的结果进行判断,例如判断HTTP返回结果里面是否含有某个字符串。如果断言为真,JMeter会标记请求为成功,否则标记为失败。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ     群:    755431660