一、什么是接口测试

接口测试:测试系统组件间接口的一种测试。主要用于检测外部系统与系统之间以及系统内部各个子系统之间的交互点。重点测试的是数据的交换,这要求对业务逻辑有一定程度上的理解,对数据流向有较好的定位。

接口测试大体分为两类:模块接口测试web接口测试

模块接口测试

模块接口测试是单元测试的基础。它主要测试模块的调用与返回。

对于模块接口测试来说有哪些测试要点:

         1、检查接口返回的数据是否与预期结果一致。

  2、检查接口的容错性,假如传递数据的类型错误时是否可以处理。例如上面的例子是支持整数,传递的是小数或                     字符串呢?

  3、接口参数的边界值。例如,传递的参数足够大或为负数时,接口是否可以正常处理。

  4、接口的性能,接口处理数据的时间也是测试的一个方法。牵扯到内部就是算法与代码的优化。

  5、接口的安全性,如果是外部接口的话,这点尤为重要。

web接口测试

web接口测试又可分为两类:服务器接口测试和外部接口测试。

  服务器接口测试:是测试浏览器与服务器的接口。这个很容易理解,我们知道web开发一般分前端和后端,前端开发人员用html/css/javascript等技术。后端开发人用php/java/python/ruby等各种语言。用户输入的数据是输入到的前端页面上,怎样把这些数据传递的后台的呢?通过http协议的get与post请求来实现前后端的数据传递。这也可认为是接口测试,调用的登录接口还是查询接口,传参的是用户密码还是搜索关键字。

   外部接口测试:这个很典型的例子就是第三方登录,比如你做的新系统免于新用户重新注册的麻烦会提供第三方登录,那用户在登录的时候调用的就是第三方登录的接口,由第三方验证用户名和密码并且返回给当前系统。

对于web接口测试来说有哪些测试要点:

  1、请求是否正确,默认请求成功是200,如果请求错误也能返回404、500等。

  2、检查返回数据的正确性与格式;json是一种非常创建的格式。

  3、接口的安全性,一般web都不会暴露在网上任意被调用,需要做一些限制,比如鉴权或认证。

  4、接口的性能,web接口同样注重性能,这直接影响用户的使用体验。如果我搜索一个关键字半天结果都没返回,果断弃用。

接口测试的过程:通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一过程(request→response)

接口测试的作用:降低成本,提高效率。接口测试能够提供系统复杂度上升情况下的低成本高效率的解决方案。它是一个完整的体系,还包括功能测试,性能测试等。


二、用例设计

测试用例主要从业务场景,功能以及异常测试几个方面考虑;具体测试用例的参考点:

a)输入参数测试:针对输入参数进行的测试,也可以说是假定接口参数的不正确性进行的测试,确保接口对任意类型的输入都做了相应的处理:输入参数合法(不合法),输入参数为空,为null,输入参数超长等等;

b)功能测试“接口是否满足了所提供的功能,相当于正常情况测试,如果一个接口功能复杂时推荐对接口用例进行结构划分,这样子用例觉有更好的可读性和可维护性;

c)逻辑测试:逻辑测试严格讲应为单元测试,单元测试应保持内部逻辑的正确性,可单元测试和接口测试的界限并不是那么清楚,所以我们也可以从给出的设计文档中考虑内部逻辑错误的分支情况和异常;

d)异常情况测试:接口实现是否对各种情况都进行了处理,接口输入参数虽然合法,但是在接口实现中,也会出现异常,因为内部的异常不一定是输入的数据造成的,而有可能是其他逻辑造成的,程序需要对任何异常都进行处理。


三、脚本设计

接口测试脚本有哪些要求:结构好,可读性高,渗透性强。脚本设计步骤:

a)准备测试环境:初始化、注册主动回调函数

b)代码:封装被调用接口

c)数据:准备测试数据

d)执行用例:(1)数据初始化;(2)调用接口

e)执行结果:(1)返回值断言比较;(2)垃圾数据清理

关于接口测试的测试数据:分为两部分:接口参数数据和用例执行所需系统数据。接口参数数据需要对每个参数根据测试接口的实际功能进行分析,在符合业务逻辑的情况下进行逻辑组合排列,不要遗漏某些边界值和错误点的数据,这样用例更容易发现问题。