接口自动化规范
1. 提测评审流程
需求阶段
- 研发:需求澄清和串讲,WBS 计划制定
- 测开:测开参与需求澄清,制定自动化测试方案,将自动化开发纳入 WBS 计划,与研发进度对齐
设计阶段
- 研发:接口定义,提供详细接口文档,接口文档上系统
- 测开:底层方法实现,接口封装
开发阶段
- 研发:业务开发,前后端联调
- 测开:按照用例开发脚本,脚本联调
测试阶段
- 研发:自动化提测,冒烟通过率 >= 95% 方可进入测试,其他测试范围包括安装部署、自动化无法覆盖的提测用例
- 测开:在测试环境上执行自动化(所有可用脚本);自动化漏测分析(功能测试发现的 bug),查漏补缺;异常脚本每周分析(连续 5 天失败的脚本)
关于接口变更
- 上系统之后的接口信息变更需提前一周邮件同步测开,测开给出脚本修复计划,若没有提前告知,持续集成失败责任一律由研发承担
- 接口频繁变更将计入脚本重构数量
- 外部依赖的模块,项目经理在取大版本时需执行一遍对应自动化脚本,存在接口变更提前告知并给出详细变更信息
关于 Bug
- 缺陷管理平台提单,缺陷单简要描述中标注【自动化】,自动化发现选择「是」,提交版本为当前最新提测版本
- 调试阶段发现 bug 也要提单,比如接口异常类,接口信息不一致等
- 产品测试最后一轮,持续集成非严重影响功能的自动化问题建议延后提交
- 自动化发现的缺陷不计入版本提测修复率统计,但会计入最终发布的缺陷指标统计
- 研发需在 3 日内修复 bug,无法修复的请给出原因
其他
- 建议提测与持续集成流水分开,避免持续集成结果异常
- 持续集成每周需有脚本上架
- 开发若长期没有代码更新(至少一周一次),测试将暂停该项目脚本输出
2. 自动化开发规范
编码
- 不能有魔鬼数字
XX1,变量名不能随意命名 - 无效打印信息要去掉,
print xxx - 以兼容 python2/3 的方式编码,以防后期切换时大量返工
- 代码编写需要符合 PEP8 编码规范,PyCharm 中有波浪线的地方需要进行修改
- 方法、形参加注释,主要实现什么功能需要有注释说明
- 方法一些固定参数尽量使用类变量,不要用传参方式,方法定义
__init__中 - 对于语句的多层嵌套, 一般不允许超过两层, 超过两层不利于代码的阅读
- 唯一字符串(角色名、用户名等)使用随机值函数
get_random_string生成,减少清理失败可能对其他用例的影响 - 捕捉异常的时候,使用具体的异常,而不是用一个单纯的
except:xxx,否则连SystemExit和KeyboardInterrupt也会被捕捉到 try语句包含的东西越少越好- 对象类型的比较应该使用
isinstance()而不是直接比较 - 对于序列 (字符串,列表,元组),可以利用空序列为
false - 布尔值不要用==和 is 来比较,直接用 if is_true:..
框架
- 自动化框架的
data层不允许包含复杂的业务逻辑,编写业务流程中用到的数据模板即可 - 自动化框架的
api层多用于处理接口的封装, 复用性较强的方法也可以封装在该层,api层可以依赖于data和base层,禁止依赖于scripts Scripts层是用例层,主要编写用例的验证,封装的该层的用例方法不允许相互调用,这样容易导致用例执行异常
脚本
setup方法都要有对应的tear_down方法- 可复用的对设备、人员等操作,
suite的setup添加,多用例共用提高效率,同时tear_down需有清理操作,避免对其他用例干扰,例如:人员、设备添加后删除;参数修改后恢复默认; - 根据环境变化的变量不能写死,比如当前登录的用户信息,要通过接口获取用户信息
- 真实设备操作,例如:数据下发,云台控制,需校验设备中数据,可使用横向库方法
- 自动化脚本不允许直接操作数据库,不能删除的数据,就留在系统中,但要保证其他用例不使用该数据或者不能对其他用例产生影响
- 增、删、改专用用例,需要充分验证效果
- 人员/设备添加用例:人员/设备添加,接口返回成功后,需用其他接口(例如:分页查询接口)查询添加成功,并校验关键字段信息,如人员姓名、编号(设备 IP、端口、名称)等
- 人员/设备删除用例:人员/设备删除,接口返回成功后,需用其他接口(例如:分页查询接口)校验删除成功
- 依赖于数据的用例,必须先新增数据,再使用该数据验证用例,不推荐使用系统中已经存在的数据
- 脚本验证不管成功与否,通过接口删除对产生的数据进行删除, 无法删除的除外
- 接口验证需要对前端展示的所有字段都要验证
- 频率较高的长耗时操作,例如:部分设备添加后等待上线耗时较长,可用循环查询判断的方式(非睡眠
sleep等待) - 对于一些异常操作的用例,比如:停止 DP 服务,这种用例归到一类并打上特殊标签,后期统一跑,优先级降低
Robot framework里的脚本编号格式,示例:01系统管理–>01登录–>01_01_01_正常登录->01_01_02_错误密码登录
自动化文本用例
- 用例中需包含验证结果的 sql 语句
- 接口传参的一些主要参数在用例中体现
- 自动化用例是按照 wetest 里自动化为是,脚本编号有值,且能找到对应的一条脚本,才会被执行,所以一条功能用例必须只能对应一条脚本用例
- 如果一条功能用例,自动化只能覆盖一半,那就将用例拆成两条,把能自动化的用例自动化标记为是,不能实现就标记为否,最终文本用例只有一个版本
- 部分特殊用例(如隔天验证效果用例),采用修改服务器时间等特殊方法,需确认服务器是否需要重启,若耗时过长,用例可以加标签,根据需要使用标签筛选用例测试
- 测试用例名称需要体现测试点
本博客所有文章除特别声明外,均采用 CC-BY-SA-3.0 许可协议。转载请注明来源 张小剩的博客!
