热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

JMeter断言07

前言在jmeter中断言用于验证服务器返回的数据是否满足我们的要求。jmeter提供了以下断言类型:下面我们主要对响应断言、XPathAssertion、jpgc-J

0d638d7a8bdb15b228f041dba69dc5d1.png

前言

在jmeter中断言用于验证服务器返回的数据是否满足我们的要求。

jmeter提供了以下断言类型:

2bb3e0303a4347d4766f27ee7130c7a4.png

下面我们主要对响应断言、XPath Assertion、jp@gc - JSON Path Assertion进行分享,这几个断言类型也是日常压测过程中最常用的,对于其他的断言类型,请大家去看官方文档。

jmeter提供了多大十几种断言方式,但合理利用好常用的几种断言就足以在驰骋于实际的项目应用了。

响应断言

响应断言允许用户通过添加模式字符串来比较验证服务器返回的响应。

例如对响应返回的状态码进行验证,或是对响应返回的本文内容验证等等。

下面我们对响应断言进行详细的说明:

4dca69a87edd3c213a12912322a35ba8.png

  • 名称、注释
    这里根据你实际的需要填写即可。

  • Apple to
    一般选择Main sample only即可。如果一次发送多个请求,则需要根据实际断言需要选择其他选项了。(例如一个ajax请求,会发送多个GET或POST时。)

  • 要测试的响应字段

  1. 响应文本
    服务器响应文本,一般情况下,我们都是勾选改选项,用于验证服务器返回值。

  2. Document(text)
    通过Apache Tika从各种的文档中提取的文本进行验证,包括响应文本,pdf、word等等各种格式。jmeter会用Apache Tika去解析服务器响应内容,耗内存、也耗时间,解析易失败,尽量少用或不用。多用响应文本方式来进行断言验证

  3. URL样本
    对请求的url进行断言,如果请求没有重定向(302),那么该url即为请求的url;如果有重定向(切跟随重定向),那么url则包含了请求url和重定向url。

  4. 响应代码
    即http响应代码,例如200,404等等,需要注意: 由于jmeter默认情况下认为4xx,5xx时该请求失败,所以在断言这类响应代码时,需要同时勾选Ingore Status,才能正常去做断言。

  5. 响应信息
    即响应代码对应的信息,例如OK, Not Found等等这类的。

如下常见类似是响应信息:

HTTP/1.1 200 Ok
HTTP/1.1 302 Found
Response Header : 响应头信息,例如
Server: Tengine
Date: Thu, 12 Mar 2015 09:43:52 GMT
Content-Type: text/html
Content-Length: 260Connection: close
Location: http://www.baidu.com/404.html

  1. Response Headers
    即http响应头信息,主要用于断言当响应头带有唯一或特定意义时。

  2. Ingore Status 请参见4响应代码的使用说明。

  • 模式匹配规则

  1. 包括: 指返回结果包含要测试的模式中指定的内容,支持正则表达式

  2. 匹配:(1)相当于equals。返回值是固定的,可以以返回值做断言,效果同equals;(2)正则表达式匹配。用正则表达式来匹配返回结果,但必须全部匹配。即正则表达式必须能匹配整个返回值,而不是返回部分值,注意与包括模式的区别(包括是支持模糊匹配的)。

  3. Equals:指返回结果与指定的测试模式完全一致。

  4. Substring:与“包括”模式差不多,都是指返回结果包括指定的内容,但Substring不支持正则表达式。

  5. 否:相当于取反。即如果上述断言结果为true,勾选“否”选项后,则最终断言结果为false。

注:在使用该断言时,熟练掌握正则表达式是必备的能力。

XPath Assertion

如果服务器响应返回的是json格式的内容,这时最佳的断言验证类型就是使用XPath Assertion。

79e83a0aeaf86baff30dd03035eefcbc.png

  • Apple to
    一般选择Main sample only即可。如果一次发送多个请求,则需要根据实际断言需要选择其他选项了。(例如一个ajax请求,会发送多个GET或POST时。)

  • XML Parsing Options
    Use Tidy(tolerant parser):使用Tidy(容错解析器),默认选择quiet
    Quiet:不显示
    Report errors:错误报告
    Show warnings:显示错误
    Use Namespaces:使用名称空间
    Validate XML:验证XML(文件包/数据)
    Ignore Whitespace:忽略空格(允许你指定语法分析器可以忽略哪个空格,而哪个空格是重要的)
    Fetch external DTDs:获取外部DTDs(一些XML元素具有属性,属性包含应用程序使用的信息,属性仅在程序对元素进行读、写操作时,提供元素的额外信息,这时候需要在DTDs中声明)

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

  • True if nothing matches
    确认都不匹配

jp@gc - JSON Path Assertion

