《4-热部署测试框架(Flytest)-蚂蚁集团-周明新(晗越).pdf》由会员分享,可在线阅读,更多相关《4-热部署测试框架(Flytest)-蚂蚁集团-周明新(晗越).pdf(17页珍藏版)》请在三个皮匠报告上搜索。
1、秒级CI测试框架周明新目 录CONTENTS蚂蚁中的SOFAServerlessSOFAServerless质量工程SOFAServerless质量现状秒级CI测试框架01020304蚂蚁中的SOFAServerless1.0SOFAServerless是一套追求更快部署、弹性伸缩的架构方案。让开发者更低成本实现隔离部署、秒级发布,弹性伸缩。应用拆分基座模块A模块BJava进程模块:承载业务逻辑,快速迭代,热部署基座:沉淀可复用能力,稳定基座仓库模块A仓库模块B仓库部署模块:代码仓库拆分管理在SOFAServerless中,我主要工作聚焦在模块质量上SOFAServerless中的模块1.1通
2、用模型驱动框架频率控制通用下游数据源安全服务基座模块A农村服务入口好友互动喂食结算农场游戏业务流量模块B游戏服务入口交易服务公益类游戏业务流量研发过程解藕模块与基座之间的研发活动完全独立,互不干扰极速研发模块非常轻量,构建到发布上线30s,极大提高研发效率业务隔离通过不同的集群可实现物理隔离、通过不同的场景复原我可以实现流量隔离模块为何要做质量工程建设2.0业内很少有人去谈代码片段(模块)如何做集测(spring用例),这似乎是一个自相矛盾的命题,serverless为了部署速度将代码进行”拆”,集测为了集成度将代码进行”合”,模块作为代码片段,同样存在“拆与合”的矛盾。那为何模块偏偏要走集测
3、这条路,与业内其它faas服务有何不同,不做又会影响什么?模块虽为代码片段,但是与应用从结构上并无两样模块无论承载流量还是代码量都接近应用,与传统的serverless单一服务流量完全不同模块需求变更,对质量同学是灾难性的,需要更底层的集测能力模块目前的质量保障手段2.1本地mock测试接口测试手工测试模块质量体系端到端验证,投入人力较大,存在风险敞口面向模块只能构建本地mokc测试,测试验证不充分,测试风险被右移,成本转给端到端业务吐槽质量太薄,需要风险左移攻坚阶段,质量作为重点战役跟进当前体系下面临的问题?模块质量解决方案探索四时期3.0业内通用解决方案自研测试框架1.0 mock时期2.
4、0 平台调试工具时期3.0 集成测试框架时期聚焦于本地模块自身,无法启动的外部依赖采用mock方式来规避通过端到端验证对外暴露的接口和服务自研模块维度的集成测试框架优点:缺点:简单,无任何外部依赖模块强依赖基座,自我启动进行测试意义不大无法验证模块与基座的交互,例如模块调用基座的jvm服务,并且很多模块 本地已无法启动优点:缺点:简单,成本低模块代码量膨胀后,端到端上的链路无法全覆盖代码逻辑无法支持mock更精细化验证优点:缺点:集成度高,能充分验证基座与模块的交互上手成本极高并且资金等应用本地无法启动难以推广用例调试耗时高,需要启动基座、安装模块4.0Flytest时期优点:缺点:上手快,不
5、需要学习成本用例调试快,即改即生效,10秒左右完成一个用例执行与serverless相辅相成,能解决目前模块用户所有诉求需要人力投入基建建设,例如CI流水线、运行时CI采集利用联调环境来执行用例就是我们的新思路模块质量自研3.03.1用例执行依赖注入应用启动分析测试框架核心流程自研方案开始测试解析TestNg.xml实例化测试类(TestNg切入点)用例执行(原生)结束测试依赖注入利用spring-test spi重新注入模块springContext使用模块SpringContext完成依赖注入集测框架拉取模块基座编译基座通过FatJar启动基座编译模块通过FatJar安装模块使用TestC
6、lassloader重新实例化测试类启动阶段依赖注入阶段基于TestNg自研测试框架3.0测试框架落地3.2收益成本用户上手成本高用户理解成本高测试调试耗时高落地困难,仅5个用户模块集测解决方案链路改造少,复用现有CI链路成本大于收益,何去何从?模块质量自研4.04.0开始测试组装测试参数通过socket调用IDEA插件用例执行结束测试更新测试状态IDEA测试插件组装测试参数找到合适的测试框架将测试参数传给测试框架植入测试listneersocket serverIDEA执行测试用例全流程开始测试测试失败测试成功结