logo头像

日有所学, 周有所得, 月有所悟, 年有所获

浅析API测试

  在目前招聘测试的趋势中,API的测试技术基本是必备的技术,也是必须要求掌握的技术。那么什么是高级测试技术了?抛开技术的角度,在一个组织中要的是成本和效率,使用有限的资源有限的成本达成最初计划的目标,那么推动这个过程中的,就是结果,这就对软实力要求非常高,推动解决这些问题的过程中,仅仅具备技术的不够的,还得懂技术,得会沟通,得推动别人解决问题,也就是说通过别人来完成自己的工作。那么什么是高级技术了,我个人理解的就是推动完成目标的能力,测试架构的技术能力,性能测试技术的能力和质量风险把控能力以及产品驾驭能力和测试开发的技术能力以及商业思维能力(发现自己这方面差距很多啊)。但是今天还是继续谈谈API的测试。

  接口测试的核心并不在于使用常见的测试工具(Postman,JMeter等),也不在于代码的实现,这些只是实现结果的一个手段,就像物理学上说的,通过一个简单的公式,依次推理得到一个结论,这个推理的过程它是间接的证明了这个公式是否正确于否,接口测试的核心首先是要理解它的原理,比如HTTP的请求过程,常用的请求方法的差异,常用的状态码有什么特点,以及cookie,session,token的请求过程,和常用的认证方式,客户端请求服务端过程中请求头的信息和响应头的信息,这些需要清楚。清楚了这些,无非就是使用工具来完成这个过程,和工具的整合。如postman+newman+jenkins能够整合到一起,JMeter+ant+Jenkins也是能够整合到一起,当然JMeter性能测试工具还可以和influxdb,grafana工具能够整合到一起(后期我会更新Grafana的数据整合)。代码层面整合的也是很多的,比如单元测试框架,面向对象,设计模式,数据驱动,测试框架等等,到最后基本是按框架的方式来编写测试用例。好,那就接着谈接口测试的维度。

  从形态上说,接口测试可以分为单接口的测试和基于业务的接口测试,单接口的很好理解,就是每个接口测试之间没有任何的依赖关系,客户端请求服务端,服务端返回响应数据然后断言,我个人觉得它的测试是有必要的,但是意义不大,毕竟从产品形态上来说,怎么可能没关联了,事物之间充满了太多的依赖性。那么使用最广泛的也是基于业务场景的API的测试,通过接口测试的技术实现业务场景的测试,这样它的难点在于业务之间的关联性,以及接口和接口之间的依赖关系,处理最复杂也是最普遍的是参数的上下关联性,如A接口返回的参数,给下个接口B调用,使用的方式当然也是很多的,如postman里面使用定义变量方式解决,JMeter里面可以使用后置处理器来解决,代码层面可以使用函数的返回值来解决,其实思路都是一样的,只不过一个是工具,另外一个是代码。当然针对单纯的一个接口来测试,就存在几个维度,如一个接口中,它的请求参数是否为空验证,类型验证,边界值验证和安全性的验证。

  另外一点是在接口测试中,使用工具了为什么还要使用代码了?这很好回答,工具人人都会,代码是一种能力,不一定人人都会(当然也是人人都可以会的)。

  最后谈谈API的分层测试,API的网关经常会被使用到,网关封装了所有连接外部服务的逻辑,同时它也是处理了底层的通信协议,对另一个领域下的对象进行了序列化与反序列化。只所以谈分层,是因为在一个接口的测试中,我们很多时候调用的是上层的接口,但是上层的接口又是另外一个被封装的接口被提供的,这中间是多层的处理思路,如果基础架构平台出问题,基本就是瘫痪,影响的全局产品,但是如果是最上层出问题,只是影响了一个应用程序或者一个产品而已,所以API的测试也需要分层来考虑,这就需要对公司的架构得非常熟悉,了解各个之间的调用链的关系。

  后面再继续更新接口测试的其他维度,也谢谢您的支持。

End 。

作者:YHZ智哥

微信打赏

赞赏是不耍流氓的鼓励