如果服务器响应返回的是json格式的内容,这时最佳的断言验证类型就是使用jp@gc - JSON Path Assertion。

864d0a78ec4274c05d3bc52b7d529db3.png

注: 默认下载的jmeter是不支持该方式的,需要安装json plugins,在选项-Plugins Manager-Available Plugins找到JSON Plugins安装好即可。

下面对json path assertion进行说明

  • JSON Path
    json提取表达式,用于提取目标json串节点值。

  • Validate against expected value
    勾选该选项,则验证目标期望结果

  • Match as regular expression
    勾选该选项,则期望值项,支持正则表达式

  • Expected Value
    自定义期望值

  • Expect null
    期望值为null,勾选该选项,则会断言结果为null的情况

  • Invert assertion(will fail if above condition met)
    取反,如果上述两种期望值断言为true,勾选该选项,则断言结果为fail;如果上述期望值断言为fail,勾选该选项,则断言结果为true。

总结

本次分享主要就响应断言、XPath断言、JSON断言三种常用的断言类型进行了说明,对于具体的示例,后续在实践篇章会结合其他基础功能一一进行分享,这三种断言应该说满足日常压测过程断言的大部分场景,大家需要深入理解其各个选项的含义。

更多精彩:

  1. 工具篇 - JMeter之旅01

  2. 工具篇 - JMeter目录及关键配置分析02

  3. 工具篇 - HTTP协议报文结构及示例03

  4. 工具篇 - JMeter组件手册04

  5. 工具篇 - JMeter性能测试基本过程及示例05

  6. JMeter定时器06

7960b01da2ad041a004f85ee53cd5a97.png


推荐阅读
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了Java后台Jsonp处理方法及其应用场景。首先解释了Jsonp是一个非官方的协议,它允许在服务器端通过Script tags返回至客户端,并通过javascript callback的形式实现跨域访问。然后介绍了JSON系统开发方法,它是一种面向数据结构的分析和设计方法,以活动为中心,将一连串的活动顺序组合成一个完整的工作进程。接着给出了一个客户端示例代码,使用了jQuery的ajax方法请求一个Jsonp数据。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 本文讨论了在Spring 3.1中,数据源未能自动连接到@Configuration类的错误原因,并提供了解决方法。作者发现了错误的原因,并在代码中手动定义了PersistenceAnnotationBeanPostProcessor。作者删除了该定义后,问题得到解决。此外,作者还指出了默认的PersistenceAnnotationBeanPostProcessor的注册方式,并提供了自定义该bean定义的方法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • FeatureRequestIsyourfeaturerequestrelatedtoaproblem?Please ... [详细]
  • 本文介绍了南邮ctf-web的writeup,包括签到题和md5 collision。在CTF比赛和渗透测试中,可以通过查看源代码、代码注释、页面隐藏元素、超链接和HTTP响应头部来寻找flag或提示信息。利用PHP弱类型,可以发现md5('QNKCDZO')='0e830400451993494058024219903391'和md5('240610708')='0e462097431906509019562988736854'。 ... [详细]
  • 解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法
    本文介绍了解决nginx启动报错epoll_wait() reported that client prematurely closed connection的方法,包括检查location配置是否正确、pass_proxy是否需要加“/”等。同时,还介绍了修改nginx的error.log日志级别为debug,以便查看详细日志信息。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 网络请求模块选择——axios框架的基本使用和封装
    本文介绍了选择网络请求模块axios的原因,以及axios框架的基本使用和封装方法。包括发送并发请求的演示,全局配置的设置,创建axios实例的方法,拦截器的使用,以及如何封装和请求响应劫持等内容。 ... [详细]
  • 本文介绍了如何使用jQuery和AJAX来实现动态更新两个div的方法。通过调用PHP文件并返回JSON字符串,可以将不同的文本分别插入到两个div中,从而实现页面的动态更新。 ... [详细]
  • 本文介绍了DataTables插件的官方网站以及其基本特点和使用方法,包括分页处理、数据过滤、数据排序、数据类型检测、列宽度自动适应、CSS定制样式、隐藏列等功能。同时还介绍了其易用性、可扩展性和灵活性,以及国际化和动态创建表格的功能。此外,还提供了参数初始化和延迟加载的示例代码。 ... [详细]
  • Allegro总结:1.防焊层(SolderMask):又称绿油层,PCB非布线层,用于制成丝网印板,将不需要焊接的地方涂上防焊剂.在防焊层上预留的焊盘大小要比实际的焊盘大一些,其差值一般 ... [详细]
  • 前言:关于跨域CORS1.没有跨域时,ajax默认是带cookie的2.跨域时,两种解决方案:1)服务器端在filter中配置详情:http:blog.csdn.netwzl002 ... [详细]
author-avatar
叶斯琪147-
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有