Jmeter 全程实战之断言

发表于:2021-2-22 09:38

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:芒果日记    来源:博客园

  一、介绍
  断言组件用来对服务器的响应数据做验证,每个 sample 下面可以加单独的结果树,然后同时加多个断言,最外层可以加个结果树进行汇总。
  二、常用断言详解
  2.1 响应断言
  响应断言是最常用的一种断言方法,用来判断返回消息种的内容,它可以对Test、html、application/json等各种返回类型的结果进行断言。
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)APPly to:默认即可,Main sample only(仅作用于父节点取样器)、Main sample and sub-samples:作用于父节点取样器及对应子节点取样器、Main sample only:仅作用于父节点取样器、Sub-samples only:仅作用于子节点取样器、JMeter Variable Name to use:作用于jmeter变量(输入框内可输入jmeter的变量名称)
  (4)测试字段:
  ·响应文本:服务器响应文本,一般情况下,我们都是勾选改选项,用于验证服务器返回值。
  ·响应代码:即 http 响应代码,例如 200,404 等等,需要注意:由于 jmeter 默认情况下认为 4xx,5xx 时该请求失败,所以在断言这类响应代码时,需要同时勾选 Ingore Status,才能正常去做断言。
  ·响应头:即 http 响应头信息,主要用于断言当响应头带有唯一或特定意义时。
  ·请求头
  ·响应信息:即响应代码对应的信息,例如 OK, Not Found 等等这类的。如下常见类似是响应信息:
  HTTP/1.1 200 Ok
  HTTP/1.1 302 Found
  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
  (5)模式匹配规则:
  ·包括: 指返回结果包含要测试的模式中指定的内容,支持正则表达式
  ·匹配:相等或正则表达式匹配,注:用正则表达式来匹配返回结果必须是全部匹配。即正则表达式必须能匹配整个返回值,而不是返回部分值,注意与包括模式的区别(包括是支持模糊匹配的)。
  ·相等:指返回结果与指定的测试模式完全一致。
  ·字符串:与“包括”模式差不多,都是指返回结果包括指定的内容,但 Substring 不支持正则表达式。
  以上四种模式为单选,可搭配 否、或者使用
  ·否:相当于取反。即如果上述断言结果为 true,勾选“否”选项后,则最终断言结果为 false。
  ·或者:符合测试模式的任一项即可
  (6)测试模式 可以添加你需要断言的部分,如果是包括,就可以添加多个
  2.2 json 断言
  JSON断言也是测试工作中经常用到的一种断言方法,它只能针对响应结果是applicaton/json格式的请求进行断言。
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)Assert JSON Path exists: json路径
  (4)Additionally assert value:等于特定值
  (5)Match as regular expression:正则匹配,只能在使用 Additionally assert value 时才能使用
  (6)Expect Value:期望值
  (7)Expect null:空值
  (8)Invert assertion(will fail if above conditions met):上面的条件满足则fail
  2.3 大小断言
  大小断言,显示取样器请求和响应的细节以及请求结果,包括消息头,请求的数据,响应的数据。判断响应结果是否包含正确数量的byte。可定义(=, !=, >, <, >=, <=)
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)Apply to:
  ·Main sample and sub-samples
  ·Main sample only
  ·Sub-samples only
  ·Jmeter Variable Name to use
  (4)响应字段大小 Response Size Field to Test:响应字节的测试范围(可以选择用于判断的响应范围)
  ·完整响应 Full Response
  ·响应头 Response Headers
  ·响应的消息体 Response Body
  ·响应代码:响应报文相关的代码
  ·响应信息:响应报文的信息
  ·Size to Assert:断言字节范围,单位为:字节;
  2.4 JSR223 断言
  JSR223即Java 规范请求,是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求;
  作用对象:针对取样器中的JSR223 sampler而使用的断言。
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)Script language(e.g.beanshell,javascirpt,jexl):脚本语言(可以从下面的下拉框中选择对应的脚本语言JavaScript、beanshell等)
  (4)parameters to be passed to script(=> String Parameters and String []args):(传递给脚本的参数→可以理解为使用JSR223断言脚本时候一起引用的参数 )
  (5)Script file(overrides script):重写脚本(可以通过选择脚本文件的状态,是浏览调用已有的脚本还是在在下方的输入框内写入脚本;)
  (6)Script:下面的输入框表示可以输入变量类型,运用的脚本(取样结果、断言结果、取样日志文件等参数)
  2.5 Xpath 断言
  XPath即为XML路径语言,它是一种用来确定XML(标准通用标记语言的子集)文档中某部分位置的语言。XPath基于XML的树状结构,提供在数据结构树中找寻节点的能力。
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)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中声明)
  (4)XPath Assertion:输入框中写入xpath断言,点击Validate验证其正确性
  2.6 比较断言
  作用对象:需要替换的字符串
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)Select Comparison Operators:选择比较运算符
  (4)Compare Content:可以选择比较的内容类型(true/false或者自定义,编辑)
  (5)Compare Time:比较时间(可以设定比较的时间,单位为秒,默认为-1)
  (6)Comparison Fitters:比较修改工具
  (7)regular expression substitutions:替换正则表达式
  (8)Regex String:要替换的字符串(可从断言结果中选择)
  (9)substitutions:替换的字符串(替换结果)
  2.7 断言持续时间
  断言持续时间,用于判断服务器的响应时间。
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)APPly to:适用范围
  ·Main sample and sub-samples:作用于父节点取样器及对应子节点取样器
  ·Main sample only:仅作用于父节点取样器
  ·Sub-samples only:仅作用于子节点取样器
  (4)Duration to assert:持续断言
  (5)Duration in milliseconds:响应时间设置(单位:毫秒),如果响应时间大于设置的响应时间,则断言失败,否则成功!
  2.8 HTML断言
  对响应类为XML类型的文件进行断言;
  作用对象:针对sampler中的SOAP/XML-RPC Request而使用的断言。
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)Tidy Settings:Tidy 环境(Tidy是一个HTML语法检查器和打印工具,可以将HTML转换为XML类型的文件)
  (4)Doctype:文档类型(可通过下拉框选择不同文档类型→ omit疏忽遗漏的/auto动态的/strict严格的/loose)
  (5)Format:文件格式(可选择HTML/XHTML/XML三种不同类型的文件格式来检查返回内容)
  (6)Errors only:误差校正(能接受的最大值),如果勾选“Error only”这里忽略Warning,只对误差作统计检查;如果对返回内容的检查结果不超过指定结果,则断言通过,否则失败。
  (7)Error threshold:误差/错误范围(可选择误差/错误数量的范围,最大值)
  (8)Warning threshold:警告范围(可选择误差警告的数量范围,最大值)
  (9)Write JTidy report to file:写入JTidy报告的文件(JTidy是Tidy的一个java移植,可以将它当成一个处理HTML文件的DOM解析器)
  2.9 MD5 Hex断言
  MD5是一种消息摘要算法,用以提供消息的完整性保护,对返回的MD5结果进行断言,使用简单,直接跳入MD5值。执行服务器响应的MD5哈希并将其与给定的Md5哈希进行比较。它非常适合您要检查下载文件是否完整的情况。
  作用对象:针对参数类型为MD5Hex加密的参数的断言。
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)MD5Hex:将已被MD5加密的参数写入其中,添加取样器等其他元件
  2.10 SMIME断言
  SMIME是一种多用途网际邮件扩充协议,相比于之前的SMAP邮件传输协议,增加了安全性,对邮件主题进行保护;
  作用对象:针对采用了该种邮件传输协议的信息
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)signature:签名(可选择对协议的签名验证状态)
  ·Verify signature:验证签名
  ·Message not signed:没有签名消息
  (4)Signer certificate:签名证书(因为SMIME协议增加了安全传输,需要证书验证)
  ·No check:不检查
  ·Check values:检查
  (5)Signer distinguished name:签名证书者名称(证书注册者的名称)
  (6)Sigmer email address:签名者的邮件地址(注册的邮件地址)
  (7)Issuer distinguished name:发行者名称(由谁发行的证书)
  (8)Serial Number:证书序号
  (9)Certificate file:选择证书文件
  (10)Execute assertion message at position:执行断言消息的位置(在返回消息的具体哪个位置执行断言)
  2.11 XML断言
  XML(可扩展标记语言) 提供一种描述结构化数据的方法。与主要用于控制数据的显示和外观的 HTML 标记不同,XML 标记用于定义数据本身的结构和数据类型;
  作用对象:判断返回结果是否和xml的格式即<></>成对出现
  参数说明:
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  2.12 XML Schema断言
  亦可以称为XML模型断言/XML数据类型断言;XML Schema 定义了两种主要的数据类型:①xml document schema 文档架构 ;② 文档架构xml-schema xml模式
  作用对象:返回结果为XML概要断言的2中数据类型的消息
  参数说明
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)文件名:载入文件名 ,(写入需要断言的文件名称)
  2.13 Bean Shell断言
  BeanShell是一种松散类型的脚本语言(这点和JS类似),一种完全符合java语法的java脚本语言,并且又拥有自己的一些语法和方法;
  BeanShell断言支持各种开发语言,本文介绍使用java编写断言,使用BeanShell断言的好处是可以自由发挥,比如当断言失败,提示预期结果、实际结果,或者失败时把结果输出到日志。
  作用对象:针对sampler中的Bean Shell sampler而使用的断言
  参数说明
  (1)名称:控制器的描述性名称,显示在左边节点上,并用于命名事务
  (2)注释:控制器注释信息,非必填项
  (3)Reset bsh.interpreter before each call:在每次调用Bean Shell之前重置bsh.interpreter类(bsh.interpreter是Bean Shell脚本语言的一种类,也可以理解为一种解析器)
  (4)Parameters(String Parameters and String []bsh.args):String参数(String []bsh.args是主类main函数的形式参数,是一个String 对象数组,可以用来获取命令行用户输入进去的参数)
  (5)Script file:脚本文件(可以填入脚本文件路径)
  (6)Script(see below for variables that are defined):参照下文定义的变量(使脚本文件参照定义的变量来运行)

  上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号