由于多个域共建情况比较多,一方面应用随业务发展在不断扩展,各个应用代码复杂度会不断增加,如何准确、全面判定代码修改影响范围会越来越重要,另一方面共建过程中如果不能准确预估出各域共同改动所带来的影响面,就会存在测试遗漏;如果各域信息不对称可能会存在一方改动另外一方无感知,导致评估不到位带来一些影响。基于以上背景商家域引入精准测试平台实践,可以帮助QA扫描出每个版本开发改动的接口范围,并且可以有效地提高测试的覆盖率和可靠性。
基于第二季度在商家地址专项上探索实践了精准测试并取得了一定的收益;第三季度扩大规模化实践,因此根据商家核心业务需要,选择了核心的 4 个应用,并沉淀了持续几个迭代的过程和结果数据。以下是几个迭代下来使用精准测试平台的一些实践数据和心得。
提测之后,冒烟之前:
一轮测试完成之前:
精准测试的贡献度,引入前后的差异
协助我们补充测试场景和用例,合并代码或人工评估不精准导致,避免漏测。
实例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) 生成方法调用链后进行精准推荐。版本迭代中生成“各应用的方法调用链”、“全域接口调用链”,(“差异分析器”+“推荐引擎”)根据“变更代码”提取“变更接口”和“影响接口”,进而推荐相关用例(自动化+功能用例+资损用例),结合精准度量呈现迭代版本的测试质量,具体如下:
在第三季度通过虚拟小组的方式合作推进精准测试专项工作,在每个版本中跟进各自熟悉模块的几个核心服务应用,对一些独立项目也有一些实践,独立项目中以需求维度对每个改动的应用都做精准测试推荐,期间主要包括测试左移自动化 Case 以及跟进存量自动化失败原因,对应用存量接口自动化 Case 补充提高应用自动化的覆盖率,尽量保证到每次改动的老接口推荐出来的接口都能自动化覆盖,帮助到老接口回归节省测试回归时间成本;
存在多个域共建的情况下,这个时候也能够帮助精准推荐出测试范围。精准测试可以有效地提高测试的覆盖率和可靠性,可以帮助测试人员发现潜在的问题,避免多域共建的情况下信息偏差导致漏测接口,推荐出开发改动未评估到的影响接口;
在整个第三季度过程中,每个版本通过对多个应用的推荐使用,有推荐 100% 的数据,中间也有一些平台待优化的问题,数据持续收集中,以最新迭代数据为例,平均精准率为 80+%,第三季度截止目前:多个应用、几个迭代、多位同学以虚拟小组形式共投入 6d+ 初步取得结果如下:输出精准测试流程交互图,拦截缺陷,推荐出未评估到的改动接口,左移自动化 Case,自动创建左移计划并自动执行:提效 0.5-1h (每人每迭代);过程中有一些特殊 Case 的情况,比如有一个独立项目新增及修改接口均未正常推荐出来,也需要平台后续调整精准推荐的策略。
通过在第三季度的实践中发现的一些问题平台也积极配合改进,相信后续在平台支持的基础上做需求维度的精准测试推荐,更多应用使用精准测试平台,每个迭代以需求维度推进会更高效精准的分析,以逐步达到最佳的测试效果和维护成本;通过每个版本迭代不断地使用收集数据发现一些影响精准率的问题,对精准平台系统进行再次的优化和改进,以提高精准测试平台的精准率,同时修复已经发现的问题和缺陷;当精准率提高到一定水准,能够为以后的测试工作提供依据和借鉴。
*文/Jeremy
本文属得物技术原创,更多精彩文章请看:得物技术官网
未经得物技术许可严禁转载,否则依法追究法律责任!