一 . 接口测试的定义
1.接口是前后端沟通的桥梁,是数据传输通道,包括外部接口、内部接口,内部接口又包括:上层服务与下层服务接口、同级接口;
2.接口是把自己提供给外界的一种抽象化物,使其能被内部修改而不影响外界与其交互的方式;
下面以生活实例举例说明什么是接口:
电脑上的键盘的按键就是电脑向人提供的接口。键盘上的按键(接口),打字时候输入的 qwer(接口的输入) ,展现在电脑屏幕上的 qwer(接口的输出)
二 . 接口的本质
接口是具有特定输入和特定输出的一套逻辑处理单元,也可以理解成它是一种契约,遵循一种形式,在项目开发前期前后端会约定接口接收什么参数,后端处理完之后,返回什么数据给前端。前后端一起联调完成系统逻辑的前期预期,提高研发效率
三 . 常见的接口类型
HTTP 接口:基于超文本传输协议(HyperText Transfer Protocol HTTP)开发的接口,是应用最广泛的网络协议之一。基于浏览器/服务器(B/S)的软件系统大多数为 HTTP 接口;
Web Service 接口:系统对外的接口,根据提供的方法引用提供的接口,从而获取数据;
RESTful 接口:简称 REST,描述了一个架构式的网络系统;
Dubbo 接口:Dubbo 是一个分布式、高性能、透明化的 RPC 服务架构。是阿里巴巴公司开源的一个高性能优秀的服务治理方案。可以理解 HTTP 是基于客户端 - 服务端传输,而 DUBBO 是后端服务与服务之间方法的调用,传输信息
四 . HTTP 工作原理
HTTP 协议工作于客户端 - 服务器(C/S) 架构上。浏览器作为 HTTP 客户端通过 URL 向 HTTP 服务端即 web 服务器发送所有请求。
下面通过一张互联网架构图理解 HTTP 工作原理:
接口发送请求时候的交互原理:客户端发送网络请求→API 网关,网关可能部署在 (阿里云,Apache,IIS,nginx 等)→再到后端服务 services(可能存在多层级的服务)→servies 再去数据库(大数据)获取数据→数据返回给客户端,http 默认是持久连接
五 . session 与 cookie
cookie 是访问网站的时候,由网站服务器返回的一种标记为 cookie 类型数据;在本地存储一些网站相关的信息,下次再访问的时候减少一些步骤。或者说 cookie 是服务器在本地机器上存储的小段文本并随每一个请求发送至同一个服务器,是一种在客户端保持状态的方案。
由于 HTTP 协议是无状态的协议,所以服务端需要记录用户的状态时,就需要用某种机制来识具体的用户,这个机制就是 Session。
cookie 是保存在浏览器上,可以进行 Cookie 欺骗相对于 session 安全级别比较弱。session 是放在服务器端,更加安全;
Session 保存在服务端,每个用户发送请求时产生一个 Session,当访问增多,会比较占用服务器的性能,如果主要考虑到减轻服务器性能方面,应当使用 Cookie;
cookie 和 session 应用的场景:
cookie:用户的登录状态,记录用户的习惯,购物车;
session:登录验证;
六 . 接口测试的定义
接口测试是基于协议进行测试的,实际上是黑盒测试,基本的测试思路是通过输入和输出判断被测系统或者对象的逻辑。为什么说接口是黑盒测试,因为接口是具有特定输入和特定输出的一套逻辑处理单元,测试接口时候不需要知道它的内部实现逻辑
七 . 接口测试的意义
接口测试是测试工程师的必修课:如果不会接口测试,自动化更别提了, 领导也不相信你会把自动化测试能做好。然后会搭建接口自动化测试框架,也是你能力体现的一个分水岭
接口测试的好处:
越早发现 bug,修复的成本越低 -- 出自《软件测试的艺术》,接口测试使 “测试更早的投入” 变成现实,更能更好的保证软件质量
接口测试可以测试一些界面测试无法测试的范围。
接口测试直接测试后端服务,能发现影响范围更广的 bug
接口测试更容易与自动化测试系统或者平台结合,比如 UI 自动化 + 接口自动化=一体化
八 . 接口的请求方法
http 协议里定义了一些请求的方法或者叫动词,这些方法和动词可以进一步定义请求的目的,比如是获取资源还是创建资源等;常用的是 GET,POST。
在接口测试中,一般来说,post 创建数据,get 获取创建成功后的所有数据和指定的数据,put 可以对创建成功后的数据进行修改,delete 是删除指定的资源。以下是接口请求方法列表:
九 . 接口常见响应状态码
200 是成功
302 重定向
400 服务器未做任何处理
401 被请求的页面需要账号密码
403 没有权限
404 服务器找不到被请求的资源
500 请求未完成,服务器遇到不可预知错误
OK,我们理解了接口和接口测试的意义之后,接下来我们就可以着手于接口测试了,后面会分别分享 接口测试项目实操。如何用接口测试工具进行接口测试、基于 python 语言进行接口测试、搭建接口自动化测试框架思路,文章首发于公众号:程序员一凡,感谢大家持续关注我。