性能测试-JMeter断言之响应断言精说

断言用于验证取样器请求或对应的响应数据是否返回了期望的结果。可以是看成验证测试是否预期的方法。

对于接口测试来说,就是测试Request/Response,断言即可以针对Request进行,也可以针对Response进行。但大部分是对Response做断言。

JMeter常见的断言元件如下:
1.响应断言

2.JSON Assertion

本章节,我们主要先来学习JMeter响应断言.

配置项

Apply to:

1.在大多数情况下,只有主取样器具有所有必需的响应数据。但是很多Web应用使用了Ajax,JQuery技术,单个请求可以在内部产生多个子请求,并且每个请求都有其对应的响应数据。

比如请求某一个页面,页面里的js会调用其他请求。

2.在HTTP请求的高级设置的“Embedded Resources from HTMLFiles”项,勾选了“Retrieve All Embedded Resources”,在发送请求时,会解析相关的嵌入资源,也会导致取样器可能产生多个子取样器。

嵌入资源包括:images、applets、stylesheets、external

scripts、frames/iframes、

background images、background sound等。

3.有重定向的请求,并且勾选了“Follow Redirects”,则主取样器为最后返回的URL请求,

第一次URL和重定向返回的所有URL请求为子取样器。

比如,使用http://www.sina.com/访问新浪,会有两次重定向:

第一次请求: GET http://www.sina.com/ 重定向返回:

Location: http://www.sina.com.cn/

第二次请求: GET http://www.sina.com.cn/ 重定向返

回: Location: https://www.sina.com.cn/

第三次请求: GET https://www.sina.com.cn/

主取样器为第三次请求;第一次,第二次与第三次请求为子取样器。

Main sample and sub-samples

范围包括主取样器与所有子取样器

Main sample only

范围仅限于主取样器

Sub-samples only

范围仅限于所有子取样器

JMeter Variable Name to use

范围包括使用的JMeter变量

Field to Test:
1.Text Response

响应正文。对于HTTP协议来说,是响应的message-body(不包括状态行与首部字段)

2.Response Code

响应代码。对于HTTP协议来说,是响应状态码,比如200、304、404等。

3.Response Message

响应消息。对于HTTP协议来说,是原因短语,比如OK、Not Modified、Not Found等。

4.Response Headers

响应首部字段。

5.Request Headers

请求首部字段。

6.URL Sampled

请求的URL。对于HTTP请求,若勾选了“Follow Redirects”,则包含重定向后的URL。

7.Document(text)

通过Apache Tika从各种类型的文档中提取文本。此选项开启也会严重影响性能,谨慎使用。

8.Request Data

请求数据。对于HTTP协议来说,是请求的message-body(不包括请求行与首部字段)

9.Ignore Status

通过将断言的结果与现有的响应状态相结合来确定取样器的总体成功。

当选择Ignore Status复选框时,将强制响应状态在计算断言之前是成功的。

HTTP协议在返回4xx和5xx的状态码默认是不成功的,勾选此项可用于在执行进一步检查之前设置状态成功。

请注意,这将具有清除任何以前的断言失败的效果,因此请确保只在第一个断言上开启此设置。

Pattern Matching Rules:

1.Contains

如果文本包含正则表达式模式,则为true

2.Matches

如果整个文本与正则表达式模式匹配,则为true

3.Equals

如果整个文本等于模式字符串(区分大小写),则为true

4.Substring

如果文本包含模式字符串(区分大小写),则为true

注意:

Contains和Matches模式支持Perl5类型的正则表达式;

Equals和Substring模式使用文本字符串,不支持正则表达式。

5.Not

对断言结果进行否定。

6.Or

将多个测试模式以逻辑“或”组合起来。

Patterns to Test:

要测试的模式列表。每个模式都是单独测试的。如果模式失败,则不检查其他模式,使用多个模式设置一个断言与使用每个模式设置多个断言之间没有区别(假设其他选项相同)。

Custom failure message:

自定义断言失败信息。即设置“Assertion failure message”的值。

对请求做断言

1.断言请求首部字段

在“要测试的响应字段"选择“Request Headers”

2.断言请求URL地址

分两种情况讨论:

1)若在“HTTP Request”中勾选了“Follow Redirects”,则断言对象包含请求URL,与重定向Location首部返回的URL,重定向若有多次,则包含每次返回的URL;

2)若在“HTTP Request”中没有勾选“Follow Redirects”,则断言对象只针对请求URL。

对响应做断言

1.断言响应首部字段

在“Field to Test”选择“Response Headers”

2.断言响应状态码

在“Field to Test”选择“Response code”

3.断言响应原因短语

在“Field to Test”选择“Response Message”

4.断言响应正文

在“Field to Test”选择“Text Response”

多模式断言

在“Patterns to Test”项中可以添加多个断言模式进行测试,多个模式可以使用“与”,“或”以及“非”进行逻辑组合:

1.逻辑与(and)

多个模式之间默认以“与(and)”进行逻辑组合

2.逻辑或(or)

当勾选了“Pattern Matching Rules”中的“Or”,则多个模式之间以“或(or)”进行逻辑组合

