精彩推荐
文丨中国光大银行信息科技部
蒋晓君 龚荣荣 田渊文
在“敏捷、科技、生态”等战略的共同驱动下,光大银行金融科技建设实现了跨越式发展。在此过程中,为高效支持以敏捷为目标的科技战略转型,推动测试左移,光大银行对非功能测试输出能力建设进行了深入探索与实践,以进一步保障软件质量和运维安全,赋能软件开发,助力业务发展。
当前,非功能特性作为产品评价的重要因素,一旦未能实现高质量交付,往往会产生灾难性后果。为此,光大银行组建了独立的非功能测试团队,专门负责对应用系统新建和重大变更进行标准化、全覆盖的测试验证。实践中,非功能测试作为投产前极为重要的验收环节,通常会发现若干个严重程度不一的非功能缺陷,而缺陷定位和修复均需消耗较多的时间和人力资源。为改变这一局面,光大银行着力探索实现非功能测试能力输出的可行方法,以期从根本上改变传统非功能测试的工作模式,形成覆盖全流程解决方案和技术能力的服务化封装,赋能开发、运维工作,有力推动测试左移。
一、非功能测试输出能力建设思路
现阶段,金融科技创新推动了业务需求的爆发式增长,同时也带来了大量的非功能测试需求。尤其是微服务、分布式、人工智能等技术的引入,不仅推动了服务创新和敏捷实施,也使得系统复杂度和集群规模迅速增大,而留给非功能测试的时间窗口却越来越小,传统依据瀑布式开发模型设计的独立非功能测试环节及实施方案已难以适应新的变化。同时,科技建设对于非功能测试的诉求也更加多元化,其不仅体现在支持环节、业务覆盖和数据产出等愈发多样化,也包括需要对单一目标进行更有针对性的专项测试。
面对上述挑战,仅仅依靠专业团队已难以独立支撑银行业务对非功能测试的需求,商业银行急需通过输出能力建设,为需求、开发、运维等各个环节进行测试赋能,从而在保证交付效率的同时持续提升软件质量。换言之,即基于长期积累的标准规范、测试工具链与测试资产,持续打造测试团队的核心价值,为非功能测试能力输出奠定坚实的基础。
具体而言,通过对非功能测试生命周期的各环节进行识别,建立成熟的技术标准和管理过程,有助于指导各个非功能测试需求的落地执行,进而为搭建策略、流程统一的测试管控平台提供标准化规范支撑。同时,借助完整的测试工具链,可有效降低非专业人员的操作门槛,并基于技术手段确保标准规范在实施中高效落地。其中,所谓完整是指测试工具链应至少覆盖测试脚本开发、测试执行(性能/可靠性/可扩展性)等非功能特性的自动化测试工具,以及仿真平台(挡板)与监控诊断工具等。此外,基于非功能特性在各领域建设场景案例库,可以进一步明确测试方法、指标预期等属性,更好地指导测试实施,而且,在测试脚本、后端系统仿真配置等环节也可以按照业务系统、通信协议等维度的最新基线进行资产管理,以提升工作效率,支持外部赋能。
二、非功能测试输出能力实施策略
总体而言,输出能力建设是指在统筹非功能测试标准、工具和资产的基础上,将测试的核心价值输出到需求、开发、运维等领域并实现高效赋能,其间不仅需要对技术构建和工作模式进行整体变革,还需要形成一揽子解决方案和组织级输出能力,并最终转向服务化支持。
在实施层面,首先是以全面解耦专业技能为目标,重构技术能力体系,并在实施流程的各个技术环节中最大限度地解耦专业技术能力,以实现无障碍赋能输出。其次是在技术设计环节遵循以下共性原则:一是实现高度自动化、服务化,并通过测试技术能力封装,实现开箱即用;二是支持分布式处理机制,实现按需水平扩展;三是可灵活提供对外扩展的接口(包括但不限于新的测试协议),并能够满足新技术测试以及其他个性化定制需求;四是对被测系统尽量保持无侵入、低资源消耗,避免影响测试效果;五是具备大数据处理能力,可支持海量测试数据的精细化处理,以及能够对技术资产数据进行提取分析。
除此之外,还包括推动工作模式由验收测试转向服务化支持,即是指在建立良好的技术输出能力的基础上,按高内聚、低耦合原则,对非功能测试全流程各环节进行服务化拆分。特别是针对日渐多样化和常态化的非功能测试诉求,可以通过全部或部分环节的服务支持和专业评审,在确保测试有效、投产安全的前提下,充分发挥需求方对应用系统架构及测试诉求深度掌握的优势,支持需求方自主推进。
三、光大银行非功能测试
输出能力建设实践
基于上述思路,光大银行在充分解耦人工依赖的前提下,通过对非功能测试全流程进行技术能力封装,实现了测试方案服务、基础服务和实施服务等三大类“微服务”,并由专业的非功能测试人员负责提供专项服务支持,开展了非功能测试输出能力建设。其中,一系列内化封装了技术能力和标准的技术平台、管理平台和测试资产库形成了底层支撑;专项服务小组在大量、集中的实践中,熟练掌握了各细分服务领域的专业支撑能力,并通过规范与评审严格把控标准,有效保障了测试产出质量。此外,通过协调组合不同的“微服务”集合,高效实现了灵活赋能与服务支持。光大银行非功能测试输出能力建设路径如图1所示。
图1 光大银行非功能测试输出能力建设路径
1.性能/可靠性/可扩展性测试实践
在技术实现上,性能、可靠性、可扩展性测试都与应用系统业务压力模拟强相关。对此,通过对前述三类“微服务”进行抽取、组合,光大银行构建了“测试脚本自动生成-自动压测(性能、可靠性、可扩展性)-仿真模拟-实时监控-性能诊断-在线调试”的技术能力闭环(如图2所示),实现了服务能力的快速输出,满足了全面提升实施效能的测试要求。
图2 光大银行非功能测试技术能力闭环
(1)测试脚本自动生成/复用
基于敏捷脚本开发和资产复用机制,光大银行形成了多层次的能力输出方案库,旨在为有非功能测试诉求的需求方(以下简称“需求方”)提供支持。首先,专业测试团队基于执行平台开放接口进行测试协议扩展,覆盖了银行主流的测试协议,并建立了脚本速成模板和语法规范自动检查功能,使得需求方可以借助平台快速完成脚本开发。同时,需求方还可以借助脚本自动生成测试能力,通过关键字段识别提取、自动提取配置项、报文格式定制等,封装脚本调试技术要素的主要功能,用于在输入交易报文后自动产生测试脚本。此外,光大银行还实现了执行平台的脚本开发工具与行内配置管理平台“码云”的对接,可在被测系统版本更新时,同步维护脚本并实时上传,随时为需求方提供可复用的最新基线。
(2)无人值守的“自动压测+故障编排”解决方案
在模拟压力持续增大时,通常要求精准控制交易量及虚拟用户占比,否则会导致基于该业务模型的容量获取过程失去对照基准,这一过程不仅包含了繁琐的计算和校对工作,也是与业务模型强相关的测试场景想要实现自动化实施的难点所在,围绕这一核心问题,光大银行逐层设计落地了无人值守的“自动压测+故障编排”解决方案(如图3所示)。
图3 光大银行无人值守的“自动压测+故障编排”解决方案
基于上述设计,需求方可将生产压力/业务评估形成的业务场景直接导入转化为测试场景,且无需人工计算和配置;此后,需求方还可运用测试指标偏离报警、工具主控/压力机问题报警、自动检测测试结果与预期模型的符合度等功能,迅速掌握测试动态,并使用多元相关性分析技术,分析测试模型在动态变化中相互影响和制约的变量及性质,调配并发用户与间隔时间,进而实现TPS处理能力、并发用户按预期占比精准增长,从而使需求方具备自动获取性能容量拐点的能力,且无需人工干预或值守。截至目前,光大银行的执行平台已具备基于私有云资源的弹性扩展能力,能够模拟的最大压力达到20万笔/秒,并可根据预期压力自动规划和调度压力机资源;同时,需求方还可以通过执行平台的开放接口接入脚本/工具,进行故障模拟编排,在可靠性测试执行中实现无人值守和自动回归。
(3)仿真平台扩展机制与自监控能力建设
针对后端系统的仿真模拟功能,光大银行建立了仿真配置大集市以支持主流通信协议的应答模拟,并可供需求方灵活地调用、复用。在此基础上,光大银行还建立了分布式扩展机制,使需求方无需额外操作即可按需扩展仿真端压力支持,避免后端仿真成为测试瓶颈。同时,基于精细化的自监控能力建设(包括性能指标、错误日志、告警机制),光大银行实现了被测系统输出状态信息实时提示与偏离报警功能,可支持缺陷问题的快速发现与定位问题,具体建设内容如图4所示。
图4 光大银行自监控能力建设示意
(4)应用性能诊断能力建设
在执行平台的推进实施过程中,需求方可基于性能曲线直接进行交易维度的下钻诊断,并调用应用性能诊断工具,深入代码级进行根因分析,进而实现CPU定位、内存分析、线程概览以及方法调用耗时跟踪等功能。此外,应用性能诊断工具还支持在线调试以及压力期间的在线跟踪等功能,并具备问题现场触发告警、现场捕获和实时分析内存/线程DUMP等能力,从而可解耦专家依赖,赋能一线开发测试人员具备一定的问题诊断优化能力。
(5)基础资源与数据库监控平台建设
通过深入概括总结非功能测试实施中对基础资源、数据库监控诊断的诉求,光大银行建设了支持业内主流操作系统、中间件和数据库,并同时具有轻量化、实时性强、可视化程度高等特点的监控平台,需求方只需在测试实施启动前执行一次性配置,即可获取便捷的监控服务。
2.可维护性/可移植性/可用性测试实践
在非功能测试领域,可维护性、可移植性、可用性测试通常更关注被测系统的运维安全。对此,光大银行根据开发、运维规范和事件经验积累,沉淀形成了覆盖各技术领域的场景案例库,并通过从非功能特性、测试内容、属性、测试方法、预期指标、适用变更范围、风控点说明等多个维度进行定义和描述,使得需求方可根据测试变更内容及应用系统架构特征,在场景案例库中自行筛选获取需覆盖的案例集合,并指导测试实施。同时,对于可自动化实现的测试案例,光大银行通过开发特定脚本,并将其纳入相关技术平台供需求方调用,进一步降低了测试技术门槛,提升了工作效能。
展望未来,伴随着非功能测试输出能力建设的逐渐成熟,银行端到端的研发过程及运维各环节也将具备主动、迅速产生海量非功能测试数据样本的能力,从而更好地满足各类测试需求。在此基础上,通过综合运用机器学习、数据挖掘等AI技术和算法,银行还可不断优化非功能测试技术资产循环,并从其中提取案例经验进行问题发掘与趋势分析,最终形成主动、可持续的测试服务能力。
本文刊于《中国金融电脑》2022年第08期
联系我们
投稿 | 电话
010-51915111-816
010-51915111-821
投稿 | 邮箱
fcc@fcc.com.cn
市场 |合作
010-51915111-813
010-51915111-812