接口测试理论
什么是接口
接口:是指系统或组件之间的交互点,通过这些交互点可以实现数据的交互(数据交互的通道)
接口的类型
接口分为系统之间的接口和程序内部的接口
- 系统之间的接口:多个内部系统之间的交互,内部系统与外部系统之间的交互
- 程序内部的接口:方法与方法之间,模块与模块之间的交互
接口测试的特点
- 测试可以提前介入,修改bug成本低,符合质量前移的理念
- 可以发现一些页面发现不了的问题
- 低成本、高收益
- 接口测试不同于单元测试,是站在用户的角度针对整体业务进行测试
接口测试原理
- 模拟客户端建立连接
- 客户端发送请求
- 服务器处理请求并响应
- 验证响应数据是否符合预期
接口测试实现方式
- 通过工具来实现
- Postman
- JMeter
- 通过代码来实现
- Python+Requests
HTTP协议
什么是HTTP协议
超文本传输协议(Hyper Text Transfer Protocol),说人话就是客户端和服务器遵守的一种标准(协议)
HTTP协议的特点
- 基于客户端与服务器模式
- 简单快速
- 灵活(涉及多种请求方式,如Get、Post、Put、Delete)
- 无连接(第一次登录后,第二次访问URL依然需要登录)
- 无状态
URL
什么是URL
统一资源定位符(Uniform Resource Locator),是互联网上标准资源的地址。HTTP使用URL来建立连接和传输数据。
URL的格式
http://www.itcast.cn:8080/news/index.html?uid=123&page=1
- 协议部分:”HTTP”,常见有HTTP、HTTPS、FTP、SMTP/POP3/IMAP等
- 域名部分:“www.itcast.cn”,也可以使用IP地址作为域名使用
- 端口部分:“8080”,默认的端口号可以省略,默认端口(HTTP:80,HTTPS:443,FTP:21)
- 资源路径部分:”/news/index.html” ?号前面的内容才是你真正的服务器的资源路径/接口地址
- 查询参数部分:“uid=123&page=1”,问号后面的内容,即参数(可以允许有多个参数),多个参数之间用&作为分隔符,参数部分的内容是不会被服务器解析的。如何进行交互是使用参数里面的数据。
- ? 隔离URL主体与参数部分内容
- & 存在多个参数时,使用&进行拼接
HTTP请求
HTTP请求由三部分组成:请求行、请求头、请求体
请求头
请求头由键值对组成,每行一对。请求头部通知服务器有关客户端请求的信息。
典型的请求头有:
- User-Agent:产生请求的浏览器类型
- Accept:客户端可识别的内容类型列表
- Content-Type:请求体数据的类型,常见的类型有:
- text/html:HTML格式
- text/plain:纯文本格式
- image/jpeg:jpg图片格式
- application/json:JSON数据格式
- application/x-www-form-urlencoded:form表单数据被编码为key/value格式发送到服务器(表单默认的提交数据格式)
- multipart/form-data:在表单中进行文件上传时使用
请求体
GET请求是没有请求体的,一般请求体在Post和Put请求方式中使用
请求体数据可以是:表单数据、文本、XML、JSON
HTTP响应
HTTP响应也有三部分组成,分别是:状态/响应行、响应头、响应体
状态/响应行
状态行由协议版本号、状态码和状态消息组成
状态码
响应头
内容以键值对形式存在,用于描述服务器相关信息
响应体
响应数据:JSON、XML、HTML等
RESTful接口风格
- 每一个URL代表一种资源
- 客户端通过四个HTTP动词,对服务器端资源进行操作,实现“表现层状态转化”
- 接口之间传递的数据最常用格式为JSON
- 规范风格:只是一种规范、不是标准或规定
- 示例:
-
URL:协议://域名:端口号/资源路径/{资源集合}/{指定资源}
资源集合 = 表名
-
请求方法:POST/GET/PUT/DELETE
-
状态码:200/201/204
-
接口文档的解析
登录接口解析的结果↓
添加员工接口
面对请求体参数很多时,可以采用以下方式:
- 优先从API文档找示例
- 找开发提供一个样例数据
- 项目后期(已完成页面功能时),可以通过抓包工具来获取一条样例数据