接口测试需要验证数据库么
不少同学在做自动化是都会问要不要验证数据库?我的答案是不要!根据分层自动化测试的概念。UI层自动化模拟的是用户操作,假设我是一个普通的用户,在你的系统上购买了一件商品,我怎么知道有没有购买成功?难道要去查你系统的“已购买表”?没权限,就算有权限我也不会!那我怎么验证?很简单,去“已购买”商品列表去看啊!(如果没有这功能,说明你的系统设计有问题。)接口自动化模拟的是开发代码的操作,A开发写的接口给B开发去调用,A系统的接口给B系统去调用,假设我是一个开发,我调用了微信的接口去做获取用户头像,有个用户获取不到,来微信团队,你让我查查你的数据库呗!微信肯定不答应。那接口返回了“success”,但没有把数据添加/删除成功怎么办?从我两年接口自动化的经验来说,这中情况基本没有,因为开发在写代码的时候,返回“success”的前提条件肯定是基于操作成功的。你们的开发就是粗心怎么办?我是这么做的,开发提交了新的接口,我会边读接口代码边设计接口用例(接口逻辑看不懂接口数据可能就构造不出来,接口用例也不会写。),代码有问提就直接告诉开发改了,在这个过程中,我是会查数据库的。一旦接口用例写好之后,后面再回归去跑的时候就不管了,当然,每条用例里面肯定不会加查询数据库的动作。特殊情况下,我调用了一个删除数据的接口,有没有真的删除一条数据,我可以调用查询数据的接口啊!查不出来刚才删除的数据,不就证明刚才的删除接口操作是ok的了。大多数测试问这个问题就是把自己当测试了,测试就是这么查数据库的呀!站在测试的思维上想问题。我做UI自动化的时候,我就是普通的用户;我做接口测试的时候我就是开发。只不过,我会比普通用户和开发更细致更全面的“使用”系统所提供的功能。但“使用姿势”是一样的!—、— 希望能帮到你!
■网友
鉴于最近最近我们公司的一个未经测试就上线的而产生的一个事故,我认为接口测试一定要验证数据库。请记住,接口测试不仅仅是针对我方系统(模块)调用其他系统(模块)(理论上来说,这种应当由接口提供方或负责这个模块的进行测试),更多的是我方系统(模块)提供接口供其他系统(模块)调用。在其他系统(模块)调用我方系统(模块)提供的接口时,一旦出现接口响应错误,如数据库中记录的是失败,而接口响应了成功,对方系统(模块)就会按照成功的逻辑去处理业务。这种情况,不验证数据库,你又如何判定这个响应是真实的状态呢?如果发生在支付行业,自己想想多可怕吧。不验证数据库真是天真。—————————————————————————我的建议是,如果是项目内部用于给前端传数据的,可以不考虑验证数据库;如果是提供给第三方系统的,由第三方系统发送报文,己方系统接收报文后处理业务再进行回调,这样最好对数据进行验证。如果是刚启动的项目,先实现响应消息的验证吧,后期再从核心业务开始添加其他验证,这样省出的人力,可以投入优化业务逻辑。
■网友
接口实际上也是服务于业务,看看需求,问问开发,这个接口是干什么的,返回码各代表什么意思,根据业务的需要来验证接口,不能陷入到技术的细节中去。至于问题中的删除,我觉得你纠结的地方在于接口测试去查db,是不是跟功能测试一样了。我认为接口测试对这个问题的验证可以通过别的接口完成,比如有删除的api就有状态检查的api,你删除前先看下这个接口的返回值,删除之后再查一遍,看看少的是不是你删掉的哪个.
■网友
不一定,可以参看虫师的接口测试的书
■网友
需要,我也写了一个框架,编写json格式的测试案例配置,一个命令运行,可以比对返回以及比对数据库,返回结果到终端中,可以参考。
https://github.com/chenhg5/guardian 【接口测试需要验证数据库么】
推荐阅读
- 居家养花不需要太多,养这3款多肉,不仅颜值高,而且可镇宅招财
- 大学再有三个月就结束了,没学到知识,参加一个软件测试培训机构好吗
- 旅行|需要准备哪些物品?全面冬季出游清单,建议收藏带宝宝出门旅行
- 侧重业务逻辑的产品需求规格说明书,需要有哪些要点
- 暖!援鄂医生将蒙古捐赠羊肉转赠病人:他们更需要补身体
- AutoLab|Lab测试:你以为奥迪A5就是你以为的“掀背版奥迪A4”?
- 非计算机专业想要利用课余时间深入自学C++,想要找到比较体面的工作大概需要啥水平
- 为啥大部分线上活动的奖励需要点击领取
- 车神探|探闻丨C-NCAP提升标准!这一批测试的结果还那么水吗?
- 从其他岗位转产品经理可能吗,跨度有多大需要做那些准备
