代码变更风险可视化系统建设与实践

变更是软件系统进化的推动力,同时也是孕育风险的温床。如果一个系统没有了相应的迭代和变更,那这个系统就会逐渐失去了活性和价值。不过,随着系统进行了变更迭代,软件风险也会慢慢衍生,而规避变更引发的软件风险在质量保障领域是一个较大的挑战。通过对下面典型软件系统架构图分析,我们可提炼出3大类变更维度:

在这里,我们先列举了一些比较常见的、因变更风险所引发的典型线上事故:

可以看到,在实际的工作中,由变更所引发的风险,对业务的冲击非常大。结合美团亿级流量的到家业务形态看,系统变更引发风险可能性进一步放大,变更风险的“蝴蝶效应”更加凸显,某个单点问题都有可能给整个到家核心业务带来极大的影响。

所以对研发与测试来说,洞察与规避变更引入的质量风险变得至关重要。

那么,关于变更风险,质量建设核心做功点在哪里?我们对历史线上问题分析发现,系统内部变更引发故障的占比较高,且变更与代码变更有直接或间接关系。因此,我们开始围绕代码变更这个核心变更因子,构建了质量建设的做功点。

随后,我们思考了两个关键问题:

传统测试模式存在两个典型问题:第一,对于研发开发的代码,缺少全面可视化分析能力;第二,对于代码变更所产生的影响范围有多大,实际上更多地依赖研发人员和QA的经验。所以,在这样的传统测试模式的典型问题情况下,我们希望从3个维度做质量保障建设方案:

而代码变更风险的质量保障建设方案最终的落地形态,是打造一个代码可视化分析系统,在到家内部我们将其命名为后羿系统。顾名思义,我们希望该系统能像“后羿射日”一样,在质量风险评估和拦截层面能够做到更加精准,同时提升质量防御能力。该系统架构主要分为四层:

总的来说,对于后羿可视化系统的关键流程,在应用层的透出是通过两个入口进行感知:一是后羿主站;二是工程交付平台。我们通过异步消息感知分析任务和源码下载,获取对应的变更文件、变更方法和变更行号;同时再借助字节码解析能力,解析对应的调用链路变更情况,存储到图数据库里;再对变更代码做特征打标和识别;最后会产生一份可视化分析报告,直接给到对应的QA使用。

当然,在整个建设过程中,我们也遇到了一些技术层面的挑战。

第二个技术难点是海量关系数据存储问题。在建设之初,通过关系型数据库做存储,但随着系统的广泛应用,存储了大量调用链路拓扑关系数据,但它的查询性能非常差。所以在此基础上,我们通过探索引入图数据库的存储方式,解决了在海量数据关系存储数据的查询性能。

因此我们做了整体能力改进,通过开发一套组件化开发框架,将整个开发框架开放给各业务线QA,他们可以自己开发定制化开发组件,加载到后羿系统,完成多样性特征的快速识别能力。

接下来,我们重点给大家介绍系统的实践应用落地情况。如下图所示,该图为后羿质量保障应用场景生态全景图。目前后羿系统整体建设了八个核心应用场景:

首先技术方案缺失项诊断,在项目测试过程中,主要包含以下2个痛点:

基于这样的情况,后羿系统通过对代码的识别,能够真正拿到在本次代码层面上,真正变更了哪些信息,再拉取对应的技术方案做解析,再做关键变更信息项的Diff,从而生成一份技术方案的缺失项诊断报告给到对应的QA,QA可以根据此报告做对应的诊断项卡点拦截,同时做测试用例的完善补充。

第二个应用场景是增强版的CodeReview评审新模式,传统的CodeReview也面临几个痛点问题:

基于这样痛点问题,后羿系统打造了基于变更链路场景驱动CodeReview新模式,核心解决在CodeReview阶段能够更早地感知质量风险。其核心做法是后羿系统在Review一个变更文件时,能够快速提炼出变更文件里对应的变更方法、变更变量以及这些变更方法和变量上都具备哪些风险特征,从而让QA和RD快速抓到变更的重点信息。

