API接口是Application Programming Interface的简称,是一些预先定义的函数,包括接口地址、传入参数和返回参数。
接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。
不管是哪种接口,其本质就是发送一个request,然后服务器响应后返回一个response,然后我们对response进行分析,这就是接口测试。
接口测试的分类:
1.webservice接口
webService接口是走soap协议通过http传输,请求报文和返回报文都是xml格式的,我们在测试的时候都用通过工具才能进行调用,测试。
2.http api接口
http api接口是走http协议,通过路径来区分调用的方法,请求报文都是key-value形式的,返回报文一般都是json串,有get和post等方法,这也是最常用的两种请求方式。
请求协议:
http --- 普通的http请求
https --- 加密的http请求,传输数据更加安全
请求IP:就是指提供接口的系统所部署的服务器地址
请求端口:如果不填端口,默认是80,否则需要填写端口号
接口路径:指系统提供的接口在什么位置
接口参数:参数在接口路径后,用“?”来表示路径地址完了,剩下的都是参数了,用“&”来区分参数个数
随着系统越来越多,以及复杂性越来越高,为了保证系统的独立性,也为了使业务更加的独立,系统间的交互,越来越多的使用接口,这时候,为了保证数据的传输的准确性,接口测试也应运而生了,数据的错误,有可能引起系统的重大BUG。
所以,接口测试的必要性就体现出来了:
①、可以发现很多在页面上操作发现不了的bug
②、检查系统的异常处理能力
③、检查系统的安全性、稳定性
④、前端随便变,接口测好了,后端不用变
现在很多系统前后端架构是分离的,从安全层面来说:
(1)、只依赖前端进行限制已经完全不能满足系统的安全要求(绕过前面实在太容易), 需要后端同样进行控制,在这种情况下就需要从接口层面进行验证。
(2)、前后端传输、日志打印等信息是否加密传输也是需要验证的,特别是涉及到用户的隐私信息,如身份证,银行卡等。
接口测试工作流程
准备阶段(80%)
拿到开发的接口文档,并理解每个接口的参数及含义
了解被测试系统的业务流程
编写接口测试用例
执行阶段(10%)
测试用例/测试场景执行
测试数据/系统数据收集
分析阶段(10%)
数据汇总/日志分析
测试报告
接口测试用例编写
测试每个参数类型不合法的情况
测试每个参数取值范围不合法的情况
测试参数为空的情况
测试参数前后台定义的一致性
测试每个参数的上下限(这里容易出致命的BUG,如果程序处理不当,可能导致崩溃)
测试每个参数取值不合理的情况(包括取的值不属于自己,取值在这阶段不会出现,取值超出了自己所拥有的数量或者范围)
如果两个请求有严格的先后顺序,需要测试调转顺序的情况
自己和自己的交易、聊天等操作(这种特别容易遗漏)
接口文档
我们做接口测试,需要开发提供接口文档。最重要的有一下几点:
1. 被测接口的地址
2. 接口参数,以及各个参数的说明
3. 必要的http头与http体 ( http头是可以自定义的,可以用来校验是否是自己人访问 )
4. 接口返回什么值,以及各个返回值的说明
5. 接口是干什么的
常见接口测试工具
• 典型商业工具:loadrunner,soapui
• 典型开源工具: jmeter
• 扩展插件:POSTMAN
使用postman按照接口文档进行测试