首页
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
更多
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
如何设置自动化测试断言?
文摘
2024-11-22 09:02
江苏
看到这样一个问题:接口自动化测试中,有必要把返回的每个字段都进行断言吗?
无论是性能测试还是自动化测试中,要不要设置断言,为什么设置断言,断言的作用是什么,如何设置断言,都是新手容易踩坑犯错的地方。
这篇文章,聊聊我对于断言的理解,以及自动化测试如何断言。
1、什么是断言?
先聊聊我对断言的理解。
设计测试用例的方法相信大家都深谙于心,最基本的要素有场景、操作步骤、输入和输出值,目的是验证测试用例对应的业务场景或功能是否如预期实现。
预期输出值可能有一个也可能有多个,在功能测试场景中,我们可以通过界面返回或渲染的结果,与产品需求描述和UI设计进行对比,如果符合需求描述和UI设计,则判定该测试用例执行通过。
这里的断言方式,可以理解为人工通过对比来判断测试结果的正确性。
在接口测试场景中,输入不同的请求参数有不同的返回报文,常见的做法是通过抓包或者观察response body中的返回值来判断程序返回结果是否符合预期。
这里的断言方式,可以人工检查也可以通过工具或者编写代码设置断言来对返回结果进行判断。
所谓
断言,就是一种结果判断的手段,即判断结果是或否的方式
。
2、为什么设置断言?
无论是研发岗还是测试岗位,都要对自己的工作结果进行判断。
研发在本地开发完成后需要自测,判断自己编写的代码是否如需求描述一样实现。测试同学需要对研发提交的代码程序进行各种验证,判断程序实现的功能是否符合需求描述和产品要求,以及是否满足流转到下一阶段(验收/发布)的标准。
用比较专业的话来说就是准入准出标准,而断言的作用就是尽可能通过机器(工具/代码)来进行判断,避免人工检查可能带来的遗漏等问题。
以接口测试为例,一个好的断言设计可以带来如下几点好处:
验证接口返回数据是否符合预期,判断功能实现是否正确。
自动化执行,提高测试效率和准确性,减少人为因素的影响。
当结果不符合预期时,可以帮助技术同学快速排查和定位问题。
3、一些设置断言误区
很多新手在刚开始进行接口测试或者自动化测试时,最容易犯的错误就是不设置断言,或断言的对象为HTTP状态码。为什么不提倡和不建议大家用HTTP状态码来作为断言对象呢?原因有如下几点:
首先,HTTP请求本身是无状态的,HTTP状态码只是表达了当前请求的处理情况,与业务正确与否无关。比如出现404状态码时,被请求服务本身可能没问题,而是你的请求URL地址有误。
其次,HTTP状态码只代表了当前请求自身的情况。比如200状态码,代表请求是通畅的,服务端接收了你的请求并成功返回了响应数据,但不代表业务是正确的(下单失败的HTTP状态码也是200,但业务角度来说是失败的)。
4、如何设置测试断言?
以文章开头的问题为例,从接口设计层面来看,设置断言至少需要验证如下几点:
数据结构验证
:验证接口请求返回的数据结构是否与接口定义一致。服务端在收到请求后,会按照事先定义好的数据结构来解析并处理数据。如果输入的数据结构发生变化或者与事先定义的不一致,则会导致服务端抛出异常。
关键数值验证
:根据业务场景不同,可以有目的性的验证某些 key-value 的键值对结果是否符合预期,同时辅以查询数据库进行数据落库确认的方式来综合验证。
举例:假设业务场景是创建订单,如果创建成功,则响应报文中除了HTTP状态码需要返回200之外,还需要设置业务状态码(success status=0)。同理,如果创建失败,则业务状态码success status=1。
要做到这点,有两个
制约因素:1-测试同学对业务的熟悉程度;2-接口设计中需要事先对不同的业务场景结果定义不同的业务状态码
。
其他类型验证
:如返回数据必填非必填,URL访问权限校验(授权)等。
还有一些特殊情况,比如响应报文中的数据过多,则建议只对关键业务状态相关的key-value进行断言,其他数据则仅进行格式校验即可。
如果喜欢我文章,点赞、关注、在看三连走起。
如果想阅读更多的文章,可以关注我的公众号。
精彩内容推荐
漫谈自动化测试
自动化测试成熟度模型
为什么自动化测试要分层
你真的需要自动化测试吗?
自动化测试如何实施落地?
如何设计自动化测试Case?
聊聊自动化测试的度量指标
聊聊自动化测试的分层实践
自动化测试,有最佳实践吗?
自动化测试的痛点与发展趋势
自动化测试如何区分用例集合
自动化测试如何管理测试数据
自动化测试如何解决日志问题
从零到一落地接口自动化测试
学习自动化测试必读技术书单
如何设计一个自动化测试平台
如何设计自动化测试落地方案
自动化测试如何创造业务价值?
为什么你的自动化测试无法落地
老张的求知思考世界
团队管理|职场成长|读书思考|IT互联网技术实践。更多沟通交流,请添加:Z11aoe
最新文章
三十二岁人生回溯
职场新人如何设计职业规划
取代测试岗,又一新兴岗位在崛起!这才是测试人未来5年最好的就业方向!
好的简历应该具备哪些特质
新项目如何开展测试工作
普通人如何赶上AI大模型浪潮
如何选择工作机会和offer
最近,测试的薪资又爆了!!
2025年,让AI成为你的职场助力
一个测试Leader的工作案例
35岁失业危机,是个伪命题
离谱!裁员裁出新高度了。。。
2025年,勇敢探索,才能突破困境
老张的2024年度报告
2024年度读书清单及好书推荐
2025年,测试的新风口,已经很明显了!
2024年度技术干货合集·精华版
老张的求知思考世界:2024-Q4文章合集
技术能力,是测试求职的核心能力
年底了,如何与领导谈绩效
自由职业两年,我的收获和感悟
如何提高测试过程效率?
AI入门必读科普读物(文末送书)
测试求职的核心,依然是技术能力
客观看待“去测试化”的论调
解构人生
十年职场生涯,我的经验与教训
年薪68w!真心建议测试人冲一冲新兴领域!工资高前景好!
技术同学如何提升业务洞察力
性能测试入门实践进阶指南
裁员了,很严重,年底千万别离职
从自由职业,到一人企业
面试:如何回答HR的问题
如何编写年度工作汇报PPT
如何提升你的技术视野?
适合新手入门的AI大模型应用:RAG(文末送书)
质量度量落地的注意事项和思考
自由职业面临的最大挑战
建立性能测试基线的实践方法
很多人陷入了职场认知误区
如何评估测试工时?
所有测试人,明年的新方向,赢麻了!!!
自媒体自由职业者的四大核心能力
如何设置自动化测试断言?
必看AI科普读物:AI群星闪耀时(文末送书)
不要为了找工作而考证!
小心互联网行业的“高薪”陷阱
飓风过境
观历史而偶有所得
取代测试岗,国内又一新兴岗位在崛起!这才是测试人未来5年最好的就业方向!
分类
时事
民生
政务
教育
文化
科技
财富
体娱
健康
情感
旅行
百科
职场
楼市
企业
乐活
学术
汽车
时尚
创业
美食
幽默
美体
文摘
原创标签
时事
社会
财经
军事
教育
体育
科技
汽车
科学
房产
搞笑
综艺
明星
音乐
动漫
游戏
时尚
健康
旅游
美食
生活
摄影
宠物
职场
育儿
情感
小说
曲艺
文化
历史
三农
文学
娱乐
电影
视频
图片
新闻
宗教
电视剧
纪录片
广告创意
壁纸头像
心灵鸡汤
星座命理
教育培训
艺术文化
金融财经
健康医疗
美妆时尚
餐饮美食
母婴育儿
社会新闻
工业农业
时事政治
星座占卜
幽默笑话
独立短篇
连载作品
文化历史
科技互联网
发布位置
广东
北京
山东
江苏
河南
浙江
山西
福建
河北
上海
四川
陕西
湖南
安徽
湖北
内蒙古
江西
云南
广西
甘肃
辽宁
黑龙江
贵州
新疆
重庆
吉林
天津
海南
青海
宁夏
西藏
香港
澳门
台湾
美国
加拿大
澳大利亚
日本
新加坡
英国
西班牙
新西兰
韩国
泰国
法国
德国
意大利
缅甸
菲律宾
马来西亚
越南
荷兰
柬埔寨
俄罗斯
巴西
智利
卢森堡
芬兰
瑞典
比利时
瑞士
土耳其
斐济
挪威
朝鲜
尼日利亚
阿根廷
匈牙利
爱尔兰
印度
老挝
葡萄牙
乌克兰
印度尼西亚
哈萨克斯坦
塔吉克斯坦
希腊
南非
蒙古
奥地利
肯尼亚
加纳
丹麦
津巴布韦
埃及
坦桑尼亚
捷克
阿联酋
安哥拉