在此基础上,我们也提供了变更方法的上下游快速跳转能力,基于Review过程中做变更方法的快速跳转,理解整个业务的上下游关系,同时在跳转过程中,能够将跳转的逻辑点实时绘制成调用拓扑图,感知变更方法之间的业务逻辑关系,更好地从整个链路视角评估本次代码变更的影响情况,很好地解决在CodeReview阶段的痛点问题。

第三个应用场景是变更影响范围评估,目前后羿系统构建了六大变更影响范围评估能力:

影响面评估示例:

基于这样的核心痛点问题,后羿系统重点从三个层面做了关于配置变更风险的核心能力建设:

下图是我们目前所建设的应用功能页面:

第五个应用场景是服务端兼容性的风险诊断。我们通过对线上问题做汇总分析发现,新老兼容性这类典型问题占比较高,我们尝试通过后羿系统解决,QA能够做简单的兼容性问题识别,比如一个接口的入参返回值有明显的字段新增或类型变化会明确判断出来。

但在兼容性问题分析上,有一类不太明显的变化导致了兼容性问题,比如入参层面有一些约束条件、由可选字段变成了必选字段,这类变化实际上在整个代码定义层面很难感知到;另外一类是变更参数是通过内部间接调用VO类直接组装出来的,实际上对于QA也很难感知内部间接VO类变化的兼容性风险影响。

所以后羿系统基于这样的痛点,构建了反射和序列化,从而快速拿到对应的底层变更VO类所导致的对接口影响能力,给出兼容性接口预警,QA根据这样的分析诊断报告,进一步评估对应的兼容性和上线顺序的合理性安排。

第六个是接口级自动化用例推荐,对于到家的复杂业务,我们沉淀的很多自动化用例怎么用,是全量回归还是选择性筛选,也是比较大的痛点问题。因此后羿系统基于所具备的识别变更方法、分析影响链路以及对应的接口能力,打通和到家智能代码覆盖率平台所具备的历史流量覆盖情况,能够快速拿到变更接口和方法,再借助一体化平台,拿到对应的自动化用例,做精准的自动化用例推荐,从而构建了用例推荐整体解决方案。

第七个典型的应用场景是代码质量风险特征预警,我们在质量建设过程中,往往会遇到一类比较特殊的场景需要验证,比如资损类场景,除了验证功能外,还需要对资损做个性化风险功能场景验证、异常场景验证、特殊分页逻辑、重试场景验证,但这些场景在整个代码过程中,我们往往很难发现这些特征风险,从而忘记验证特殊场景情况。

针对这个问题,后羿系统从两个方面构建了特征风险识别功能:一是系统会自己构建通用风险特征识别策略模型,二是各业务方也会自己打造对应的风险特征识别策略。

如下图所示(最下侧),是目前已经具备和未来将要建设的特征识别能力。有了核心识别能力后,我们再将对应的特征在所要验证过程中相应上下游的依赖平台做工具能力整合,对于不同特征构建出相对应具体测试策略的推荐策略,将这几个能力打通后构建出一套基于代码质量风险特征的体系化质量保障方案。

结合具体的实践,以及此前总结的经验。未来,我们将从四个方向做未来质量保障建设:

Q1:单次分析报告耗时是多久?同一个工程代码的报告间是独立的还是有关联的?

A:目前1-2min可产生分析报告。报告是基于迭代任务维度生成的服务级报告,比如一个项目迭代里有5个工程代码变更,那么这5个工程代码变更关系会作为一个整体分析,体现到报告里。

Q2:链路的拓扑关系是怎么实现的?

A:链路的拓扑关系基于AST技术和ASM技术进行分析,同时,结合线上Mtrace链路关系作为补充。

Q3:微服务多模块之间的服务调用链路可识别出关联性吗?如HTTP接口后续调用多RPC服务接口

A:微服务多模块之间的服务调用链路可识别出关联性,比如HTTP的下游会调用了哪些RPC接口,目前具备可识别能力。

Q4:底层方法的调用链非常多,这种有推荐策略吗?DB变更是扫描Mapper吗?

A:目前对于调用链路会进行风险特征打标处理,比如:链路包含资损特征、配置特征等,通过特征风险标签能够更好的让用户感知到链路风险等级,为后续测试策略提供关键信息推荐。目前DB变更是通过扫描Mapper进行识别的,基于Mybatis整体DB开发框架做变更扫描。

