当前位置: 首页 > news >正文

接口测试需要验证数据库么

问题:

有的接口会返回很多数据,有的接口可能就返回一个状态码及success之类的消息,这些需要验证数据库么?现在在写一个测试框架,配置接口参数和预期返回值,生成xml文件管理用例,用一个比较方法对预期和返回作比较,不需要根据每个接口写脚本,现在的疑惑只之比较返回值,并不清楚接口是否真的成功了,比如删除之类的接口,返回说成功了,但数据是否真的删除了?如果要验证数据库,感觉得为每个用例写脚本去验证了,这就和初衷不符(只写个比较函数,比较返回的所有值,不需要为每个接口单独验证)

回答:

不少同学在做自动化是都会问要不要验证数据库?我的答案是不要!

根据分层自动化测试的概念。

UI层自动化模拟的是用户操作,假设我是一个普通的用户,在你家的系统上购买了一件商品,我怎么知道有没有购买成功?难道要去查你家系统的“已购买表”?没权限,就算有权限我也不会!那我怎么验证?很简单啊!系统不是有“已购买” 商品列表嘛!点开“已购买”菜单看就可以了!(如果没有这功能,那说明你的系统设计有问题。用户体验不好,差评!!)

接口自动化模拟的是开发的代码操作,A开发写的接口给B开发去调用,A系统的接口给B系统去调用,假设我是一个开发,我调用了微信的接口去做获取用户头像,有个用户获取不到,来!微信团队,你让我查查你们的数据库呗!微信肯定不答应。(数据库不是你想查,想查就给你查!)

那接口返回了“success”,但没有把数据添加/删除成功怎么办?从我两年接口自动化的经验来说,这中情况基本非常少见,因为开发在写代码的时候,返回“success”的前提条件肯定是基于操作成功的。(开发写代码的时候肯定会自已运行一下啊!怎么会运行都不运行,哪儿来的自信!)

你们的开发就是粗心怎么办?我是这么做的,开发提交了新的接口,我会边读接口代码边设计接口用例(如果接口逻辑看不懂接口数据可能就构造不出来,接口用例自然也不会写。),代码有问题就直接告诉开发改了,在这个过程中,我是会查数据库的。一旦接口用例写好之后,后面再回归去跑的时候就不管了,当然,每条接口用例里面肯定不会加查询数据库的动作。

在特殊情况下,我调用了一个删除数据的接口,有没有真的删除一条数据,我可以调用查询数据的接口啊!查不出来刚才删除的数据,不就证明刚才的删除接口操作是ok的了。

大多数测试问这个问题就是把自己当测试了,在做手工测试的时候就是这么查数据库的呀!典型的站在测试的思维上想问题。我做UI自动化的时候,我就是普通的用户;我做接口测试的时候我就是开发。只不过,我会比普通用户和开发更细致更全面的“使用”系统所提供的功能而已。但“使用姿势”和他们是一样的!

http://www.cnnetsun.cn/news/2884053.html

相关文章:

  • 避开STO交货单的坑:BAPI_OUTB_DELIVERY_CREATE_STO与BAPI_OUTB_DELIVERY_CHANGE的库位处理差异详解
  • 突破大众点评反爬技术:完整数据采集解决方案实战
  • 告别焊球!用混合键合(Hybrid Bonding)搞定3D芯片堆叠,保姆级工艺解析
  • Microchip USB Hub配置实战:如何让你的集线器变身多协议快充站(支持BC1.2/CDP/DCP/SE1)
  • CSS linear-gradient的‘渐变框’到底有多大?搞懂background-size和盒模型的关系,告别背景图错位
  • NCM音频格式转换:Go语言实现的高效解密与批量处理解决方案
  • 1688运营学习如何高效?推荐五个商家都在用的圈子
  • 深入理解STM32的‘看门狗’:从HAL库源码看IWDG如何守护你的嵌入式系统
  • VITS+Whisper微调:低延迟TTS实战
  • 接口防护别再乱接!TVS和电阻一前一后,效果天差地别(附实测对比)
  • 3分钟掌握AI字幕黑科技:让外语视频秒变中文同步字幕
  • LCA算法三兄弟:从‘爬楼梯’到‘坐电梯’,图解倍增与Tarjan到底快在哪
  • 从RGV到OHT:一文看懂工厂空中物流小车的前世今生与技术演进
  • 从Wi-Fi到5G:匹配滤波器如何成为现代无线通信的‘隐形守护者’?
  • 别再死记硬背了!用Verilog HDL写几行代码,轻松吃透逻辑代数三大定理
  • 别再只盯着SNP了!用WGS重测序做群体遗传,这5个关键参数(Fst、Pi、Tajima‘s D)你得会看
  • 腾讯二面被问:如何设计 Skill 来降低 Token 消耗?我说“渐进式加载“。面试官:就这一个?还有呢?我当场卡壳了。
  • 京东面试官盯着我简历:“单步准确率 94%,听着挺唬人,那你这 Agent 连跑 20 步,还剩多少?“ 我心算了一下,当场沉默
  • Genesis Plus GX:高精度世嘉模拟器核心技术解析与开发实践
  • 别再死记硬背了!用一张图彻底搞懂MOS管的三个工作区(附LTspice仿真验证)
  • 从libcamsja.dll到NXOpen:一个NX二次开发老鸟的刀路编辑功能迁移与避坑实录(NX12前后版本对比)
  • Ubuntu 22.04 桌面个性化进阶:从 Dock 布局到 Gnome Shell 扩展生态的完整配置指南
  • 从KF_GINS到PPP/INS:一个GNSS/INS初学者的紧组合算法实践指南(附i2NAV开源代码解读)
  • Adapter Tuning实战:如何像搭乐高一样,为你的大模型添加可插拔的‘技能模块’?
  • KMS智能激活脚本:让Windows和Office告别激活烦恼的终极方案
  • C# WinForms CSV导入功能演示工程(含源码、PPT说明与VS2019可运行方案)
  • STM32F103 USB开发避坑指南:搞懂那512字节SRAM和BTABLE寄存器,数据不丢包
  • 基于word模板导出人员信息
  • 别再乱调参数了!APEX压枪宏原理详解:从罗技Lua脚本看鼠标移动模拟
  • 从5G基带到智能音箱:CEVA BX2 DSP实战选型与开发环境搭建指南