【接口测试】
什么是接口测试
在做接口测试之前,我们要明白,什么是接口?为什么要做接口测试?接口测试应该从测试的哪个阶段开始执行?怎么样才算完成一个接口的测试?
一、什么是接口?
方法与方法之间、模块与模块之间、系统与系统之间、服务于服务之间的数据交互,统称为接口
二、为什么要做接口测试?
- 可以让测试更早的参与到项目测试工作中
- 可以更早的发现一些程序内部的缺陷
- 可以发现很多被前端限制提交参数所引发的内部缺陷
- 检查系统处理异常的能力
- 检查系统的安全性、稳定性、可靠性
三、接口测试应该从项目工作的哪个阶段开始执行?
应该从后端服务建立完成后,形成初步的接口文档后,开始执行;在这个阶段做接口测试,可以有效的预防前端在调用接口的时候,出现数据无效、类型错误、返回值错误等问题
四、怎么样才算完成一个接口测试?
- 接口返回值与预期结果一致
- 接口返回数据类型与断言类型一致
- 接口错误信息返回值,与对应的状态码一致
- 在确定该接口返回的所有数据与预期一致,则该接口测试完成
如何开展接口测试工作
一、 接口文档
接口文档一般是由开发者提供,在项目开发中,前后端的联调需要用到接口文档,当然也有一些公司是没有接口文档的,因为他们的前后端可能是同一个人,当然这是不规范的;在开始接口测试工作之前,我们拿到接口文档后,应该对接口文档做初步测试
- 接口地址是否规范
- 接口类型是否明确(get/post/delete/put)
- 需要请求头的接口是否有写(请求头:user-agent、cookie、content-types)
- 接口参数数据类型、是否必填、固定参数和固定参数的说明
- 返回值数据格式、类型、固定返回字段
- 返回状态码所对应的说明
二、 测试工具
接口测试的工具有很多种,比较常用的有:Fiddler、Jmeter、Postman、Apifox
也可以使用Python、Java等语言代码来实现接口测试:Python的Requests、urllib,Java的 HttpClient、RestTemplate
三、 数据准备
将对应接口中需要提交的数据,保存在如Excel、Text等文件中,分类保存数据的可重复性和唯一性的特质,在调用的时候,可以有效的避免需要唯一性数据的接口,提交重复的数据,导致接口返回值错误
四、 执行测试
使用测试工具/代码,填写对应的测试接口域名和接口地址,提交相关参数,注意文档中接口请求的方式(get/post),是否需要添加headers,并添加结果断言,保证接口数据的正确性
五、 测试报告
在测试报告中,填写:测试时间、测试接口、覆盖率、测试结果、测试人以及对应的测试数据
XXX接口测试报告 |
||||
测试人 |
|
测试时间 |
|
|
接口数量 |
|
覆盖率 |
|
|
测试总结 |
|
|||
编号 |
接口地址 |
请求方式 |
请求参数 |
实际结果 |
001 |
/api/content |
get |
无 |
通过 |
002 |
/api/user |
post |
Id=1234 date=”20210309” |
未通过 |
接口测试用例的规范
命名规范
- 文件命名:与实际被测的接口相关命名,以test开头,下划线分割(test_del_user)
- 类命名:与被测接口相关,以Test开头,驼峰形式命名(TestDelUser)
- 函数命名:与实际被测场景相关,以test卡头,下划线分割(test_del_invalid_user)
- 变量命名:请求参数以data、params 返回值以result、response
代码编写规范
- 格式规范:变量和url路径尽量写在初始化函数set_up中,特定处理函数,需要增加备注信息
- 类备注: # 删除用户
- 函数备注:双引号备注 ” 删除失效的用户”
断言规范
- 必须增加code值的断言
- 断言返回值文本类容尽量参数化
- 必要返回值,必须断言
覆盖规范
- 覆盖多场景
- 覆盖参数缺失
- 覆盖参数异常
- 覆盖缺少用户鉴权信息
- 覆盖越权操作
复用性规范
- 测试结束后,数据归零
- 选择定制用户信息,保证数据重复性
- 保证接口的可重复性、稳定性
接口测试用例的日常维护
异常后的维护
- 首先需要模拟测试一遍,确定接口是否确实存在问题;
- 然后通过测试定位出是接口代码的问题,还是服务器的问题;
- 提交bug单后,持续更进,提交的接口缺陷,不可遗留超过1天
新增后的维护
接口新增后,需要及时增加相应的接口,保证接口测试的完整性
- 确定新增的接口是否与其它接口有关联;
- 通过本地测试通过后,新增接口测试用例,上传到代码仓库;
- 手动构建测试任务验证;
修改后的维护
当接口因业务需要修改后,需要找相应的开发,及时更新对应的接口用例代码,如果接口文档中未及时更新,可要求开发更新文档
- 确定修改后的接口,影响的范围;
- 查看关联接口是否有影响;
- 修改相应的接口,本地重复验证(需要结合前端程序查看实际结果);
- 验证通过后,上传到代码仓库;
- 手动构建测试任务验证;