《3-PPT版《代码变更风险可视化系统建设与实践》刘桂来.pdf》由会员分享,可在线阅读,更多相关《3-PPT版《代码变更风险可视化系统建设与实践》刘桂来.pdf(30页珍藏版)》请在三个皮匠报告上搜索。
1、代码变更风险可视化系统建设与实践美团到家事业群自我介绍刘桂来,2019年加入美团在服务端质量保障体系建设上持续深耕与探索,当前主要负责履约业务质量保障建设工作,在代码变更风险分析、自动化测试、测试效能提升方面有丰富实战经验。目录(一)软件系统风险与变更(二)代码变更风险可视化(后羿)系统建设(三)代码变更风险可视化(后羿)系统实践(四)未来规划与展望(一)软件系统风险与变更软件系统风险与变更运营商网络变更基础硬件变更操作系统变更用户流量变更政策法规变更第三方组件变更第三方服务变更用户需求变更机房集群变更开发语言变更服务功能变更系统配置变更系统重构变更算法模型变更性能调优变更系统服务变更迭代流程
2、变更线上发布变更架构升级变更技术人员变更系统内部变更外部变更基础设施变更云服务容器变更变更是软件系统进化的推动力,也是孕育风险的温床!典型软件系统典型软件系统变更风险引发的典型线上事故外部变更代码变更代码变更配置变更人为变更到家业务形态加剧变更风险蝴蝶效应AA服务BB服务Service-F履约系统CC服务DD服务Service-G分单系统运力接入运力筛选Service-J运力系统X工程Y算法Service-H询价系统结算服务A结算服务BService-K结算系统结算服务A结算服务BService-B结算系统交易服务A交易服务BService-D交易系统活动配置活动运营Service-C活动系统
3、骑手终端用户终端用户终端商家终端商家终端业务平台履约平台美团内部业务Service-n服务2Service-N其他系统骑手终端业务多业务接入多参与方配合微服务架构超长业务链超复杂调用链配置强依赖用户商家骑手业务配置中心降级配置平台灰度配置平台算法配置平台美团外部业务变更风险的质量建设做功点系统内部变更引发故障占比较高,且与代码变更有直接或间接关系。问题一:代码变更风险是否可以被可视化感知?问题二:能否建立代码变更风险的质量保障体系?rpcinterface任务多线程Var变量事务链路分页类方法Xml配置文件DB库表消息httpinterface代码特征树举例Code(二)代码变更风险可视化(后
4、羿)系统建设代码变更风险的质量保障建设思路传传统统测测试试模模式式典型问题一:对代码变更缺少全面可视化能力变更了哪些特征?变更了哪些链路?典型问题二:影响范围评估更多依赖RD/QA经验过大:无效、重复过小:漏测、资损不清楚:盲测、低效代码验证变更与实现一致性业务Code CR需求文档技术方案测试用例变更实现变更来源(一)代码变更感知(一)代码变更感知 代码分析技术选型 支持代码不同存在形态 支持java多类型工程模式(二)代码特征刻画(二)代码特征刻画 支持基本特征(类.)业务特征刻画(接口.)调用链路分析(跨服务.)(三)应用场景生态圈(三)应用场景生态圈 变更影响面评估 风险特征预警与拦截
5、 配置变更风险预警 到家质量效能部打造的变更风险可视化系统,旨在全方位提升变更风险感知与拦截能力,赋能质效提升代码变更风险的质量保障整体方案基础组件层图数据库ES存储MYSQLASM库JavaParser库业务应用层长期赋能OpenApiOpenApi层层智能化已落地建设中长期规划特征刻画层代码分析层静态字节码分析抽象语法树分析动态链路分析定制化规则分析Jar包分析rpc服务分析web服务分析跨服务链路分析多module类型AI技术(代码克隆、检索)单module类型多线程特征分页类特征中间件特征DB类特征代码特征化标注代码结构化标注类结构化标注链路结构化标注接口结构化标注消息结构化标准测试提
6、效加强版codediff影响面评估影响接口评估方法链路跨服务链路测试方案推荐功能测试方案风险库智能挖掘用例/流量智能化推荐测试策略智能化推荐风险特征智能化识别代码分析能力输出代码结构化信息输出代码特征信息输出可视化应用场景输出到家BG美团公司测试行业异常类特征资损类特征算法类特征消息类特征配置链路专项测试方案技术方案缺失项诊断接口项缺失配置项缺失任务项缺失消息项缺失配置变更风险诊断一致性校准测试覆盖默认值校准影响接口用例精准推荐接口级用例方法级推荐服务级推荐迭代级推荐后羿可视化系统的关键流程代码特征特征标注结果后羿主站入口服务可视化分析入口(人工触发)FSD平台组件化接入自动触发分析代码可视化
7、(后羿)系统关键处理流程任务消息processer源码下载feature分支master分支获取变更方法获取变更文件获取变更行号变更方法快照字节码解析特征标注可视化分析报告异步消息队列方法/接口链路调度任务/特征部署服务包解析属性解析链路特征识别项目风险评估项目风险评估MysqlGraph DBES后羿系统建设技术难点(一)-代码分析技术代码分析技术AST+ASM 双轮驱动(当前)AST单发动机(初期)AST+ASM+DLA 三驾马车(长期)抽象语法树(AST)字节码解析(ASM)动态链路分析(DLA)主流识别技术框架对变更代码识别效率高技术落地门槛较低AST技术优势Lambda表达式问题ja
8、va泛型问题AST典型问题丰富的jvm指令集方法调用链识别率高java内部类识别率高解决lambda、泛型识别ASM技术优势Java反射特性无法支持技术门槛较高ASM典型问题代码运行时识别支持java反射特性DLA技术优势获取全部流量难度较大工程落地难点较大DLA典型问题后羿系统建设技术难点(二)-海量关系数据存储关系型数据库存储(初期)亿级海量存储问题(性能问题)图(graph)数据库+MySQL(解决方案)MYSQL:调度任务与特征类型图数据库:拓扑关系与属性方法调用链路拓扑关系查询性能极差快速迭代、应用范围小后羿系统建设技术难点(三)-代码风险特征多样性组件化开发框架类方法变量接口任务多
9、线程分页资损配置DB补偿redo限流个性特征个性特征类型多代码写法个性化特征规则强业务属性基础特征通用特征个性特征后羿开发者后羿系统开发每个个性化特征低效沟通、人力紧张、开发耗时大各业务线QA需求加载定制化开发特征识别组件后羿系统(三)代码变更风险可视化(后羿)系统实践后羿质量保障应用场景生态全景图质量保障质量保障应用场景应用场景(生态圈)(生态圈)开放OpenAPI技术方案校准诊断增强版CR评审变更影响面评估配置变更风险诊断兼容性风险诊断接口级用例推荐代码特征风险预警解决技术方案缺失关键变更项质量风险解决纯文本评审模式的低效与缺少场景级评审的质量风险重点解决代码变更影响评估基本靠人为经验的质
10、量风险解决代码配置变更带来的质量风险重点解决代码接口声明变更相关质量风险预警通过用例精准推荐,提升影响接口的测试效率重点识别代码风险特征,提供特征风险的提前预警代码分析能力输出,赋能其他工具平台后羿质量保障应用场景(一)-技术方案缺失项诊断测试关键依赖输入撰写标准化低更新及时性差关键测试场景漏评估风险接口接口变更缺失配置项配置项变更缺失异步消息异步消息变更缺失定时任务定时任务变更缺失DBDB表字段表字段变更缺失技术方案wikiRD撰写编写加载后羿系统识别后羿报告接口消息配置任务DB解析方案wiki代码变更关键项校准技术方案缺失诊断报告输出测试用例补充QA需求文档诊断缺失项确认拦截卡点后羿质量保
11、障应用场景(二)-增强版CR评审新模式评审新模式聚焦编码规范与架构设计、QA参与感不足无法快速跳转到变更方法上下游方法内(全文搜索)纯文本逐行CR模式业务场景变更风险感知弱方法跳转无法实时记录CR节奏被打乱,效率低传统传统CRCR四大痛点四大痛点打破传统纯文本CR模式,建立以变更链路场景驱动CR的新方法,真正解决在CR阶段感知质量风险的能力后羿质量保障应用场景(三)-变更影响范围评估六大变更影响范围评估能力跨端服务影响跨端调用链路、跨端服务接口跨端消息、跨端定时任务通用风险特征DB表、DB字段、SQL语句多线程、事务、兼容性分页、异常、递归、限流代码基本属性代码行、分支逻辑类、变量、方法、工程
12、文件工程服务类型单module工程、多module工程RPC服务、http服务、jar包定制化风险特征算法特征、权限、配置重试、消息补偿、推送消息单服务影响方法调用链路、接口特征、消息特征、任务特征后羿质量保障应用场景(三)-影响面评估典型例子后羿质量保障应用场景(四)-配置变更风险诊断线下&线上配置不一致配置默认值编码错误配置变更影响范围不准确配置测试覆盖情况不可见后羿质量保障应用场景(五)-服务端兼容性风险诊断服务A(旧)服务A(升级)服务B(旧)服务B(升级)线上测试兼容性风险服务A(旧)服务A(升级)服务B(升级)服务B(旧)顺序发布引发兼容(先提供方,后使用方)并行发布引发兼容(提供
13、方+使用方)接口声明变更(开发分支)返回值增加入参顺序入参增加入参减少入参约束返回值约束入参类型返回值类型间接引用VO类N间接引用VO类1成员变量VO类1参数VO类返回值VO类间接引用VO类N+1间接引用VO类2成员变量VO类2反射序列化入参/返回VO类接口声明变更差异性diff反射序列化线上入参/返回值VO类递归影响因子兼容性测试兼容性测试+上线顺序评估上线顺序评估引发场景引发场景接口兼容性预警确认风险后羿质量保障应用场景(六)-接口级自动化用例推荐全量用例回归是否效率低?重大技术重构回归哪些用例?RD自测保障用例覆盖全吗?基础组件升级选哪些用例?自动化用例量自动化用例典型四大痛点识别变更方
14、法分析影响链路分析影响接口变更接口+变更方法智能代码覆盖率平台一体化自动化平台input:iface+methodreturn:命中查询条件的流量TraceID列表基于历史流量覆盖,持续构建索引获取自动化用例测试计划input:流量TraceID列表return:命中查询条件的自动化用例测试计划基于历史运行的自动化用例流量,持续构建自动化用例推荐结果代码变更用例推荐整体解决方案后羿质量保障应用场景(七)-代码质量风险特征预警这次改动影响了资损?没感知到呢这次改动还涉及重试场景验证?没感知到啊这次改动涉及到分页功能了吗?忘记验证了这次改动涉及新增接口调用,忘了验证返回异常场景了!mock工具资损
15、特征集群化特征rpc调用特征随机数特征重试特征限流特征金额单位特征限额控制特征算法特征监控特征消息补偿特征代码质量风险特征解决方案定制化特征插件化组件(SDK)后羿系统core分析服务业务B风险特征识别策略模型业务A风险特征识别策略模型业务C风险特征识别策略模型业务D风险特征识别策略模型通用风险特征识别策略模型权限认证特征消息推送配置特征数据库SQL特征精度转换特征线程安全特征主从延迟特征异常特征分页特征多线程认证事务特征DB表/字段资金安全平台消息管理平台资金风险防控平台限流平台配置平台算法平台异常测试平台工具赋能异常特征测试策略推荐分页特征测试策略推荐配置特征测试策略推荐资损特征测试策略推
16、荐事务特征测试策略推荐策略赋能后羿质量保障应用场景(八)-开放OpenApi赋能分支信息类获取分支代码获取有报告分支链路拓扑类检索方法下游链路检索链路树形结构检索链路上下方法方法信息类获取分析方法检索方法详情批量获取分析方法后羿系统四后羿系统四大开放大开放APIAPI能力项能力项报告信息类获取报告代码变更获取分析报告列表获取报告方法变更自主工程交付系统智能代码覆盖率接口管理平台一体化自动化平台全息系统异常测试平台当前已开放支持的工具平台(四)未来规划与展望未来规划与展望04开源&共享&赋能开源系统代码分析能力、赋能测试领域01代码分析技术增强02风险特征识别技术基于LLM的风险特征分析及测试策略推荐03丰富应用场景生态圈探索更多质量保证落地应用场景生态未来规划与展望动态链路分析技术(DLA)提升分析准确性03Q&A更多技术干货欢迎关注“美团技术团队”招聘:质效建设&业务测试岗位邮箱:加入我们,一起用技术驱动质量与效能变革