性能测试之JMeter断言
导读
介绍响应断言的用法
请求重定向的问题
1、从浏览器登录Redmine
(1)从浏览器登录Redmine,使用正确的用户名、密码登录,登录完成后,右上角显示登录账号的名称,如下图所示:
(2)使用错误的用户名、密码登录,会提示登录失败,然后右上角还是登录按钮,如下图所示:
上面这个现象很正常,符合我们的预期。
2、使用JMeter发送请求
(1)正确的用户名、密码
之前发送的请求都是使用正确的用户名、密码,能够请求成功。
(2)错误的用户名、密码
发送请求,仍然会提示成功,额,什么原因呢?
默认情况下,JMeter会将响应码是200的默认为请求发送成功,没错,这个请求确实送达了服务器,服务器也给了响应,只不过告诉你“用户名或密码错误”。由于我们是要对登录功能进行压测,假如1000个人并发登录,只有100个人能正常登录,其余900个人登录失败,这肯定不是我们要的结果。所以在这个场景下,只有登录成功,才能算压测成功。这时候就需要给响应结果加个断言(检查点)了。
3、JMeter断言
(1)给JMeter登录请求添加一个断言(Response Assertion)
(2)Response Assertion页面
Name名称:随意设置,就是这个断言的名字;
comments注释:描述性文字,可以为空;
Apply to:应用范围,有4个选项
Main sample and sub-samples:匹配当前父取样器及其子取样器
Main sample only:匹配当前父取样器;
Sub-sample only:仅匹配子取样器;
JMeter Variable Name to use:支持对JMeter变量值进行匹配
Field to Test:要测试的区域,9个选项
Text Response:服务器返回响应的文本内容,HTTP协议排除Header部分;
Response Code:响应的状态码,200,404等
Response Message:响应的message,“OK”等
Response Headers:响应的Headers;
Request Headers:请求的Headers;
URL Sample:匹配URL链接
Document(text):对文档内容进行匹配,查看结果树,响应数据标签内容
Ignore Status:一个请求有多个响应断言,假如第一个断言选中此项,当第一个断言失败时,忽略,继续下一个断言(有什么用???)
Request Data:请求数据
Pattern Maching Rules:模式匹配规则,4个选项
Contains:上面要测试的区域包含要匹配的内容,则成功,支持正则
Maches:被测区域要完全匹配需要匹配的内容,则成功,大小写不敏感,支持正则
Equals:被测区域要完全等于需要匹配的内容,则成功,大写小敏感,需要匹配的是字符串,不是正则
Substring:被测区域要包含需要匹配的内容,则成功,大小写敏感,需要匹配的字符串而不是正则
Not:配合前面的选项使用,比如配合Contains使用,就是不包含
Or:或
Pattern to Test:要匹配的字符串或者正则,可以填多个,如果不选Or,就是都要匹配,如果选Or,就是匹配其中一个就算成功
Custom failure message:自定义匹配失败时候的信息。
(3)添加登录请求的断言
这里我们使用断言“如果没有匹配到无效的用户名字样”就说明登录成功了。
(4)使用错误的用户名、密码登录,看看结果
可以看到,确实登录请求失败了,提示信息,就是我们前面自定义的信息。
(5)使用正确的用户名、密码登录试试
请求没有报错
4、换个断言
(1)换个断言
前面我们断言登录成功,是通过,其检查没有登录失败的提示信息来做检查点,这个有点怪怪的。一般来说,我们断言登录成功,会使用检查页面是否显示登录名来做断言。好,我们替换一下断言试试。
我们断言响应中应该包含user1(登录用户名),发送请求试试
很不幸,失败了,赶紧来看看登录请求的响应中是否包含user1
我擦,一搜索,果然不包括user1,这和我们从页面上看到的不一样啊,什么鬼?
(2)抓包看看
打开Chrome浏览器;右键,检查,(或者按Ctrl + Shift + I)打开开发者工具
切换到Network标签
打开Redmine登录页,http://192.168.132.134:8080/redmine/login
点击clear,先清除一下多于的信息
输入用户名密码,点击登录按钮,登录Redmine
查看截获到的请求如下图所示:
可以看到login本身这个请求,返回码是302,302是什么?重定向,重定向到了哪里?下面一个请求,重定向到了http://192.168.132.134:8080/redmine/
在来分别看看两个请求,发现第一个请求的响应确实没有user1的信息,而哪个重定向的请求响应才有user1的信息,如下图所示:
问题应该是找到了,Badbody只录制到了登录请求本身,但是重定向的请求并没有录制到,所以回放的时候自然没有回放这个重定向的请求,那么页面响应自然也拿不到。
(3)修改JMeter脚本
将登录请求,修改为“跟随重定向”,如下图所示:
(4)回放脚本试试
成功了!完美,看看登录请求有两个子请求,一个是登录本身,一个是重定向请求,在重定向请求的响应中,能看到usr1的信息。
小结
JMeter提供的断言种类很多,本节我们只介绍了响应断言的用法,其它的我们后续介绍。只靠JMeter来检查响应码是不能完全判定请求成功的,还需要我们给请求加上适当的断言。
性能测试之JMeter断言相关推荐
- 性能测试之Jmeter元件
性能测试之Jmeter元件 1.性能测试的本质 性能测试的定义 基于协议模拟用户发请求,对服务器形成一定的负载,来测试服务器的性能指标是否满足用户(产品&公司)的需求. 关注点 时间性能 空间 ...
- 性能测试之Jmeter 中 CSV 如何参数化测试数据并实现自动断言
当我们使用Jmeter工具进行接口测试,可利用CSV Data Set Config配置元件,对测试数据进行参数化,循环读取csv文档中每一行测试用例数据,来实现接口自动化.此种情况下,很多测试工程师 ...
- 性能测试之JMeter中JSON断言详解
JMeter中有个元件叫做断言(Assertion),它的作用和LoadRunner中的检查点类似.用于检查测试中得到的响应数据是否符合预期,用以保证性能测试过程中的数据交互与预期一致. 若接口的返回 ...
- 性能测试之JMeter函数助手详解
1.函数助手介绍 在性能测试过程中,为了模拟真实的用户,往往我们需要让提交的表单内容每次都发生变化,这个过程叫做参数化. JMeter中的配置元件与前置处理器都能帮助我们实现参数化,为了能够更好的帮助 ...
- 性能测试之Jmeter:使用代理录制脚本
Jmeter中有两种方法可以录制脚本,但笔者一向不喜欢把简单的事情复杂化(安装badbody麻烦,就不介绍这种方法了),那么自然就选择通过Jmeter代理来录制脚本.下面讲讲具体的脚本录制步骤: 1. ...
- 多测师肖sir__性能测试之jmeter操作(2)
一.jmeter 介绍 1·.jmeter jmeter 性能测试工具,是apache组织开发基于java的压力测试工具. 2.jmeter 的特点 (1)jmeter可以对http和ftp 服务器进 ...
- jmeter csv参数化_性能测试之Jmeter中如何设置参数化数据
参数化配置 jmeter中进行参数化设置,右击测试计划或者线程组,add->config element->CSV Data Set Config参数1.png Allow quoted ...
- jmeter 线程执行顺序_性能测试之jmeter逻辑控制种类详解一
逻辑控制器介绍 Jmeter逻辑控制可以对元件的执行逻辑进行控制,除Once only Controller仅一次控制器以外,其他控制器都可以可以嵌套其他种类的控制器,下面是jmeter5.3支持的控 ...
- 性能测试之JMeter配置元件【HTTP信息头管理器】
JMeter提供了丰富的配置元件,常用的包括参数化配置元件.HTTP请求默认值.HTTP信息头管理器.计数器等,这些配置元件用于设置默认值和变量,提供给后面的sampler(取样器)使用. 提示:本文 ...
最新文章
- 2019年最新最全运维技能图谱
- 使用 CallableStatement 接口调用存储过程
- 吴恩达深度学习笔记12-Course4-Week3【目标检测】
- 信息抽取(一)机器阅读理解——样本数据处理与Baseline模型搭建训练(2020语言与智能技术竞赛)
- 我在编写《微软System Center 2012 R2私有云部署实战》中应用的一些小技巧
- python降维——局部线性嵌入算法(LLE)
- 为什么要把id存到redis的key中_干货|mysql:exists还是in?哪个性能好?为什么?
- php设计一个盒子类代码_PHP设计模式之简单工厂模式(Simple Factory)代码实例大全(七)...
- leetcode刷题笔记(3)(python)
- 苹果cmsv10模板全局响应式自适应模板电影网站模板源码
- 算法中快慢指针的应用(Java)
- 容错对于游戏体验的重要性
- Linux执行命令常见的英语语句
- Windows 10 (Multiple Editions), Version 1607
- 生成树个数(基尔霍夫矩阵)
- 科技文章也可以非常的文采对立统一描述的简洁明了
- CSDN PC端网站及其部分功能产品体验的一点分析
- Matlab 2012a 下载和安装教程
- WhatsApp+EmailCamel外贸邮件群发新打法新思路!
- 双线性插值原理简单通俗解释
热门文章
- power query和mysql_在PowerQuery连接MySQL的语句中使用自定义变量的方法
- 三菱转以太网模块快速应用起步对产品的初步测试
- 互联网+创新创业大赛
- 检测微信号码工具|官方正式版
- 2024武汉大学计算机考研信息汇总
- CFA机考多久出成绩?CFA机考成绩如何查
- 自然语言处理(国科大2021-2022秋季学期课程)-基础概念及算法
- pc端ui图片尺寸_PC端UI界面设计规范分享 共同来学习_ui设计
- python做excel多表按列合并_python如何实现excel多表合并(附代码)_后端开发
- Flink sql-clinet 查询报错