接口测试到底是个什么鬼?

Posted 八哥找bug

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了接口测试到底是个什么鬼?相关的知识,希望对你有一定的参考价值。



想必大家刚开始进入测试行业的时候肯定遇到过这样的问题:

      测试:这里有个bug,你们前端的值没有显示对诶,前端同学帮忙看下;

      前端:这又不是我的问题,后台给的数据是什么样的我就怎么用的;

      测试:后台的兄dei,看下这个bug呢?

      一顿撕逼之后……

      测试:研发都说不是他们的bug,还打了我……

  

很多时候,测试同学发现了一个bug,如果研发的同学质量意识不够或者思想出了问题,就会出现前端踢后端,后端踢数据,数据又重新踢回前端情况。与其和那群不靠谱的开发撕逼撕的一肚子火bug还没结果,还不如我们自己动手,从接口测试开始,一步步把黑盒子打开,直接把定位到一定深度的Bug扔到脸上让他们闭嘴乖乖去改。

 

一.接口测试是什么?

为了解决【接口测试是什么】这个问题我们首先来看在http协议下的连接过程:


接口测试到底是个什么鬼?


具体连接过程如下:

(1)浏览器分析超链指向页面的 URL

(4)浏览器与服务器建立 TCP连接

(5)浏览器发出取文件命令:GET /chn/yxsz/index.htm

(6)服务器给出响应,把文件 index.htm发给浏览器

(7)TCP连接释放

(8)浏览器显示“清华大学院系设置”文件 index.htm中的所有文本

将连接过程简化,就可以得到如下过程:

客户端发起连接并向服务器发送请求报文,服务器根据客户端提供的请求报文返回对应的响应报文,客户端收到响应报文后作出对应处理。

https协议则是针对http协议进行SSL加密,通过证书验证服务器身份,保证系统安全性,而交互过程没有变化。

因此,这个过程也是我们系统与系统间的一种主要的交互过程(另一种交互过程则是系统模块分层后是通过编译后的dll或jar包进行引用):我们接口测试中的接口,指的是系统模块与模块或系统与系统间进行交互。

接口的本质就是发送一个请求request,然后服务器响应后返回一个响应报文response,然后我们对响应报文response进行分析,验证服务器返回的处理结果,这即是接口测试。

基于接口的概念和http协议的交互过程,我们可以得到接口具有如下性质:

一组定义、程序及协议的集合,实现交互

(1)接口的交互是不可见的

(2)请求方发送Request请求报文,被请求方响应后返回一个Response响应报文

(3)接口是系统与系统间的交互,任何数据都是有其意义的,如果在传输过程中丢失了或者说数据错误,极大可能引起系统的BUG。

了解了什么是接口以及接口的性质以后,我们再回过头去思考一个问题:为什么要进行接口测试?

答案很明显了,随着系统复杂程度的上升,传统的测试方法测试成本急剧增加,测试效率大幅下降(测试的金字塔模型),相比于传统单元测试的高要求以及对迭代版本的适应性限制,接口测试是保证高复杂性系统质量的内在要求和低成本的经济利益的驱动作用下的最佳解决方案,接口测试是一个完整的体系,也包括功能测试、性能测试。

那么,什么情况下适合进行接口测试呢?

接口,是各个系统之间的交互,所以接口测试一般适用于于多系统间交互开发,或者拥有多个子系统的应用系统开发的测试。

IT行业发展到今日,越来越多的程序不仅仅是MVC架构,而是向着分布式、高可用性的方向发展,系统复杂度也在不断上升。现在很少能看到一个网站或者APP就全部处理完所有的业务逻辑的情况,更多的是UI端只做一个数据的读取与展示,将数据存储、业务逻辑拆分成一个个的模块,通过模块间的调用和交互,高效实现复杂度上升情况下的各种业务功能。


二.接口测试怎么做?

说了这么多,重点来了:如何进行接口测试?

一般来说,多系统交互的系统会事先定义好接口文档,严格按照接口文档进行开发,我们的接口测试工作也是基于接口文档进行的:

(1)根据接口文档,构造接口入参访问被测试的接口

(2)根据接口文档,整理出我们的断言字段(断言字段即我们会去验证的字段)

(3)访问接口获取返回值

(4)根据断言字段判断接口返回数据是否正确

之前在一些博客上,看到有些同学认为做接口测试只需要查看返回值类型是否正确、是否为json格式等,没有对接口的返回值做更进一步的验证,因为接口是相对稳定的,所以没有必要。

然而,正因为接口是相对稳定的,所以一般情况下很难能出现接口直接抛出未经处理的异常或直接报错的情况,更多的是大体的返回值正确,但是一个或几个关键的字段返回错误,从而在上层引起了很严重的Bug。

因此,在接口测试过程中,选取合适的断言字段并结合业务逻辑、数据处理去严格的验证字段的返回值,是相当有必要的。

一般来说,项目周期足够长或有足够时间验证接口时,我们选择遍历验证所有接口返回的每一个字段;若项目周期较短或快速迭代时,我们选择业务功能用到的重要字段为断言字段,所有断言字段均正确我们可以认为接口测试通过,其余字段我们可以做一些相对宽松的验证。

那么如何来进行接口测试呢?目前很多开源工具都可以进行接口测试,如Jmeter、Postman,传统的一些商业工具也可以进行,比如LoadRunner等。在后续的推送中,我们会向大家介绍如何使用Postman来对接口进行访问以及接口测试中的一些常见概念。

八哥找bug全力打造测试圈UI自动化,接口自动化交流平台;开展Python技术分享以及各类优质书籍推荐。关注八哥找bug,咱们一起玩转测试,走向人生巅峰!

八哥找bug

长按二维码,关注八哥找bug


以上是关于接口测试到底是个什么鬼?的主要内容,如果未能解决你的问题,请参考以下文章

1-基础:跳出细节看全局,接口测试到底是在做什么?

接口测试中的接口到底是什么?

带你打开-接口测试的大门

到底原型是个什么鬼?

相关支付业务测试中如何保证幂等性

接口性能两手抓——性能测试到底是什么