一、接口
1、接口定义:接口就是数据交互的通道。在系统或组件时间,完成数据的传递。
2、接口优点:
- 责任划分清晰
- 缩短研发周期
- 可拓展性强
- 统一设计标准
3、接口的类型
(1)按协议划分。协议不同,接口的类型不同:HTTP、TCP、UDP、IP、FTP、USB
(2)按语言划分。java、python、C++、php.....
(3)按范围划分:
系统之间:内部系统之间,内部系统和外部系统之间
程序内部之间:方法和方法之间,类和类之间,模块和模块之间
4、API接口:应用程序编程接口(API:Application Programming Interface,应用程序编程接口) :以HTTP协议形式提供,定义了输入、输出、功能描述的服务
二、接口文档
1、介绍:也叫 API 文档。是由开发人员编写,描述接口相关信息的文档
2、作用:
- 方便前端开发人员和后端开发人员,在开发时进行对接
- 在人员更迭时,方便新入职的员工快速接手项目
- 方便测试人员编写接口测试用例
3、结构:
- 基本信息:
- 接口描述
- URL:(协议+域名)+资源路径
- 请求方法
- 请求参数:
- 请求头
- 请求体
- 返回结果:
- 状态码、状态描述
- 响应体
三、接口测试
1、接口测试:测试系统或组件之间交互的数据的正确性,以及逻辑依赖关系的正确性。
2、接口测试原理:
- 数据(预期结果)从哪里来:根据用户需求
- 怎么校验:借助工具、代码模拟客户端,组织数据
3、接口测试特点:
- 提早介入,符合测试的质量控制前移原则
- 接口测试可以发现 页面操作发现不了的问题。如:支付密码,输入 非数字、特殊字符
- 低成本高收益(接口的一个bug ,可能对应上层界面 N 个bug)
- 接口测试,不同于传统的单元测试,站在用户的角度展开测试。
4、接口测试流程:
- 结合需求文档,需求分析
- 结合开发提供的接口文件,进行接口分析
- 出具接口测试用例 (送审)
- 执行接口测试用例(工具实现、代码实现)
- 缺陷(bug)的管理和跟踪
- 生成测试报告
- 接口自动化持续集成(可选)
5、接口测试分类 :
(1)web接口测试——BS架构
服务器接口测试:测试自己公司实现的接口
第三方接口测试:测试别的公司实现的接口
(2)模块接口测试——CS架构
6、接口测试实现方法
- 工具实现:Postman、fiddler、jmter
- 代码实现:python + UnitTest + requests(自动化)
7、接口测试测试点
功能测试
- 单接口:手工测试中每个业务功能。在接口测试中就对应唯一的一个接口,针对该接口测试
- 业务场景:对应手工测试中,有业务流程。就是接口的调用先后顺序,按调用顺序展开测试
性能测试
- 响应时长:从发出请求,到服务器回发响应,所经历的时长
- 吞吐量:(单位时间事务数)。如1s内接口所能处理的请求数量
- 并发数:同一时间,同时向服务器的接口发送请求,所能正确处理的数量
- 服务器资源利用率:接口工作中,服务器硬件资源使用占比情况
安全测试
- 敏感数据是否加密:密码、身份证、社保号、银行卡号。。。
- SQL注入:在用户能输入数据的位置,写入SQL语句,测试是否能得到数据库的查询结果
四、HTTP协议
1、协议概念:计算机通信网络中两台计算机之间进行通信所必须共同遵守的规则或规定
2、HTTP协议:(HyperText Transfer Protocol)超文本传输协议。基于请求和响应模式的,应用层协议。是目前互联网中广泛使用的一种协议。
3、HTTP协议特点:
- 支持 客户端、服务器模式
- 简单快速
- 灵活
- 无连接
- 无状态
五、URL格式
1、URL介绍:(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。HTTP使用 URL来建立连接 和 传输数据。
2、语法格式:
- 协议:http 和 https
- 域名:本质 IP地址(定位网络环境中的一台主机)
- 端口号:在网络主机上,定位一个应用。端口号可以省略。没有指定端口号,默认跟随协议
- http 协议默认端口:80
- https 协议默认端口:443
- 资源路径:对应网页的源代码或网络中的一个数据资源。
- 资源路径可以为空(没有),相当于资源路径为 “/”
-
如有查询参数,资源路径为 ?之前 域名 ( 端口 ) 之后的所有内容
-
如果没有查询参数,资源路径,从 域名 ( 端口 ) 之后,直到结束
- 查询参数:传参给网页源代码。
- 以 ? 与 资源路径 隔分
- 查询参数可以有多个,之间用 & 隔分
- 参数的语法 key=value 键值对
六、HTTP请求
1、作用:
- 由客户端发送给服务器
- 规定了发送给服务器的数据的语法格式
2、整体格式:请求行、请求头、空行、请求体
请求行
- 作用: 指定请求方法、请求资源
- 语法格式:请求方法(空格)URL(空格)协议版本(\r\n)
- 请求方法:
- GET:查询。 —— 没有请求体
- POST:新增。—— 登录、注册主要使用。有请求体
- PUT:修改。—— 有请求体。
- DELETE: 删除。 —— 没有请求体
- URL:数据资源的定位符。 协议://域名:端口/资源路径?查询参数&查询参数&...
- 协议版本:
- http1.1/http1.2/http2.0
- 主要使用 http1.1
请求头
- 作用:向服务器描述客户端(浏览器)的基本信息
- 语法:k:v 键值对
- User-Agent:向服务器描述浏览器的类型
- Content-Type:向服务器描述请求体的数据类型
请求体
- GET、DELETE 请求方法,没有请求体
- POST、PUT 请求方法,有请求体
- 请求体的数据类型,受请求头中 Content-Type 的值影响
七、HTTP响应
1、作用:
- 由服务器回发送给客户端
- 规定了服务器回发给客户端的数据的语法格式
2、整体格式:响应行(状态行)、响应头、空行、响应体
状态行
- 语法格式:协议版本(空格)状态码(空格)状态码描述 \r\n
- 协议版本:http1.0/http1.1/http2.0。 常用 http/1.1
- 状态码:针对 http请求,响应的状态
- 1xx: 信息类,请求需要进一步访问。
- 2xx: 成功。 200 OK
- 3xx: 重定向。数据资源需要重定向访问。
- 4xx: 客户端错误。404 Not Found 文件/资源不存在。403 Forbidden 文件/资源拒绝被访问(没有权限)
- 5xx: 服务端错误。
- 状态描述:对状态码的说明。
响应头
- 作用:向客户端描述服务器的基本信息
- 语法:k:v 键值对
- Content-Type:向客户端描述响应体的数据类型
响应体
- http响应报文,大多数,是有响应体
- 响应体的数据类型,受响应头中 Content-Type 的值影响
- 常见的类型:
- json 类型
- 表单类型
- 图片类型
八、接口风格
1、传统风格接口
- 使用 GET、POST 实现所有数据的增删改查操作
- 针对用户的某一个操作,URL不唯一
- 状态码统一使用 200
操作 | 请求方法 | URL | 成功状态码 |
查询某个用户 | GET/POST | 不唯一 | 200 |
查询所有用户 | GET/POST | 不唯一 | 200 |
添加用户 | POST | 不唯一 | 200 |
修改用户 | POST | 不唯一 | 200 |
删除用户 | GET/POST | 不唯一 | 200 |
2、RESTful 风格接口
介绍:按照一定的规则写出的易读、易懂的api文档;目的是让前端、后端、测试三方在工作的时候有据可循,提示开发和测试的效率(非强制)
- 使用 GET/POST/PUT/DELETE 分别表示 查、增、改、删
- 使用 一个 URL 对应一个唯一的资源
- 状态码,根据实际操作请求加以区分
操作 | 请求方法 | URL | 成功状态码 |
查询某个用户 | GET | http://127.0.0.1/tpshop/good/1 | 200 |
查询所有用户 | GET | http://127.0.0.1/tpshop/good | 200 |
添加用户 | POST | http://127.0.0.1/tpshop/good | 201 |
修改用户 | PUT | http://127.0.0.1/tpshop/good/1 | 201 |
删除用户 | DELETE | http://127.0.0.1/tpshop/good/1 | 204 |
九、接口测试案例分析
1、接口测试用例设计要点
(1)与手工设计相同之处
接口用例设计的测试点,与手工页面业务功能的测试点几乎完全一样
(2)与手工设计不同之处
手工测试,只需要测编辑框中的数据值。 接口测试需要测试接口中使用的参数、参数值。
接口测试,除了要测试参数值以外,还要对参数本身进行测试。
- 正向:
- 必选参数:只选择所有的必选参数。
- 组合参数:必选参数与可选参数,组合测试。
- 全部参数:所有的必选 + 所有可选
- 反向:
- 多参:多出一个或多个必选参数。
- 少参:缺少必选参数。
- 无参:没有参数。
- 错误参数:修改参数名为错误名称。
2、单接口测试用例
测试用例文档要素:编号、所属模块、用例名称、优先级、预置条件、接口名称、请求方法、URL、请求头、请求体(请求数据)、预期结果
3、业务场景测试用例
- 业务场景尽量遵循用户实际使用的场景,按顺序调用接口进行测试
- 尽量使用最少的测试用例,覆盖最多的业务场景
- 一般情况下,只需要测试正向的业务场景即可
4、案例分析
本次设计用例网址:http://ihrm2-test.itheima.net/
首页效果:
登录测试点:
业务场景测试点: