接口的含义和重要术语
接口的含义
- 接口也称API(Application Programing Interface),意思是应用程序编程接口
- 接口本质上是程序开发的函数或方法
- 一个接口要依照需求完成一定的业务功能
web接口
- 是基于web协议或http协议的接口
web接口相关概念
- 服务器
- 被测软件或被测接口程序安装在服务器上
- 客户端
- 客户端/机是个人计算机
- postman、fiddler、jmeter、python安装在客户端上
- 请求
- 请求:客户端发送数据给服务器的过程
- 请求头:请求的一些附加信息(如客户端使用的什么操作系统、客户端使用的什么浏览器、客户端能够接受什么字符编码等)
- 请求体:对于post方法,发送的数据会放在请求体中
- 响应
- 响应:服务器把结果发送给客户端的过程
- 响应头:响应的一些附加信息,比如响应类型、响应状态码、cookie等
- 响应体/响应正文:相当于接口返回值,也是测试时最关心的内容
web接口的组成要素
- 接口地址
- 协议://域名或IP地址:端口号/应用名/接口名/
- 如http://172.166.100.54:8000/sign/get_event_list/
- 请求方法
- get、post、put、patch、delete、head等
- 参数
- http://服务器域名或服务器IP/接口名/?参数名1=值1&参数名2=值2
- 如http://172.166.100.54:8000/sign/get_event_list/?id=1&name=tom
- 返回值/响应结果
- json、text/html、xml
- 200、404、500
接口测试的含义
- 对接口的功能、性能、安全性等方面进行验证的一种测试类型
- 接口功能测试主要用于验证接口是否正确实现和处理需要的各种业务,将不同的数据传递给同一个接口,判断各个返回值是否正确
为什么进行接口测试
- 前后端分离
接口测试的方法
- 基本无法进行手工测试
- 自动化测试
- 借助测试工具或编写脚本实现接口测试
接口自动化测试能做什么
- 自动准备初始化数据
- 自动执行测试用例
- 自动验证接口返回结果的正确性
- 自动验证数据库数据的正确性
- 自动生成测试报告
接口自动化测试的步骤
- 需求分析
- 阅读文档
- 提炼重要需求点
- 整理需求为文字形式
- 编写测试用例
- 依据公司模板或自定义
- 考虑前置条件
- 考虑是否验库
- 编写并调试脚本(选择适当方式编写代码)
- 面向过程编程
- 线性编码、函数封装
- 面向对象
- 模块
- 包
- 测试框架(pytest、unittest)
- 搭建测试环境
- 被测系统环境搭建
- 不使用生产数据库和开发数据库
- 应该使用独立的测试数据库
- 打升级补丁还是全新安装
- 被测系统环境搭建
- 执行测试脚本
- 执行测试代码
- 记录测试日志
- 生成测试报告
接口需求分析
- 确定接口测试范围和目标
- 测试范围: 具体功能模块
- 测试目标: 接口功能测试
- 阅读文档,需求分析要点
- 获取需求规格说明书(《apitest接口需求.pdf》)、设计说明书等接口文档
- 分析接口的功能要求(实现何种业务)
- 接口地址(协议、服务器IP、端口号、接口名、/是否可省)
- 请求方法
- 参数(有无参数、参数名、参数含义、参数类型、参数长度、参数必须还是可选、约束<主键、唯一键、是否允许为空、外键、默认值等>)
- 返回值(响应码、响应正文类型、响应正文内容)
- 对数据库的影响
- 获取需求规格说明书(《apitest接口需求.pdf》)、设计说明书等接口文档
- login接口需求分析
- login接口数据库需求分析
- login接口需求整理
- signup接口需求分析
- signup接口数据库需求分析
- signup接口需求整理
编写login接口测试用例
- 测试用例包含的字段
- 用例编号
- 唯一
- 一般形式:软件名简称_模块名_接口名_01
- 用例标题
- 用一句话说清楚测试目的
- 接口路径
- /应用名/接口名/
- 请求方法
- get、post等
- 请求类型
- data:form表单类型
- json:json类型
- 参数
- 每个参数写一个列
- 使用公式改造合并成带{ : }的形式
- 预期结果
- 每个预期结果中的字段单独写一列
- json字符串类型的响应结果使用公式改造成带{ : }的形式
- 要检查的表名
- 多个表采用(表名1, 表名2)的写法
- 检查数据库的sql语句
- 数据库预期结果
- 数据库中预期存在数据的行数
- 采用(表1行数, 表2行数)的写法
- 案例:编写登录成功的测试用例
- 注意
- 根据公司指定的模板或者自定义模板编写用例
- 用例数据自己设计,但要注意不要跟同事的数据相冲突
- python使用的接口用例中的参数一般写成字典形式,预期结果大多也是字典形式
- 务必理解什么是前置条件,写用例时,应该确保所有的内容都是可实施的
编写signup接口测试用例
- 给注册成功用例添加验库内容
- 注册时,需要向数据库中写入数据,必须检查数据库数据的正确性
- 验库也叫落库检查,就是检查数据库数据的正确性
- 注意
- 接口业务涉及数据库的增删改操作时,必须验证数据库数据的正确性
- 验库原则
- 如果预期数据库存在某些数据,则所有要求存在的数据必须全部列入检查的查询条件中
- 如果预期数据库中不能存在某些数据,则查询条件中列只写主键列或唯一键列,至少确保查询结果只涉及自己的sql语句