3.逻辑非(not)

当勾选了“Pattern Matching Rules”中的“Not”,则将每个模式Not后以“and”或“or”组合

假设有模式p1,p2,p3,... ,pn(优先级not > and > or)

1)仅勾选“Not”

则相当于:(not p1) and (not p2) and (not p3) and

.. and (not pn)

2)勾选“Not”与“Or”

相当于:(not p1) or (not p2) or (not p3) or ...

or (not pn)

原文地址:https://blog.51cto.com/14645850/2464020

时间: 2024-08-29 17:56:08

性能测试-JMeter断言之响应断言精说的相关文章

Jmeter笔记:响应断言详解

平时我们使用jmeter进行性能测试时,经常会用到断言.jmeter提供了很多种断言,本来想全都写一下,但发现每一个断言里面的东西都很多,所以就先写一下我们经常使用的响应断言. 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只

Jmeter 02 Jmeter断言之响应断言

看完上一篇博客,相信大家应该可以使用Jmeter发送HTTP请求了.那么我们既然是要测试,就肯定需要判断结果了.Jmeter对于请求的响应数据提供了几种断言机制,这里大概说一下比较常用的几种断言. 响应断言 响应断言应该算是我们最常用到最方便且对性能消耗较小的断言了,它基本可以覆盖我们对接口响应数据的大部分判断情况,我们还是以上一篇文章中的第二个接口来举例. Url: https://data.cma.cn/weatherGis/web/weather/weatherFcst/getCurren

Jmeter接口之响应断言详解

响应断言 : 对服务器的响应进行断言校验 Apply to 应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选"main sample only" 就足够了,因为我们一个请求,实质上只有一个请求.但是当我们发一个请求时,可以触发多个服务器请求,类似于ajax那种,那么就有main sample 和 sub-sample之分了.此外,对于

【转】Jmeter笔记:响应断言详解

平时我们使用jmeter进行性能测试时,经常会用到断言.jmeter提供了很多种断言,本来想全都写一下,但发现每一个断言里面的东西都很多,所以就先写一下我们经常使用的响应断言. 第一次在cnblog上写东西,不会排版,希望达人指点. 响应断言 :对服务器的响应进行断言校验 (1)应用范围: main sample and sub sample, main sample only , sub-sample only , jmeter variable 关于应用范围,我们大多数勾选“main sam

Jmeter JSON断言和响应断言的区别是什么?

假设响应数据是{"code":0,"datas":{"option":1}} 响应断言:"code":0,检查点这样写就不会报错,但是如果想验证 "option":1,断言结果就会出错. 这时候就需要使用JSON断言. JSON断言:$.datas.option,  预期结果填0,断言通过.需要了解JSON Path表达式语法,很简单,5分钟不到就能搞定. 原文地址:https://www.cnblogs.

JMeter断言处理之响应断言

在之前的文章中,已经学会了发送请求,那么,这个请求的结果是否正确呢?这个就需要使用JMeter的断言之响应断言了. 首先在JMeter中添加一个get请求,这里以中国天气网中获取深圳周边城市.深圳街道和深圳景点的标识码为例: 再添加查看结果树,发送请求,发现报403错误了,原因是接口对来源有防护,需要设置HTTP请求头,添加相应的内容: 这样我们就能获取到数据了,查看一下响应数据: 接下来,添加一个响应断言: 添加完断言后,我们再添加一个断言结果监听器: 运行,就能到断言结果页面查看到有一个请求

接口测试工具-Jmeter使用笔记(四:响应断言)

Jmeter中断言的类型有许多,我不在这里一一列举,只说下我用到的---响应断言. 作用:一个HTTP请求发出去,怎么判断执行的任务是否成功呢?通过检查服务器响应数据,是否返回预期想要的数据,如果是,判断任务成功,反之任务失败. 1.添加方式 选中一个取样器,右键->添加->断言->选中"响应断言" (1)Apply to 关于应用范围,我们大多数勾选"main sample only" 就足够了,因为我们一个请求,实质上只有一个请求.但是当我们发

性能测试-JMeter断言之JSON断言

前面一节我们学习了JMeter断言之响应断言,今天我们来学习JMeter另一种断言方法:JSON断言. JSON用于描述文本数据结构,有如下形式:1.对象(object)对象是一组无序的名称/值对.对象以{(左大括号)开始,以}(右大括号)结束.每个名称后面跟着:冒号,名称/值对之间用逗号分隔.比如:{"name":"zhangsan","sex":1,"age":25}2.数组(Array)数组是值的有序集合.数组以[(左中

如何使用JMETER从JSON响应中提取数据

如果你在这里,可能是因为你需要使用JMeter从Json响应中提取变量. 好消息!您正在掌握掌握JMeter Json Extractor的权威指南.作为Rest API测试指南的补充,您将学习掌握Json Path Expressions所需的一切. 我们走吧!并且不要惊慌,那里没有什么困难. Json格式 为了更好地理解Json是什么,这是一个示例Json文档: { "store": { "book": [ { "category": &qu