欢迎来到啊妮莫的学习小屋✨
个人主页🏠: 啊妮莫的学习小屋
收录专栏🚩: 软件测试
本篇文章主要介绍关于接口测试的基础理论知识, 非常适合零基础的小白入门~
目录
接口
概念
-
接口: 系统与系统之间, 组件与组件之间, 数据传递交互的通道.
接口的类型
-
按协议划分: HTTP, TCP, IP
-
按语言划分: C++, Java, PHP...
-
按范围划分
-
系统之间
-
内部系统之间
-
内部系统与外部系统之间
-
-
程序之间
-
方法与方法之间, 函数与函数之间, 模块与模块之间
# 接口 def eat(something): print(f'小鸟在吃{something}') # 使用接口,传递数据 def bird(): eat('苹果') bird()
-
-
接口测试
概念
-
对系统或者组件之间的接口进行测试, 校验传递的数据正确性和逻辑依赖关系的正确性!
原理
接口测试主要是通过模拟客户端向服务器发起请求; 对服务器进行测试.
实现方式:
-
工具: postman, fiddler, Jmeter
-
代码: python, UnitTest框架, Requests框架
通过工具或者代码的形式发起请求, 用肉眼判断或者代码断言 比对响应数据是否和预期结果一致.
特点
-
符合质量控制前移的理念
-
可以发现一些页面操作发现不了的问题
-
接口测试低成本高效益
-
接口测试是从用户的角度对系统进行检测
自动化接口测试
借助工具或者代码, 模拟客户端发送请求给客户端, 借助代码断言自动判断预期结果和实际结果是否一致.
接口测试流程
-
分析需求, 产生需求文档(产品).
-
解析接口文档 (接口文档由开发编写)
-
编写接口测试用例 (提交评审)
-
执行测试用例
-
工具: postman, Jmeter, fiddler
-
代码: python + Requests + UnitTest
-
-
提交, 跟踪缺陷
-
生成 测试报告
-
接口自动化持续集成 (可选)
HTTP协议
协议: 就是规则. 要求通信双方必须严格遵守!
简介
HTTP: 超文本传输协议, 是一个基于请求和响应模式的, 应用层的协议, 也是互联网上应用最为广泛的一种网络协议.
HTTP协议的特征:
-
支持客户端/服务器模式
-
简单快速
-
灵活
-
无连接
-
无状态
URL语法格式
URL又称: 统一资源定位符. 它可以在网络环境中, 唯一的标识一个数据资源.
-
协议: http; 规定数据传输的方式.
-
域名(IP): 在网络环境中唯一标识一台主机; 使用://与协议进行隔分.
-
端口(port): 在网络环境中唯一的标识一台主机上的一个进程; 常常省略; 使用: 与域名隔分.
-
资源路径: 表示网络资源(文件, 图片, 视频...); 用/ 与端口号隔分
-
查询参数: 传递给资源路径对应的数据; 用?与资源路径隔分; 查询参数内部用&隔分.
HTTP请求语法格式
HTTP请求规定了客户端发送给服务器的数据传输的语法格式.
-
请求行: 请求方法 URL 协议版本
-
请求头: 以kv对的形式组织
-
User-Agent: 描述 请求发送端的 浏览器类型.
-
Content-Type: 描述 请求体(Body) 的数据类型.
-
-
空行: 标识http请求头结束
-
请求体: 请求发送时携带的数据. 类型为Content-Type的值.
-
POST
和PUT
通常携带请求体 -
GET
和DELETE
通常不携带请求体
-
常见的Content-Type:
application/json: JSON数据格式
application/x-www-form-urlencode: form表单数据
HTTP响应语法格式
HTTP响应规定了服务器回复给客户端的数据传输的语法格式.
-
响应行: 协议版本 状态码 状态描述(短语)
-
响应头: 以kv对的形式组织
-
Content-Type: 描述响应体的数据类型.
-
-
空行: 标识响应头的结束
-
响应体: 绝大多数不为空(请求成功: 回发数据, 失败: 回发错误信息)
-
常见的响应体有: html网页, xml, json
-
常见状态码分类及其含义:
1xx: 表示请求已经被接收, 等待继续处理.
2xx: 代表请求成功被处理; 200 ok
3xx: 重定向
4xx: 客户端错误; 404 Not Found
5xx: 服务器错误;
接口风格
传统风格接口
特点:
-
请求方法: 只使用
GET
和POST
即可 -
URL不唯一. 同一个操作可以对应不同的URL
-
状态码的使用比较单一; 200最为常见
RESTful风格接口
特点:
-
每一个URL代表一种资源
-
客户端和服务器之间, 传递这种资源的某种表现层
-
表现层: 数据的不同表现形式
-
-
请求方法: 使用
GET
,POST
,DELETE
,PUT
方法完成对服务器的操作, 实现"表现层转化" -
接口之间传递的数据最常用的格式为JSON
接口文档
接口文档: 又称API文档, 一般由开发人员所编写, 用于描述系统所提供接口信息的文档.大家都根据这个接口文档进行开发, 并需要一直维护和遵守.
作用
-
能够让前端开发与后台开发人员更好的配合,提高工作效率。(有一个统一参考的文件)
-
项目迭代或者项目人员更迭时,方便后期人员查看和维护
-
方便测试人员进行接口测试
接口文档的展现形式有很多:
word 文档
pdf 文档
Excel 文档
结构
-
基本信息
-
资源路径 (协议和域名在 "系统信息"中)
-
请求方法
-
接口描述
-
-
请求参数
-
请求头
-
请求体
-
-
返回数据
-
状态码: 200 ok
-
错误码: 开发人员自定义
-
解析接口文档
解析接口文档的目的是: 从接口文档中, 找出HTTP请求所需要的数据信息
主要包含: 请求方法, URL, 请求头, 请求体, 响应状态码, 描述.
以登陆模块为例:
参数名 | 参数值 |
---|---|
请求方法 | POST |
URL | https://ihrm-java.itheima.net/api/sys/login |
请求头 | Content-Type :application/json |
请求体 | {"mobile":"13800000002", "password":"123458888"} |
响应状态码(预期结果) | 200 ok |
错误码(开发定义的) | 10000 操作成功; 20001 用户名或密码错误; 99999 系统繁忙 |
fiddler发送HTTP请求
-
点击Composer
-
组织HTTP请求 (根据接口文档解析出来的信息, 其中部分信息是点击Execute后自动生成的)
-
点击右边的 Execute 按钮
-
fiddler抓包到了请求数据和响应数据
接着, 我们可以点击抓包结果进行查看:
