jmter-断言

作者: 夏天的吃瓜群众 | 来源:发表于2017-08-02 13:26 被阅读0次

  1、为什么要添加断言?

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

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

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

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

以响应断言为例:

如果我们要确定Jmeter有没有按照我们的预期进行工作,我们应当考虑使Jmeter提供的断言,加到Sampler里面可以对返回的结果进行判断,例如判断HTTP返回结果里面是否含有某个字符串。如果断言为真,JMeter会标记请求为成功,否则标记为失败。为了最大限度的灵活性,JMeter允许使用正则表达式创建断言。

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

2、Jmeter断言-所有断言讲解

见如下文章,讲解的比较详细,具体用到断言会在之后的文章中分述

http://blog.csdn.net/Foreverlemon/article/details/72821830?locationNum=12&fps=1

3、响应断言添加步骤

(1)右键点击相应请求,然后添加->断言->响应断言

(2)设置响应断言

各项含义如下:

1)APPly to: 适用范围

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

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

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

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

说明:

关于应用范围,我们大多数勾选“main sample only” 就足够了,因为我们一个请求,实质上只有一个请求。但是当我们发一个请求时,可以触发多个服务器请求,类似于ajax那种,那么就有main sample  和 sub-sample之分了。

对于有重定向的请求,并且勾选了“跟随重定向”, 那么这两个请求都是 sub-sample,重定向后的请求(第二个请求)就是main-sample。关于main sample and sub sample,有兴趣的可以看看这个帖子:

http://stackoverflow.com/questions/28214936/jmeter-in-which-scenario-i-can-use-main-sample-or-sub-sample-or-both-for-te

2) 要测试的响应字段:要检查的项,包含  响应文本,Document(Text),url样本,响应代码,响应信息,Response Header,ignore status

a. 响应报文:   服务器响应文本,一般普通http响应,都勾选这个。

b.  Documeng(text):

测试文件,一切Apache Tika 支持服务器响应,包括文本响应,还支持 PDF, Office, Audio, Video formats。jmeter会用Apache Tika 去解析服务器响应内容,会很耗内存,而且也很容易解析失败。所以一般普通http请求,不要选择这个。

c. URL样本

是对sample的url进行断言。如果请求没有重定向(302),那么就是这个就是请求url。 如果有重定向(且跟随重定向),那么url就包含请求url 和 重定向url

d. 响应代码

http响应代码,如101,200,302,404,501等。但当我们要验证404,501等http响应代码时,需要勾选“ ignore status”。因为当http 响应代码为400,500时,jmeter默认这个请求时失败的。

e. 响应信息:

http响应代码对应的响应信息,例如:OK, Found   HTTP/1.1 200 Ok    HTTP/1.1 302 Found/

f. Response Headers: 响应头部

Server: Tengine

Date: Thu, 12 Mar 2015 09:43:52 GMT

Content-Type: text/html

Content-Length: 260

Connection: close

Location: http://www.baidu.com/404.html

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

3)模式匹配规则

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

例如:

响应字段为: 响应文本

模式匹配规则:包含

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

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

b. 匹配

(1) 相当于 equals 。当返回值固定时,可以返回值做断言,效果和equals相同

(2) 正则匹配 。 用正则表达式匹配返回结果,但必须全部匹配。 即正则表达式必须能匹配整个返回值,而不是返回值的一部分。

例如:

响应字段为: 响应文本

模式匹配规则:匹配

断言为: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 只匹配了返回值部分,而不是全部匹配。

c. Equals:返回结果与你指定断言完全一致

d. Substring:与 “包括”差不多,都是指返回结果包括你指定的内容,但是subString不支持正则字符串

例如:

响应字段为: 响应文本

模式匹配规则:匹配

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

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

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

断言中可以添加多个断言一起判断,断言中也可以使用参数化方法,进行动态判断。

相关文章

  • jmter-断言

    1、为什么要添加断言? 在jmeter进行测试的时候,有时候,我们需要确定Jmeter究竟有没有正确工作,因为有时...

  • 客观断言和主观断言 阅读抄300

    客观断言和主观断言 在说明“结论”之前,我们先来区分客观断言和主观断言。客观断言(objective claim)...

  • Jmeter响应断言详解

    一、添加响应断言 选中需要进行断言的Sampler,右键添加 “断言” → “响应断言”。参数配置如下: 适用于:...

  • jmeter检查点

    1、添加响应断言,右键点击我们的“登录”页面---->添加---->断言---->响应断言 2. 设置响应断言 3...

  • 自学Swift之断言 assertion

    断言概念: 官方概念太无聊,并且冗余... 断言(assertion) 是一个全局函数 断言理解: 我理解的断言(...

  • Mock那些事儿(3):Mock的断言

    Mock的断言与unittest的断言不同,unittest的断言是判断结果是否正确,而mock的断言主要...

  • TestNG断言

    TestNG中的Assertion,也是断言。断言是测试中最难写的部分。 Assert类(硬断言) 断言类是Ass...

  • 2020-11-06 《批判性思维》day1 断言

    一、什么是断言? 在书中,断言是用来表达信念的,是一个陈述句,它可真可假。 二、类别 断言分为主观断言、客观断言这...

  • 一言力之断言力

    所谓断言,即明确表达说话人的意思;断言力,即敢于冒险提出断言的能力!断言力有什么用 通过断言,可以自然而然的产生一...

  • MAKE YOUR PREDICATE EXACT1

    使用准确的断言 仔细判断句子中的断言是否准确地断言了您想要断言的内容。比较这些句子,其中断言的部分是斜体: 和平已...

网友评论

    本文标题:jmter-断言

    本文链接:https://www.haomeiwen.com/subject/zfltlxtx.html