Q5:关于用例推荐,是推荐单例接口还是会组合成场景接口?

A:目前是推荐单接口用例,比如这个变更接口关联了10个自动化用例,我们会把这10个自动化用例推荐出来。

Q7:实际应用中,主要收益是什么?

A:主要收益是基于八大应用场景落地应用,所有应用场景都会给质量与效率带来价值收益,比如在兼容性问题上已成功拦截多起兼容性质量问题;在配置变更风险评估上,已成功拦截多起因配置默认值编码错误、线上线下配置不一致问题。

Q8:这套平台是否会对线上服务可用性带来影响?

A:目前这个平台对于线上服务可用性不会造成影响,针对线上环境进行分析时,核心操作是拉取线上对应的部署JAR包,不会对现实服务造成可用性影响。

Q9:这个系统有护城河吗?这个系统收益是什么?对业务有什么帮助吗?在业务上有什么体现吗?

A:说到“护城河”,变更分析底层技术上主要还是基于AST和ASM通用技术,核心是对各种业务代码编写方式的兼容支持、业务场景特征识别精度等维度上有一定的技术挑战。

在业务帮助上,一是八大应用场景能够给整个质量和效率带来提升;二是可提升对业务理解的效率,比如通过接口下游调用链路可视化能力,可很快理解这个业务链路关系。

Q10:链路拓扑过大,怎么解决,不同服务使用语言不同,字节码技术有啥推荐吗?

Q11:可以分析出对上下游服务的影响吗?

A:是的。

Q12:分析代码变更,如何识别有效变更和无效变更?

A:比如变更了一段代码,它有可能没有调用方,我们叫做预埋类代码。类似这种代码在测试过程中很难用业务场景进行验证,而且未来上线后很可能会引入潜在风险,目前通过链路变更分析可有效识别此类预埋代码风险。

Q13:系统使用的阶段都是什么?准入阶段还是准出阶段?

A:目前系统在准入和准出阶段都可以使用,没有做严格限制。

Q14:识别出的问题噪音干扰多吗?

A:从噪音干扰层面讲,我们做了很多提升识别率的策略优化,比如HTTP/RPC接口识别率目前已达到98%以上,噪音干扰可做到很好的控制。

