【章节】
业务现状
门店重构类型、难点、常用提效手段
不同类型重构测试方案
3.1.前后端均重构,业务不变案例
3.2.前后端均重构,业务变化案例
总结
1.业务现状
为了支撑门店业务快速扩张迅速响应业务诉求,前期系统层面并没有很完善的架构设计以及相关领域模型规划,3年来全国线下门店已增长到几百家,随着业务快速增长,系统层面的很多问题就逐渐显现出来了,例如:(1)门店侧早期由于当时角色比较少,功能比较少,所以很多角色类在代码中写死的;随着系统角色的增多,功能的增多;想要在系统中新增角色时需要将涉及到权限相关的代码中都进行更改,测试还需要进行全量测试,研发成本越来越高,交付周期也越来长;(2)相同的功能点,在很多个业务场景中都有,但是实现方式不统一,没有全局规划,系统中有多少该功能点很难知道,系统维护越来越难;(3)门店早期业务指标和数据量比较少,对于系统实现以及性能的要求不高,但是后期数据量大的时候,一些查询功能,查询时就会很慢,用户体验越来越差;2.门店重构类型、难点、常用提效手段
' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
通过以上提效手段明显缩短测试周期,实现项目快速交付。
3.不同类型重构测试方案
针对不同类型的重构,QA如何快速支持?在测试方案上如何设计与实施呢?下面举两个例子详细介绍一下。3.1.前后端均重构,业务不变案例
(1)前端查询筛选条件重构,用固定时间维度 取代 随机时间维度(2)库表结构重构,用更多时间维度数据 取代 天维度数据,用更多管理维度取代 单店员维度(1)查询结果数据正确性,与原有查询条件一致时,查询结果一致(1)该系统主要是以查询为主,查询比较多,但是更改数据库的场景比较少(2)如果按照需求上线的方式进行手动测试,测试的时间比较长- 接口case1:主要是新老查询条件变更的接口,这一部分接口需要将新的查询条件 与 老的查询条件 一一对应,然后批量生成case;
备注:遍历生成case主要根据查询条件,对查询条件中的每一项值进行遍历;- 接口case2:主要是新老查询条件未变更的接口,这一部分接口新老查询条件不变,用已有的接口case即可;
- 接口case3:线上已有的请求数据进行多维度的回归,做到case的查漏补缺;
备注:线上请求的入参,主要是通过运维在ng中获取;①根据不同的case场景,创建不同的批量接口比对任务,进行执行②执行成功后,通过查看结果确定case是否比对成功,比对成功,则不需要排查问题,比对失败则需要进一步排查问题所在③执行失败后,修改完代码后,进行“重新执行”快速回归- 整体效果
通过批量生成case、批量diff、快速回归的方式
RD侧:自测过程中,节省人力 2人日;
QA侧:原需求测试时间共计15人日,节省人力8人日;
大大缩短了整个项目的交付周期。
3.2.前后端均重构,业务变化案例
(1)任务系统包括后台、熊店长APP,且后台与APP的耦合性不高,采取分批提测,分批测试,减少项目整体周期 ①冒烟阶段提前diff代码,梳理不同任务类型在创建任务的实现方式②创建任务完成后,通过日志查询是否在预期时间内发送且消费了延时mq①已有业务流程的任务,提前梳理触发任务状态流转的节点' fill='%23FFFFFF'%3E%3Crect x='249' y='126' width='1' height='1'%3E%3C/rect%3E%3C/g%3E%3C/g%3E%3C/svg%3E)
- 整体效果
通过提前diff代码,梳理新业务流程、梳理兼容已有业务流程、分批提测的方式
QA侧:老业务流程测试需要10人日,节省人力3人日;
整体上线时间缩短3~4天。
4.总结
以上通过两个具体的重构场景进行说明,下面总结概括如下:
了解需求,确定是哪一种类型的重构需求
了解技术实现,明确技术实现方式以及改动范围
明确需要整理的case,包括功能测试和接口测试case
明确测试方式,批量接口diff、流量回放、手工测试等
明确兼容老数据时,过程中数据处理方式
兼容老数据时,明确上线后是否需要进行灰度策略
兼容老数据时,明确线上流量是否需要新老结果比对,不一致时报警机制