接口测试的地位
采用金字塔型和橄榄球型来形象说明一下
金字塔型从上到下:UI测试、接口测试、单元测试
橄榄球型:接口测试在椭圆的中间
可见,一个产品在完成之前,进行的测试最多的是接口测试。
什么叫做接口测试
传递固定格式信息并获得处理结果的一扇门 。
接口的类型
并非所有应用程序的接口都会以WEB API的方式提供,有些场景需要使用TCP承载接口数据
基于TCP的socket接口
公共协议:如ISO8583
私有协议: 基于HTTP的WEB接口
基于HTTP的WEB接口
soap风格
soap是一种数据交换规范,是一种轻量的、简单的、基于XML的协议规范,其优点是易用、灵活、跨平台。
RESTful风格
RESTful是一种指导思想,核心是资源。面向资源,提供了对应HTTP语义的增删改查等操作。RESTful不是一种规范,是目前最流行的WEB API设计风格。 其报文一般采用application/json格式。简单易用,但是安全性较低。
接口测试的必要性
可以发现页面上操作发现不了的bug
检查系统的异常处理能力
检查系统的安全性、稳定性
前端变化不会影响到接口
注: 前后端分离技术
前后端分离解耦是接口测试的重要前提,之前采用的是老旧的后端渲染方式。采用了前后端分离方式,才能开展接口测试。
前端:用于展示数据,提供用户操作接口(UI),一般不会包含复杂处理逻辑,往往会有输入校验等基本功能。
后端:用于处理业务逻辑,通过接口为前端提供数据。
接口测试案例设计的思路
文档标准:按照接口文档上的参数,正常传入,是否可以返回正确的结果
参数组合:有些接口没有遵循RESTful风格,可能根据入参组合能完成多个功能 。
接口安全:绕过验证,比如提交数据时输入不合法参数,如负数、字符串。
绕过身份授权:比如提交数据时更换用户ID、岗位等信息,观察结果是否符合预期。
参数是否加密:比如敏感信息需要在客户端经过一定的加密规则发送到服务器,可尝试验证不加密是否也会正常处理。
后端校验的补充测试:比如密码只能设置长度大于8位的大小写数字混合。
异常验证
所谓的异常验证,也就是不按照接口文档上的要求输入参数,来验证接口对异常的校验。
比如:必填项为空,输入整数类型的,输入其它类型(字符串、特殊字符),长度超长的校验。
总结
接口测试,归根结底是协议的解析和字符串的比对,真正涉及接口的部分,无论是通过RF、通用接口模拟器、Python或者其它方式,基本上都已经有了很成熟的封装。编写自动化案例,只要牢牢掌握报文的组装拼接与解析比对,就可以应对大部分的接口。 掌握报文的组装拼接与解析对比,就要求测试人员对协议本身有一定的认识,尤其对报文结构应该非常熟悉。 如何查看报文,请看下文分解。