THE END
1.做一单结一单的手机软件下载做一单结一单的手机软件有哪些?网上有不少可以轻松赚钱的手机软件,能够让每一位用户真正赚到钱,而且都是做一单结一单的模式,每天都会有很多赚钱的任务等你来完成,可以让你赚取到大量的零花钱,而且没有任何的限制,感兴趣的朋友快来下载吧! 展开全部 赚钱http://m.doyo.cn/zhuanti/zydjyd/
2.2024年排名靠前的线上兼职一单一结软件以下是6款线上兼职一单一结的软件介绍,包括千行赏金: 一、千行赏金 平台特点: 千行赏金是一款专注于网络兼职任务悬赏的平台,旨在连接广告主和寻求兼职机会的用户。平台提供了丰富的网络兼职任务,用户可以根据自己的兴趣和能力选择合适的任务进行完成。 兼职内容: https://www.jianshu.com/p/302b7dc86e7e
3.线上兼职一单一结(推荐2款在线兼职软件app)线上兼职一单一结?现在年轻人生活成本逐渐增高,压力大,都想通过线上做份兼职来多挣一份收入,你要说想通过线上兼职稳定一天赚两三百元,那无疑很难,需要一定技能,而线下兼职可能能达到,但需要大量时间精力,而且是集中时间段,短期来做,有地区限制,适合想在线下做点短工的人。 https://www.youdianhuo.com/fuye/post/1077.html
4.线上兼职一单一结:今年适合手机线上兼职赚钱的app软件线上兼职一单一结:随着这两年网络的发展,线上兼职越来越多。可能头几年一听到线上兼职我们很多人都是抱着试探的态度去做的,很大一部分人也因此被骗了,小编也是其中一位。这两年线上兼职越来越成熟,监管力度也越来越大,正规的线上兼职软件逐渐上线,想要做线上兼职赚钱的用户可算是看到赚钱的曙光了。 https://www.laojiyu.com/xsjzydyj.html
5.初中生打字接单的app不用花钱2.大鱼装修接单app v3.2.7软件类型:安卓APP 软件页面:https://www.duote.com/android/1088377.html点击下载 软件介绍: 大鱼装修,提供一站式家居日常生活装修服务项目,在这儿小区业主能方便的线上找到出色的装修室内设计师开展装修设计方案,服务平台包括海量装修样板图信息,商城系统提供海量高品质家居商品,有需求的装https://www.duote.com/tech/rjxz/509061.html
6.做任务赚钱一单一结(推荐10个正规做任务赚钱的软件)2、做任务赚钱一单一结的软件:趣闲赚 趣闲赚是一个正规的接单做众包任务赚佣金平台,这是一个已经运营了四五年年的老平台,在平台上面全天都会发布众包任务,也就是帮助商家去完成一些线上的任务,每单的佣金都是3-10元左右。在你接单做众包任务的时候商家也都是会有介绍的,勤快一点接单的话一天也都是可以做30-http://www.17zhuan.net/n/195.html
7.电商工作方案范文(通用14篇)4、借助传统推广方式试点一个区进行推广,提供某一群体的便民服务(有偿或无偿)来归集线下客户资源到线上,通过便民服务和商品活动来吸引客户关注公司电商和手机客户端,增加两个系统的客户点击量和会员注册,从而增加电子商务的附加值,试点成功后再进行其他区的复制。 https://www.ruiwen.com/fangan/5449940.html
8.打字赚钱平台学生一单一结打字赚钱软件app有哪些推荐理由:手机打字赚钱app最新版下载,很多人都知道现在流行手机赚钱,手机打字赚钱app就是其中的一种,主要是通过打字打码来赚取佣金提现,可以来试试哦~ 下载手机打字赚钱一单一结软件下载 2017-08-024.0M v9.0.0.3 安卓版 推荐理由:手机打字赚钱软件是一款安卓平台上十分独特的在线手机赚钱软件,这里有超强福利和https://www.qqtn.com/qqkey/dazizq/
9.接任务赚钱一单一结app行业软件案例定制定制开发拉新app源码项目行业软件源码开发现成案例漫云科技:任务系统开发 拉新推广管理app游戏开发成品开发现成案例漫云科技:任务系统开发 拉新推广管理app游戏开发案例定制定制开发漫云科技:任务系统开发 接任务赚钱一单一结app系统开发公司快速上线现成案例漫云科技:任务系统开发 接单派单系统app行业软件快速上线现成案例漫云https://zhengzhou.11467.com/info/15432694.htm
10.承德高新区公共就业服务进校园线上专场招聘会第一期承德高新区公共就业服务进校园线上专场招聘会第一期 承德市开发区盛方电子有限公司 一、单位简介 我公司主导产品电子衡器,适用于国内有色金属行业。多年来我们始终坚持“诚信为本,技术领先,质量保证,优质服务”的十六字方针,在全体员工的积极努力下,国内设立了多个销售网站,公司在国内电解铝行业所持有电子衡器及相关http://www.cdkfq.gov.cn/news_show.aspx?id=75196
11.4500+资源免费对接:乘风破浪的姐姐直播招商滴滴寻品牌实物一、资源互换 (文字版内容见图表后) 1、【中公考研】可进行商业合作或资源互换: 我需要:线上广告、优惠卷、联合活动、公众号互推,CPS合作等 1.品牌知名度对等、粉丝用户群对等,需年轻化群体; 2.高校资源,大二、大三、大四或在职人有考研意向的群体资源 https://www.niaogebiji.com/article-27383-1.html
12.兼职一单一结软件排行榜前十名偏玩手游盒子分享十大兼职一单一结软件排行榜前十名手机应用,编辑为您推荐手机兼职一单一结软件排行榜第一名到前5名到前十名的应用。找兼职一单一结软件有哪些、兼职一单一结软件哪个好用,上偏玩手游盒子https://m.pianwan.com/s/zj-2531156
13.从速!闵行这个镇的企业要招人澎湃号·政务澎湃新闻1. 协助销售经理维护、推广并开展线上、线下的课程项目; 2. 与全国代理商和相关课程讲师进行协调,规划全年课程; 3. 跟进和关注代理商组织的相关课程;规划与举办上海本部的季度性中级培训课程; 4. 筹划和举办一年一度的MRC案例大赛; 5. 安排课程讲师的行程和差旅,学员用餐,海报、台卡、奖杯、证书等的制作; https://www.thepaper.cn/newsDetail_forward_11434349
14.久远银海:首次公开发行股票招股意向书发行事项公司公告成都市高新区科园一路 3 号 2 幢 首次公开发行股票招股意向书 保荐人(主承销商) 广州市天河北路 183 号大都会广场 43 楼 1-1-1-1 四川久远银海软件股份有限公司 招股意向书 本次发行概况 发行股票类型 人民币普通股(A 股) 本次拟发行 2,000 万股,占发行后总股本的比例 25%。全部为公司公 发行数量https://wap.stockstar.com/detail/JC2015062500000023
15.用户思维的运用,让我们广受老板和业务的好评1.色样BOM单变更历史版本对比 在样衣开发过程中,BOM经常会变的,而且会牵涉到多个部门之间的沟通。很多时候到下一个部门,一个流程到下一个部门的时候,他不知道上一个部门改了什么,甚至到管理层去审批的时候也不知道变了哪些东西。 信息部门就思考,能否让系统做记录员,记录下每个部门的修改足迹? https://www.fanruan.com/cases/view?cid=210
16.梦中初探域渗透流程本文主要站在一个萌新的角度,通过在梦中构建虚拟的渗透场景,结合<<内网安全攻防渗透测试指南>>一书内容,记录下常规域渗透的流程和过程中遇到的问题,以及自己的一些思考。 0x1 初始环境 梦中的主人公小七已经通过一个小手段获得了一个机器的system控制权限,接下来将从0开始从第一人称的角度记录下小七的渗透思https://xz.aliyun.com/t/8656
17.终于大橘已定,分享一波测开面经(美团小米华为阿里等)14、MySQL单列去重?MySQL连接两个select?(说了内连接,面试官说不对) 15、阿里云服务器开放端口原理?阿里云服务器的操作系统用的哪个? 16、Linux基本命令:查询端口,grep,grep区分大小写? 17、Postman参数化了解吗? 18、springboot底层是servlet吗? 19、如何测试一个系统? https://maimai.cn/article/detail?fid=1652271040&efid=ZdpASznoV9ImxTSn1bYWPw
18.学生赚钱平台一单一结,盘点7个适合学生党赚钱的靠谱软件学生赚钱软件如果你不知道如何筛选,也不用担心,小编为你整理了一些适合学生赚钱的软件,都是小编亲自测试的,真正可靠的赚钱软件。只要你有一部智能手机,你就可以不用其他投资就能赚钱。 第一款,高省app,各大应用商店下载使用,注册登录邀请码887766,高省是一款综合优惠劵导购平台,在高省可领取各大网购平台的内部优惠劵https://wsa.jianshu.io/p/e9a916d59bfb
19.奇妙三数字趋势分析系统V10使用教程(一)奇妙软件技术站在软件中不是二阶导数为0的那一点 它只是表示在趋势线和移动平均线上,走向发生变化的一个点。(具体参见软件中"遗漏分析"模块) 移动均线: 蓝色移动均线设置为5期,绿色移动均线设置为10期,粉色移动均线设置为20期,它随步长设置的期数长短变化而变化。将每个蓝色5期移动均线点用蓝色线串联,就组成整条的蓝色5期移https://www.qimiaozhan.com/jishu/caozuo/457.html
20.打字赚钱一单一结的软件都有哪些2024打字赚钱软件最新排行榜打字赚钱软件可以让用户通过打字来获取收益,非常适合一些在家人员,小编今天为大家带来了打字赚钱软件排行榜,里面都是非常好用的软件,而且还支持一单一结,心动的朋友快去下载吧!http://www.sjwyx.com/phbang/dzzqrjphb/