一、背景介绍
由于多个域共建情况比较多,一方面应用随业务发展在不断扩展,各个应用代码复杂度会不断增加,如何准确、全面判定代码修改影响范围会越来越重要,另一方面共建过程中如果不能准确预估出各域共同改动所带来的影响面,就会存在测试遗漏;如果各域信息不对称可能会存在一方改动另外一方无感知,导致评估不到位带来一些影响。基于以上背景商家域引入精准测试平台实践,可以帮助QA扫描出每个版本开发改动的接口范围,并且可以有效地提高测试的覆盖率和可靠性。
基于第二季度在商家地址专项上探索实践了精准测试并取得了一定的收益;第三季度扩大规模化实践,因此根据商家核心业务需要,选择了核心的 4 个应用,并沉淀了持续几个迭代的过程和结果数据。以下是几个迭代下来使用精准测试平台的一些实践数据和心得。
二、商家域精准测试实践测试流程图
测试流程图
图片
精准测试实施计划
精准测试应用节点
提测之后,冒烟之前:
- 根据测分文档改动的服务,去拉取确认改动范围;
- 跟开发确认改动接口是否合理,给测试明确测试范围;
- 确认平台的精准度;
- 确认需要补充自动化的清单;
一轮测试完成之前:
- 针对改动接口的自动化进行执行,通过率达到100%;
- 确认改动服务覆盖率75%。
精准测试的贡献度,引入前后的差异
- 确认改动接口范围,明确测试范围;
- 新增未完成自动化的改动接口,精准获取改动接口自动化执行结果;
- 提高服务和需求维度的代码。
三、商家迭代数据
正向收益
丰富用例
协助我们补充测试场景和用例,合并代码或人工评估不精准导致,避免漏测。
实例1:迭代中通过推荐的接口发现有影响某一个接口,技术方案未体现有改动,改动一行代码,改动接口有过滤审核单逻辑,需要加入回归场景,推荐出 1 个未评估到接口,其余推荐出正常新增及修改接口。
影响面:过滤被风控的审核单,需回归场景,确认是否正常过滤审核单,跳转正常无审核单,技术方案无该接口改动记录。
收益:确认影响面,保证了部分未评估到的场景被覆盖倒,避免可能引起线上问题。
图片
而平台推荐出技术方案范围外的一个接口:
图片
后经确认,确实有修改:
图片
- 平台精准率
- 精准率:a/(b+c) *100% (a: 平台推荐出的变更接口数;b: 新增接口数,c: 变更的老接口数);
- 平台目前精准率:以最新迭代 528 数据为例,接口变动数 18+,推荐 15+,平均精准率为:80% 左右;
- 以下为 526 版本 Groot 服务,接口变动 15+,平台推荐 15+ 全部成功推荐,精准率为 100%;
- 平台推荐接口清单,总共 10+ 个,其中包含处理存量数据的后门接口 5+ 个。
图片
图片
综上,从平台推荐和开发实际的接口变更来看,当前某个服务平台推荐精准率是 100%,帮助 QA 精准确认接口改动数量,精准定位测试范围。
- 丰富自动化 Case
包含新增的 Dubbo/Http 接口、老的 Dubbo/Http 接口都推荐出来,针对改动的接口已完成自动化 Case、执行自动化更精确;未完成的自动化可针对性进行左移、对比技术方案查缺补漏;左移自动化 Case数:50+ 个。
发现问题
拦截 2 个有效问题:分别归属为其他部门。多个域参与仓库的代码开发,在多个域共建情况下,无法准确预估各域改动带来的影响范围,通过精准推荐能够涉及影响的范围,聚焦在改动接口的自动化结果分析,节省环境及其他 Case 影响时间,触发自动化工程回归老功能,使问题提前暴露。
- 提前感知:提测后,通过平台推荐出的改动接口,触发相关自动化,提前拦截迁移代码引入的一个问题,降低后续风险。
图片
- 协助测试:526 版本提测后,平台推荐出改动接口,推荐出自动化 Case,发现一个新需求代码合并后影响当前已有功能,及时做了修复。避免问题在后置阶段发现,提前降低风险。
提升效率
自动创建计划执行-提效点 :提效 0.5-1h/ 每人每迭代,增量代码预览、分析更便捷,节省 0.1-0.5h/ 每人每迭代。
增量预览
通过增量对比,无需重新拉取新老代码对比确认改动,可直接拉取分析对比,更加直观确认代码改动点,确认影响范围是否回归,提高人效。
图片
实践过程数据
526版本迭代:接口变更数:90+;测试左移接口数10+;平台推荐结果数:73+;精准比例:81%左右。
525版本迭代:接口变更数:40+;测试左移接口数30+;平台推荐结果数:25+;精准比例:63%左右。
524版本迭代:接口变更数:22+;测试左移接口数8+;平台推荐结果数:11+;精准比例:72%左右。
四、精准测试平台简介
图片
实现方案简介
- 代码分析器-链路分析器:根据最新提交生成方法调用链,标记出 Http、Dubbo、Grpc 等接口的入口实现类的具体方法,并记录接口相关属性信息,存入知识;
- 接口调用链提取器:打通 Trace2.0 提取上个迭代的接口调用链,存入知识库;
- 代码分析器-差异分析器:根据 Code Diff(最新提交 - 线上提交),从 Code Diff 中提取变更的方法,结合知识库推出变更接口,变更接口结合方法调用链,定位到影响接口;
- 推荐引擎:(变更接口 + 影响接口) + 自动化用例 + 功能用例接口知识库 => 自动化用例 + 功能用例;
- 精准度量:结合代码覆盖率平台、自动化平台、用例平台等度量测试质量。
五、实践经验总结
总结
存在多个域共建的情况下,这个时候也能够帮助精准推荐出测试范围。精准测试可以有效地提高测试的覆盖率和可靠性,可以帮助测试人员发现潜在的问题,避免多域共建的情况下信息偏差导致漏测接口,推荐出开发改动未评估到的影响接口;
在整个第三季度过程中,每个版本通过对多个应用的推荐使用,有推荐 100% 的数据,中间也有一些平台待优化的问题,数据持续收集中,以最新迭代数据为例,平均精准率为 80+%,第三季度截止目前:多个应用、几个迭代、多位同学以虚拟小组形式共投入 6d+ 初步取得结果如下:输出精准测试流程交互图,拦截缺陷,推荐出未评估到的改动接口,左移自动化 Case,自动创建左移计划并自动执行:提效 0.5-1h (每人每迭代);过程中有一些特殊 Case 的情况,比如有一个独立项目新增及修改接口均未正常推荐出来,也需要平台后续调整精准推荐的策略。