【业务基建】众安研发管理一体化解决方案大揭秘
2020/12/04作者:众安科技 刘星辰
第十五届 GOPS 全球运维大会于2020年11月27日-28日在上海召开。全球运维大会是国内第一个运维行业大会,面向互联网及传统行业、广大运维技术人员,传播先进技术思想和理念,分享业内最佳实践。众安技术专家刘星辰受邀出席会议并发表了关于众安《基于CI/CD流水线的内建质量工具体系建设》的演讲。小编身赴一线,为大家带来热乎的演讲实录。
演讲实录:
本次分享主要围绕着众安如何基于CI/CD流水线打造质量工具体系,并服务于业务的实践。
01什么是CI/CD流水线
DevOps领域的CI/CD流水线源自工业生产中的“流水装配线”,流水线作业方式能够高效协同开发、测试、运维等多个角色,他们只需专注于各自的工作节点,使自身达到最高的工作效率,从而提升整个研发交付流程的效率。
流水线从CI持续构建、CD持续部署到最终的线上发布,每个阶段都有相应的开发、测试、部署活动,流水线能够通过串行、并行、顺序编排的方式灵活控制每次执行的操作集。
02为什么需要内建质量体系
首先,我们来看一个场景,在发布过程中,从测试环境、预发布环境、到最后的生产环境,测试人员在这个过程中确实在配合着开发做每个环境的测试,但由于环境部署和自动化测试工具没有任何关联,发布过程无法感知自动化测试执行的情况,仅靠人为的沟通是没有任何保障的,导致测试脚本还没跑完,发布已经完成了,回归范围无法保障,自动化测试又有何意义?因此,没有内建质量流水线,带来开发与自动化测试过程脱节,交付过程中的质量控制就形同虚设。
另外,据gitlab 公开的一份调研报告显示,项目如果出现延期交付,测试是造成延期的主要原因,且远高于其他交付阶段。这个结果表明,在DevOps实践中,测试依然是持续交付中最大的效率瓶颈,如何在这个过程中用好自动化测试,就成了缓解瓶颈的重要手段,一个高效的内建质量工具的流水线体系,变得尤为重要。
03如何建立高效内建质量工具集成体系
上图是众安DevOps体系的全景描述,流水线层包括项目管理、开发管理、CI/CD流水线、测试工具集成,底层是容器云基础设施,包括服务管理、集群管理、镜像管理,以及监控和安全,这两层形成了众安自动化运维体系的核心。
对于流水线和质量工具集成来说,关键的活动包括持续构建阶段的代码编译、静态打包、人工卡点,持续部署阶段的多环境部署、测试卡点。卡点配置是最关键的一环,通过卡点的配置决定了在流水线的什么阶段触发什么样的工具做什么样的执行,这也是内建的关键所在。
目前在众安内部,这套体系纳管了1万台以上的主机、7万个以上的容器,支持2000人在线协同,截止到上个月,今年发布次数也已经超过10万次,业务系统稳定性达到了99.99%。
从宏观体系到落地层面的工具,从研发协作平台(TM2.0)、上线发布平台(Ship)到质量保障(质量中台),众安打造了端到端的工具体系。
首先,我们从质量工具角度,来谈一谈高效工具产品的设计原则。
1.工具平台化。为了能够让测试人员以比较少的代码量快速编写和执行用例,平台需要能够统一提供用例的在线编辑、管理、调度、鉴权,且提供云端执行机集中执行用例,支持数据持久化,免去搭建本地执行环境。
2.用例编排可视化。用例结构能够以结点树形展示,用例编辑能够表格化,用例测试报告能够定制化报表。
3.执行方式多样化。工具可实现线上和线下双端执行,执行操作支持定时任务执行、失败重跑、CI集成自动化执行等。
4.二次开发能力。平台需考虑如何提供二次开发的能力,提供通用框架、通用API、插件化架构,赋能到用户基于业务场景自研通用方法和关键字,代码以制品形式上传平台即可使用,将灵活性交还给用户。
遵循以上原则,众安打造了一套质量中台体系,包括接口测试工具(ZAPT)、UI测试工具(ZBOT)、性能测试工具(ZPTP)、代码质量工具(ZACC):
ZAPT接口测试工具
一键自动解析报文节点
清晰、简洁、可视化的用例编写界面
丰富、可定制的测试报告
ZBOT UI测试工具
模块化项目管理界面
关键字驱动的用例编写界面
自动化调度云端浏览器执行
ZPTP性能测试平台
在线编写和执行jmeter脚本
在线申请基于测试计划的压测机资源
动态生成可视化压测趋势报告
ZACC代码质量平台
基于发布项目的代码分支质量扫描
然后,我们再聊下质量工具所承载的质量体系,我们将质量体系分成四个维度:质量活动、工具体系、最佳实践、度量反馈。
对于质量活动而言,这不仅仅是测试人员的单一行为,像单元测试覆盖率、代码规范、接口测试、UI测试、性能测试等,这些都需要各角色人员协同,在项目上进行落地。
对于最佳实践而言,工具怎么用得好,用得规范,是需要一套最佳实践给到各个业务团队做指导。比如说用例编写规范约束、命名等。近期,众安内部也在落地BVT这种实践,在开发环境部署和提测的中间去做一次验证,确保核心应用的核心接口在开发阶段被执行并验证通过,才可放行提测。
对于度量反馈而言,如何定义、采集、清洗、统计、显示测试过程数据,并与CI/CD形成一体化数据链路,是关键所在。很多公司也有自己的数据度量方案,但是存在数据链路不完整、未对数据做二次定义计算的问题,并不能真正发挥数据的价值,实现自上而下的度量。
最后,我们要说的是质量内建的关键所在,质量卡点。所谓质量卡点是将质量活动内嵌到CI/CD流程中,实现一些关键环节的门禁,从而保障线上的业务交付安全、可靠,且经过了完备的测试验证。
卡点体现在工具上大概具有几个能力:第一,每个阶段配置哪些卡点由用户定义。第二,卡点配合阈值决定流水线节点是否通过。
开发阶段,可以嵌入代码静态扫描、代码漏洞扫描、BVT测试、功能测试覆盖率等质量活动。
测试阶段,可内嵌接口测试、UI测试、功能测试覆盖率、性能测试等质量活动。
发布上线系统灵活的流水线卡点配置
04内建质量工具体系带来的效果
自动化使用数据大幅提升
自动化测试代码覆盖率显著提升
————————
原创文章,作者:刘星辰,内容编辑:郝俊伟
版权归众安所有