接口测试技术可以说是测试的基本功,这主要的核心原因是管理层需要测试需要有更高的业务交付的能力,能够在有效时间内快速完成业务的同时又满足质量发布的标准,坦白说,这是一个挑战,但是现实情况就是如此。第二个原因是新技术的落地以及在企业的应用,这个过程中测试需要更多的聚焦于底层服务的质量保障,而不是传统模式中在页面上进行输入输出的一个校验过程。
这些过程,都需要服务端测试技术的能力。那么作为功能测试工程师如何能够快速有效并且系统的掌握接口测试的技术能力了?这是很多功能测试工程师面对的一个困境,不知道先掌握工具好还是先掌握代码好,或者是如何能够在很短的时间内掌握这些必要的知识,然后来应对公司里面测试的工作任务。其实,学习任何新的知识,都需要讲究方法论,这个方法论就是需要知道它的前因后果,以及系统性的学习路线。
接口测试学习路线简单总结其实是四个维度,具体如下所示。
其实在接口测试的学习过程中,协议是非常关键和核心的,因为协议是接口测试本质,协议通常需要掌握如HTTP等协议,通过协议能够告诉我们具体怎么做以及怎么做的过程,比如HTTP协议中的状态码4XX开头的,其实本质上都是客户端的问题,其中状态管理中的COOKIE&SESSION&TOKEN请求流程其实涵盖了接口测试中参数关联的解决思路,比如如何使用工具以及代码的方式来拿到登录成功后的SESSIONID并且传递给下个API,其实这个过程如果清楚SESSION的请求流程,特别的简单,比如通过代码的方式拿到响应头中的Set-Cookie中的信息,然后在下个请求的时候在请求头的Cookie带上拿到的信息发送给服务端就可以了。具体到协议里面还有很多的知识可以扩散,比如常用的请求模式是同步通信和异步通信,而异步通信又会涉及到常用的MQ中间件,在测试服务的过程中,针对一个文件上传的服务,涉及到它的业务交互,到底是什么同步的模式好了还是异步的模式更加合理,其实这背后不仅仅是通信模式的问题,也是扩展测试思路的一个过程。所以这也是为什么说协议是非常核心非常关键的。第二是需要掌握主流的接口测试工具,如PostMan,JMeter等工具,能够使用主流的测试工具来完成接口自动化测试的一系列过程,包含了测试用例的创建,参数关联的解决,以及测试报告的生成以及与CI持续平台的整合和过程中其他的细节,如果编码能力弱的同学强烈建议可以先使用工具的模式把接口自动化测试先做起来,然后再逐步的扩展到代码的模式。工具是很容易被替代的,所以需要具备代码的模式来完成接口自动化测试的过程,比如以Python语言为案例,那么需要掌握编程基础知识,UnitTest和Pytest单元测试框架,数据驱动知识以及Requests库的知识,同时需要掌握API测试框架的设计以及测试框架在企业中的落地和应用实战。第四个维度就是需要学习和掌握MockServer的测试思想以及Mock的过程,和针对一本底层的服务到底来如何保障它的质量。
学习新的知识需要做到“知行合一”,需要做到的不仅仅是掌握这个知识,更是需要掌握这个知识背后它的设计思想以及在企业的实战,和学习过程中能够有疑问并且得到解答。