我们做功能测试难道不香吗?为什么还要去做接口测试呢?
接口测试其实它还是有很多的优势的。
第一个,它可以发现页面上发现不了的 BUG,什么是页面上发现不了的 BUG 呢?
给大家举一个例子,比如说我们都喜欢去淘宝买衣服,你买了衣服一般都会去和商家去砍价,能不能送些什么小礼品,包个邮之类的。
那么在这里商家不同意的话,要么我就买了,要么我就干脆不买了,或者换一家。在这个下单的过程中间,我们能不能去更改下单的价格?我们是改不了的,对不对?就说说商家定了多少价格,你要去买,支付的话就必须支付标定的价格。
但是如果说,我们通过接口的方式去传递我们的支付的接口,首先你要传入(你要支付的钱是多少)
输出的结果:1.是否成功 2.对应的账号上金额就要减少支付的金额(比如支付一百就是减少一百)
通过接口,把这个 “钱” 发过去,可以让你自己去设置,那么如果再这种情况下,我自己可以去设置 “钱” 的参数,把原本一百的改成零元,那么在这里
输出的结果是不是:购买成功——对应账号金额不变,你是赚了还是亏了?不用支付,坐等收快递。
举这样一个例子,是要说明我们通过接口可以跳过(越过)UI 层面的校验,从而可以达到 UI 层面测试不到的东西,我们在接口层面可以去测试。
但是像上面说(输出结果为不用支付钱)的情况,我们允不允许它出现?是不允许它出现的,绝对不允许的,对不对?大家都这么做的话,商家不得亏死去。
那么如何去避免这样一种情况呢?
如果说我把他的钱,改成-100 元,难道说你支付成功,我商家还要倒贴你 100 块钱吗?
怎么解决?
所以呢,我们在后端也会加上校验,来避免这些非法情况的一个产生。
像我们的接口的话呢,同样它也可以去检测,除了 UI 层面可以去校验之外,它也可以用来检测你的后端到底有没有校验,如果说你的后端没有效验,就会出现我们前面
刚刚说的问题。(对应的就是商家利益损失,甚者公司破产)
测试是以评价一个程序或者系统属性为目标的任何一种活动。
①这个就是第一个,接口测试可以发现很多在页面上发现不了的 BUG
②同样呢,也可以去检查系统的异常处理能力,其实前面说的就是一种 “异常” 情况。
③还有呢,检查系统的安全性、稳定性。
④前端随便你变化,接口测好了,后端就可以不用变了。
也就是说,我们把后端的一些接口都测试好了之后呢,不管你的 UI 怎么去测,我们的后端基本上就不要变了。
因为什么?刚刚我们讲了,这个接口的测试它是不是也可以去检验你的后端有没有校验,你的后端是不是有什么漏洞,对不对。既然它可以去发现后端的一些问题,我们接口测试好了,那么后端的问题是不是基本都已经改了,我们后端就不用变了。前端的这个 UI 你想怎么变就怎么变,对我没有影响了。
⑤接口可以更早的介入我们的测试,如果说我们只是做功能或者 UI 测试的话,我们是不是一定得要等这个系统已经做好了并且已经部署好了之后,我们才能够进行?
因为这个东西没出来的话,你怎么去做功能测试,怎么去输入数据,怎么去得出结果去判断这功能是不是正确的。
但是我们在接口测试的时候,你这个系统的界面没有完全做出来,我们也可以去做测试,只要你后台的一些接口调用已经是 OK 的,那么我们就可以去进行接口测试。
这就相当于比我们的功能测试要提前介入了一定的时间,既然可以提前介入进行接口测试的话,是不是在一定程度上保证了我们系统的稳定性?
《软件测试的艺术》测试尽量早的介入,尽量早的发现这些明显的或隐藏的 bug,发现得越早,修复起来的成本越低,产生的风险也越小
随着软件测试理论的成熟,现阶段的软件测试已经发展到相对成熟的一个层次。而业内人士都知道,对于一款软件,软件测试介入的越早,对软件失效或软件错误的修复成本也就越小。最近对这个理论作了个深入的了解,忽然发现一个问题:似乎这世界上很多事情(几乎是我知道的所有)都是这样的——越早修复错误,花费的成本越少。一个谎言要用一千个谎言来弥补,电影《蝴蝶效应》说的就是有关一个小错误引发的一连串的反应。
也许,开发过程中一个小小的分号,都能毁掉上亿的项目……
所以说,以上都是我们做接口测试的好处,这也是为什么企业里面越来越重视接口测试,不是没有理由的。
它既可以更早的介入测试,节约企业成本。还可以发现我们页面上发现不了的 BUG,还可以提高我们系统的稳定性,检查我们后端存在的一些问题,这么好的东西!为什么不去用呢?
软件测试的原则
文章首发于公众号:程序员一凡,转载请注明出处!
絮叨
另外,一凡把自己的面试文章整理成了一本电子书,共 216 页!目录如下,还有我复习时总结的面试题以及简历模板
现在免费送给大家,链接: https://pan.baidu.com/s/10w3q4agGVh4R--HOvEYV-w 提取码: 3y8t(如已失效公众号回复关键字【面试】领取)
参考文献:
引用:《软件测试的艺术》测试尽量早的介入,尽量早的发现这些明显的或隐藏的 bug,发现得越早,修复起来的成本越低,产生的风险也越小
引用:Bill Hetzel 在《软件测试完全指南》(Complete Guide of Software Testing) 一书中指出:“测试是以评价一个程序或者系统属性为目标的任何一种活动。