一、背景介绍
由于多个域共建情况比较多,一方面应用随业务发展在不断扩展,各个应用代码复杂度会不断增加,如何准确、全面判定代码修改影响范围会越来越重要,另一方面共建过程中如果不能准确预估出各域共同改动所带来的影响面,就会存在测试遗漏;如果各域信息不对称可能会存在一方改动另外一方无感知,导致评估不到位带来一些影响。基于以上背景商家域引入精准测试平台实践,可以帮助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/ 每人每迭代。
增量预览
通过增量对比,无需重新拉取新老代码对比确认改动,可直接拉取分析对比,更加直观确认代码改动点,确认影响范围是否回归,提高人效。
实践过程数据
527版本迭代: 接口变更数:15+;测试左移接口数6+;平台推荐结果数:11+;精准比例:73%左右。
526版本迭代: 接口变更数:90+;测试左移接口数10+;平台推荐结果数:73+;精准比例:81%左右。
525版本迭代: 接口变更数:40+;测试左移接口数30+;平台推荐结果数:25+;精准比例:63%左右。
524版本迭代: 接口变更数:22+;测试左移接口数8+;平台推荐结果数:11+;精准比例:72%左右。
四、精准测试平台简介
实现方案简介
精准测试平台主要是基于抽象语法树 (AST) 生成方法调用链后进行精准推荐。版本迭代中生成"各应用的方法调用链"、"全域接口调用链",("差异分析器"+"推荐引擎")根据"变更代码"提取"变更接口"和"影响接口",进而推荐相关用例(自动化+功能用例+资损用例),结合精准度量呈现迭代版本的测试质量,具体如下:
- 代码分析器-链路分析器: 根据最新提交生成方法调用链,标记出 Http、Dubbo、Grpc 等接口的入口实现类的具体方法,并记录接口相关属性信息,存入知识;
- 接口调用链提取器: 打通 Trace2.0 提取上个迭代的接口调用链,存入知识库;
- 代码分析器-差异分析器: 根据 Code Diff(最新提交 - 线上提交),从 Code Diff 中提取变更的方法,结合知识库推出变更接口,变更接口结合方法调用链,定位到影响接口;
- 推荐引擎: (变更接口 + 影响接口) + 自动化用例 + 功能用例接口知识库 => 自动化用例 + 功能用例;
- 精准度量: 结合代码覆盖率平台、自动化平台、用例平台等度量测试质量。
五、实践经验总结
总结
在第三季度通过虚拟小组的方式合作推进精准测试专项工作,在每个版本中跟进各自熟悉模块的几个核心服务应用,对一些独立项目也有一些实践,独立项目中以需求维度对每个改动的应用都做精准测试推荐,期间主要包括测试左移自动化 Case 以及跟进存量自动化失败原因,对应用存量接口自动化 Case 补充提高应用自动化的覆盖率,尽量保证到每次改动的老接口推荐出来的接口都能自动化覆盖,帮助到老接口回归节省测试回归时间成本;
存在多个域共建的情况下,这个时候也能够帮助精准推荐出测试范围。精准测试可以有效地提高测试的覆盖率和可靠性,可以帮助测试人员发现潜在的问题,避免多域共建的情况下信息偏差导致漏测接口,推荐出开发改动未评估到的影响接口;
在整个第三季度过程中,每个版本通过对多个应用的推荐使用,有推荐 100% 的数据,中间也有一些平台待优化的问题,数据持续收集中,以最新迭代数据为例,平均精准率为 80+%,第三季度截止目前:多个应用、几个迭代、多位同学以虚拟小组形式共投入 6d+ 初步取得结果如下:输出精准测试流程交互图,拦截缺陷,推荐出未评估到的改动接口,左移自动化 Case,自动创建左移计划并自动执行:提效 0.5-1h (每人每迭代);过程中有一些特殊 Case 的情况,比如有一个独立项目新增及修改接口均未正常推荐出来,也需要平台后续调整精准推荐的策略。
后续规划展望
通过在第三季度的实践中发现的一些问题平台也积极配合改进,相信后续在平台支持的基础上做需求维度的精准测试推荐,更多应用使用精准测试平台,每个迭代以需求维度推进会更高效精准的分析,以逐步达到最佳的测试效果和维护成本;通过每个版本迭代不断地使用收集数据发现一些影响精准率的问题,对精准平台系统进行再次的优化和改进,以提高精准测试平台的精准率,同时修复已经发现的问题和缺陷;当精准率提高到一定水准,能够为以后的测试工作提供依据和借鉴。
*文/Jeremy
本文属得物技术原创,更多精彩文章请看:[得物技术官网]
未经得物技术许可严禁转载,否则依法追究法律责任!