商业银行在测试转型中的持续集成实践

本文节选自《金融电子化》2018年8月刊

作者:中国光大银行信息科技部 史新丽

编者按

本文重点阐述光大银行信息科技部在持续集成平台方面的建设以及应用实践。

行业现状:传统的银行科技研发流程在项目管理、质量管理方面已达到一定成熟度,但随着市场竞争越演越烈,新产品、新业务快速上线的要求越来越紧迫,传统软件交付模式的转型迫在眉睫。越来越多的金融机构科技部门在研究尝试快速交付的研发测试模式并建设相应的开发平台支撑,以解决传统软件开发和快速上线之间的矛盾。但对于传统银行IT这头“大象”,软件开发模式转型必然不能一蹴而就,在转型过程中,会遇到各种各样的问题。因此,研究一套新时期研发效率提升的整体方案,并建设相关平台系统促使其落地实施,变得极为重要。通过全流程交付通道的整体建立来实现研发流程的自动化,提高各环节的执行效率,将缺陷尽早在最佳阶段被发现和修复。

问题与挑战

如何适应新的发展,适应快节奏的业务上线需求,在实际研发测试过程中,面临很多问题与挑战。如:业务系统繁多,每天每个系统都会有代码提交,出包时间长;每个业务系统的发版步骤不同,复杂度高,耗时长;每一次发版会涉及众多环境,重复劳动多;欠缺对于基本代码规范的检查;手工测试效率低;测试数据的制作链条长,复杂度较高;每个需求的实际提交物(代码、制品)从开发、测试到交付链路自动化水平较低;每日工作产出物的数量和质量的可视化程度较弱。

基于以上共性问题,科技部门急需从管理上转变思路,从技术上寻求突破,打通全流程的交付链路,提高自动化测试水平,提升整体研发测试效能。

目标

我行自2016年开始规划和建设以持续集成、持续交付为主要理论基础,结合科技部门研发测试规范,构建开发、测试、交付一体化的持续集成平台,从传统手工到流水线工厂试运行,实现代码“零”库存。结合CI(Continuous Integration)效能评价模型为改进方向,全面提升研发测试效能,形成一站式的交付平台。该平台最终需要实现的目标是构建自动化流水线,打通研发测试到运维全流程,支持典型交付场景,提供可视化展示和评价模型为组织级提供决策支持。具体可以分为以下三个阶段目标。

一是实现自动化。自动化是持续交付的基础,没有自动化就无法达到持续交付。自动化也是效率提升的最快捷手段,最能直接体现价值。需要在配置、代码、测试、交付等多个环节做好自动化才能让持续集成平台发挥作用。

二是实现标准化。对于大型软件组织,标准化是组织级推进持续集成有效落地的必备手段。只有实现了标准化,平台才具备了较强的通用性,能够在推广应用过程中事半功倍。按照研发团队所处的不同阶段和掌握的能力成熟度级别来推荐适合的交付过程和管理规范。

三是实现定制化。定制化是对平台的更高要求,不同团队、不同技能水平对工具自然就有不同的需求。由于历史项目众多,涉及的研发模式、理念、技术栈多有不同。在标准化接入使得流程得以基本运转的同时,通过定制化手段、基于插件式的理念在各个环节提供特性封装,能够让平台更加灵活多样,适应性更强,落地实施的效果更佳。

根据上述三个目标,持续集成平台将各研发团队的工具、经验加以重构、融合,打造一站式的平台,使得之前无法分享和复用的资产有机组合,提供灵活化的配管模式、多样化的测试工具、统一化的集成调度,将开发测试交付的整条链路打通,在一个平台内实现基于价值的交付。

方案

本行持续集成方案的主导思想是以应用生命周期为视角,以需求为主线,集成各类专业工具,通过自动化流水线方式,固化软件交付规范和工艺,加速软件交付的效率和质量,实现软件交付端到端的全要素管理。基于以上主导思想,平台提供构建流水线、代码托管、自动化测试三大功能,服务于系统的开发测试生命周期中的各个生产活动,为各个环节提供多样化的工具支撑,提升各环节工作效率。平台采用集群式的部署架构,满足大规模的并发构建,提供配置管理、单测集成、自动化测试、发布管理等功能模块,将编译、扫描等操作放在云端执行。

1.构建流水线。根据本行现有的研发模式,对于大部分月度需求,都需要进行编译、扫描、部署到测试环境,再进行各种测试。主要实现功能如下:以分支为维度,提供编译—扫描—部署—自动化测试的流水线,可视化展示每一个需求的测试情况,实现代码“0”库存。一个典型的主干开发工作流水线示意如下图所示。

图 主干开发工作流水线示意图

开发人员根据需求/任务在本地进行开发,当代码提交后,主干工作链路实时获取代码变更消息,触发主干的工作流执行;工作流通过高速分布式的云编译,对多种主流语言(C、C++、JAVA、C#等)实现了自动化编译全覆盖,支持ant、maven、gradle等多种框架。按规范自动生成发布目录,将构建产物按规则存放在成本库/镜像库对应的目录上;随即工作流触发代码扫描功能,在代码层面对接多种代码诊断工具,提前发现漏洞。本行采用主流开源工具,如findbugs、cppcheck、sonar等实现对多种语言的扫描;对于自动化水平较高的项目,在流程中整合插件式的自动化测试工件,满足对于单元测试、接口测试、UI测试等测试的需要;对于计划上线的需求,在投产前进行需求的分拣,代码合并到预投产分支,再利用自动化手段生成预投产包的进入验证测试阶段。

目前全行已有89个系统接入持续集成平台,实时对代码进行编译扫描部署,有力地支持了持续性工程方面的操作,对及时发现问题,解决问题提供了必要的技术支撑。

2.自动化测试。持续集成平台支持多种自动化测试种类,提供多样化可扩展的自动化测试服务。用户可以通过统一入口访问共享测试资产和测试服务,在任何时间都可以随时获取云端资源运行,也可以加入CI流水线中自动触发运行。

本行自研的接口自动化工具功能主要包括后端管理台功能、服务调度、报文适配、通讯适配等功能。以我行最常用的sop、XML、8583报文和WTC、http协议为主,具备通用性强、扩展性强、脚本解耦的特性,已在多个系统中广泛使用。

3.能力度量指标。为更好地推广持续集成在项目中的使用,宣贯持续集成理念,使得工具能够和日常工作紧密结合,平台提供一套能力度量指标模型。通过数据可视化清晰地展示日常使用情况,为组织级管理提供有力的指导依据。度量指标主要包括是否每天提交代码;是否每天自动化编译;是否能及时解决编译问题;是否能及时解决“阻断问题”;是否保证总体问题数不增长等。并将指标的完成情况纳入到能力评价模型中,最终得到较为客观的分值。

结束语

综上所述,持续集成平台在提升银行科技开发过程的适应能力和核心竞争力,推动研发测试管理向科学化、智能化方向转型;同时把传统的手工操作(编译、部署、测试等)转化为自动化执行,大大节约了成本,提升了效率。在资源约束常态化的今天,平衡了质量、效率、成本之间的关系。通过精细化的分层自动化管理,提高自动化测试的覆盖广度和深度,并达到精准覆盖,既保障了测试质量,又加快了交付速度,有效提升银行科技整体效能。

《金融电子化》新媒体部:主任 / 邝源 编辑 / 潘婧

  • 发表于:
  • 原文链接:https://kuaibao.qq.com/s/20180919B0RD8200?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区