1. 接口
1.1 定义
应用程序编程接口(Application Programming Interface,API),是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
通俗理解,如y=x+3,当x=5的时候,y=8,把y=x+3称为接口,x=5称为参数,y=8称为返回结果,那这个接口的功能就是能把我们输入的数加上3。即接口就是预先定义的函数逻辑,他是供其他系统请求,然后返回结果的一个东西。
1.2 意义
API接口可以降低开发成本,缩短开发时间。如开发某个软件,需要某功能,此功能已在市面较为成熟,重新自研成本过高,就可以购买服务,调用对应的API,实现该功能。
1.3 常用API架构风格
1.4 HTTP
1.4.1 定义
超文本传输协议(Hypertext Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。超文本传输协议是一种用于分布式、协作式和超媒体信息系统的应用层协议,是万维网WWW的数据通信的基础。
1.4.2 HTTP请求方式
GET :向服务器获取资源(不包含呈现数据)
POST :传输实体文本,向指定资源提交数据进行处理请求
HEAD :获取报文首部,类似GET,但返回的响应中无具体内容
OPTIONS :询问支持的方法,获取当前URL所支持的方法
PUT :传输文件,指定上传资源存放路径
(PUT通常指定了资源的存放位置,而POST的数据存放位置由服务器自己决定)
PATCH :局部更新文件,对已知资源进行局部更新
DELETE :删除文件,请求服务器删除指定的资源
TRACE :追踪路径,回显服务器收到的请求,客户端可以对请求消息的传输路径进行追踪
CONNECT :要求用隧道协议连接代理
1.4.3 常见HTTP状态码
每发出一个http请求之后,都会有一个响应,http本身会有一个状态码,来标示这个请求是否成功
200 OK :请求正常处理完毕
204 NO Content :请求成功处理,没有实体的主体返回
206 Partial Content :GET范围请求已成功处理
301 Moved Permanently :永久重定向,资源已永久分配新URI
302 Found :临时重定向,资源已临时分配新URI
303 See Other :临时重定向,期望使用GET定向获取
304 Not Modified :发送的附带条件请求未满足
307 Temporary Redirect :临时重定向,POST不会变成GET
400 Bad Request :请求报文语法错误或参数错误
401 Unauthorized :需要通过HTTP认证,或认证失败(未授权)
403 Forbidden :请求资源被拒绝(无权访问)
404 Not Found :无法找到请求资源(没有这个页面)
500 Internal Server Error :服务器故障或Web应用故障
503 Service Unavailable :服务器超负载或停机维护
2. 接口测试
2.1 定义
接口测试就是测试系统组件接口之间的一种测试。原理是模拟客户端向服务器发送请求,服务器接收请求后对相应的请求做处理并向客户端返回响应结果,客户端接收结果的一个过程。
2.2 原因
效率:目前很多系统都是前后端分离的,前后端工作进度不一样,当前端界面未开发完全,但后端接口开发已完成时,我们就可以开始接口测试了,即测试左移,可以极大提高工作效率。
安全:前端验证很容易被绕过,只依赖前端进行限制不足以满足系统的安全性要求,还需要后端进行验证,要从接口层面再次进行验证。
成本:越靠近底层尽早发现bug,修复成本越低。且接口测试相对容易实现自动化持续集成,可以减少人工回归测试人力成本与时间,缩短测试周期,支持后端快速发版需求,做到低成本高收益。
2.3 分类
测试外部接口:测试被测系统和外部系统之间的接口(如电商网站,通过支付宝、微信等支付,测试第三方支付接口,只需要测试正例即可)
测试内部接口:①内部接口只提供给内部系统使用(如登录模块和发帖模块进行交互)
②内部接口提供给外部系统使用(测试尽量全面,正例、异常场景、权限控制等)
2.4接口测试大致流程
①根据后端开发提供的接口api文档,熟悉接口业务,如接口地址、鉴权方式、入参、出参、错误码的设置等。(若无接口文档,可使用抓包工具fiddler进行接口数据的抓取)
简单版本api文档内容:
• 接口说明(接口功能定义、接口请求地址、请求头、请求方式、参数类型等)
• 请求示例
• 请求参数说明
• 响应示例(成功和失败)
• 响应参数说明
②编写接口用例及评审。
大致思路:
基本功能流程测试
基于输入域的测试(边界值、特殊字符、必选参数、接口幂等性、排重逻辑、组合参数、参数类型)
线性安全测试(并发测试、分布式测试)
故障注入法(Redis故障降级测试、服务故障转移测试)
流量捕捉与回放
③使用接口测试工具执行接口测试(如Postman)
④完成接口测试后,输出测试报告