1.接口功能及异常组合情况
https://testerhome.com/topics/7260 这篇文章来看,已经很复杂了,是否需要设计成如此复杂的方式。接口测试过程中例如一个输入参数字段值为 0 到 10 的范围,那接口测试时需要组合的就有 0、10、9、-1、” 0”、11、””、null 等接口测试用例组合,那么,是否需要全部考虑到,各大公司做的接口自动化框架,满足了哪些业务场景,做到哪种程度?
2.host 切换。
测试用例的执行的环境配置,例如可能在公司内存在测试环境、线上环境、运营环境 (配置各种运营需求或数据需求)
(1) 开发需求比较多时,例如,接口需要先在测试和运营环境配置 host,并且接口开发、测试通过,然后部署到线上环境,需要保证 host 切换 (在接口未上线前)。
(2) 灵活配置 host,验证某些模块或功能回归正常。
3.关于公共模块的设计 (登录请求或者多请求下的接口设计)。
(1) 公共模块设计会有类似登录请求,使用登录请求响应中的 token 作为下一个请求的入参再进行请求,然后验证请求回来的响应的正确性。多接口请求方式,层次最好能深入几层?或者说如何能更加灵活的进行多接口配置等。
(2) 公共模块可能还涉及到对每个接口是否 200,返回的 json 的公共结构是否正常;还有一些加密算法、md5 校验,json 结构中 result 字段的格式结构、字段 key 的公共校验。
(3) 每个接口请求的 log 记录、请求时间记录、测试结果记录等。
4.关于入参数据或数据准备设计思路 (如何更方便)。
根据https://testerhome.com/topics/4773 中介绍的数据管理策略,分为 databasefile 注解的属性 -- 作用域的设计方式,分为 method 和 class 的作用范围。测试思路类似 appium 编写脚本时的 setUp 和 tearDown,在 setUp 中定义好作用域的范围,然后在执行脚本时如果是 method 方式的,只有这个测试方法内可以使用;如果是 class 作用域,其实就相当于这个 suite 或 class 类可以使用这些数据。
(1) 思路很不错,可以使用 testng 带的注解作用域方式来实现和使用。
(2) 对于数据来源思路,可以从数据库中保存然后取出,根据场景业务,制定测试数据场景是否可行?测试中的 post 数据会修改服务端的状态,在每次测试之前,是否可以编写一个 shell 脚本,先去执行服务端创建的测试数据删除操作 (根据测试账号,测试分类等进行相应删除)?希望各位大神给点提示,和思路。
5.接口相应校验 (数据库校验、只校验字段格式)。
(1) 接口公共模块校验 (上边所说的公共模块设计)。
(2) 对于较长的 json 格式,可以将请求接口 request、响应的 response 对应关系保存到数据库中,在接口自动化测试时根据请求接口,查询对应 response 是否正确,这种校验方式类似 rest-assured 中的 json schema 校验方式,可以根据场景进行定义。
最好的方式是从数据库取出数据,进行字段校验。但问题也有:如果自动化执行时连接的是线上数据库,是否会影响线上,那么我自己 copy 一份线上数据库是否可行,而且还涉及到测试过程中要和开发的数据库保持一致等问题。这块的问题不太了解,希望大神们指点一二,谢谢。