作者 中国民生银行信息科技部
刘晨东 陈绍英 罗健 李月鹏 李锋 宋双
目前,传统的商业银行正面临着来自互联网企业的强力挑战,其基本特征是海量获客和产品的快速迭代,银行的开发团队也正在向敏捷开发转型,如何适应这种转型已成为当前各家银行测试团队的首要和迫切的任务。
基于以上背景,结合商业银行软件测试的未来发展趋势,民生银行从2018年开始实施质量与测试一体化平台建设项目。项目旨在打造一个测试、开发、运维和业务等相关人员协同工作的云测试平台,从而更有效地提升银行IT系统的投产效率与质量,降低生产运维风险,加快适应“互联网+金融时代”的快速反应模式。
一、商业银行测试发展趋势分析
商业银行的测试发展先后经历了四个主要阶段。
第一阶段:非专业测试团队的纯手工测试阶段 (2000年之前)
在2000年之前,大多数商业银行并没有独立的测试团队,主要由业务人员和开发人员对系统进行测试。无论是测试管理还是测试执行,基本以文档管理和手工测试为主。
第二阶段:积极引入商业化工具的拿来阶段 (2000年~2010年)
在测试体系建设的初期阶段,各商业银行主要通过采购第三方商业工具来建设自己的测试体系,几乎不涉及对工具的定制化开发。
测试管理方面主要以QC(Quality Center)类工具为主,实现对测试设计与执行等过程的系统化管理。测试管理工作主要以缺陷管理为核心,开发人员也会通过统一的缺陷管理工具进行缺陷修复。
自动化测试方面主要发展Web功能自动化测试与性能自动化测试,前者主要以QTP(Quick Test Professional)等工具为主,后者主要以Load Runner等工具为主。
第三阶段:依托已有工具为原型的自主研发阶段 (2010年~2018年)
随着各商业银行测试体系建设的不断推进,业务条线对测试团队管理能力与交付效率的要求也在不断提高,对测试工作进行系统化管理的同时,还要通过自动化测试提升测试效率。
在测试管理系统建设方面,很多商业银行开始引入国内相关领域供应商研发的系统,通过定制化改造,使之更适合自己的管理流程。通过对测试管理系统不断地升级与优化,做到从测试需求到测试设计、从测试执行到测试结果分析的全面测试管理。
在自动化测试方面,首先是基于开源平台来进行二次开发,逐步形成适合自己的自动化测试平台,例如通过对Selenium、Appium、Robot Framework和JMeter等开源自动化框架或平台进行封装,开始研发自己的平台;其次是投入更多的研发力量,自主或借助厂商从零起步开始研发一些自动化测试工具,以接口自动化测试工具居多。
第四阶段:以建设云测试平台为主的创新研发阶段 (2018年前后开始)
经过前三个阶段的发展,多数商业银行基本建立了自己的测试体系,测试管理与自动化测试都得到了相应测试平台或工具的支撑。但在现有测试管理机制和测试支撑工具的制约下,仍然存在一些重要问题亟须解决,主要表现在以下四个方面:
(1)测试工具体系不完整
测试工具繁多,但功能测试和非功能测试未能纳入统一管理,难以对测试过程和测试质量进行整体的把控,更无法合理量化各类测试人员的生产力。
(2)测试管理流程不统一
在整个软件工程的生命周期中,测试和开发以及运维部门之间大多通过线下沟通,协同工作成本高、效率低。部分流程未纳入线上管理,导致流程脱节,衔接不顺畅,特别是分行独立测试难以有效跟踪和监理。
(3)自动化测试覆盖率低
现有商用自动化测试工具对测试人员的技术要求较高,自动化测试人员匮乏,使用成本偏高,推广效果不佳。另外对厂商也存在一定的依赖,定制、改造困难。
(4)业务和科技缺乏过渡桥梁
没有一套合理的模型来进行结构化的测试分析,往往类似的功能需要重复分析测试需求,结果还可能存在较大差异,以往的测试案例复用率较低,测试资产难以积淀。
因此,基于未来发展趋势来构建商业银行全新的质量与测试管理体系,打造集质量管理与测试管理、功能测试与非功能测试统一管理的平台,将成为商业银行在质量与测试方面的重要发展目标。
二、民生银行云测试平台建设目标
经过在软件测试领域多年的探索和实践,民生银行逐步建立了一套测试规范和体系。民生银行云测试平台结合实际需求制定了如下的系统建设目标。
1.打造面向全行的质量与测试一体化平台
打通功能、性能等各类测试的关系,将功能、性能和开发自测等各类测试项目都集成到云测试平台统一进行管理;将业务团队、开发运维团队、质量测试团队以及分行涉及的测试活动统一纳入云测试平台进行管理;线下工作全部转至线上完成,管理模式由事后管理转为事前、事中管理。
2.打通软件测试生命周期管理全流程
实现测试工作全流程集成管理,提升测试过程各个环节的管理水平与质量。打造立项、需求、开发、测试和运维等一体化的系统,建立统一质量管理和分析机制,建立开发与测试的线上质量评价体系,实现质量闭环管理。
3.构建跨平台零编码自动化测试框架
通过自主研发测试引擎,建立自动化测试模型,屏蔽功能测试人员对技术的依赖,实现接口、移动App和Web自动化测试的普及化,全面提升测试工作效率和自动化测试覆盖率,构建测试数据准备库,解决测试数据问题。
4.重构测试过程资产管理机制和复用模式
通过建立产品到业务场景再到系统功能点的结构化分析模型,将业务需求和系统功能实现衔接起来。进而建立和完善测试场景库、测试案例库和数据准备库等,持续积淀测试过程资产,提升测试资产的复用率。
三、民生银行云测试平台建设历程
结合自身情况,民生银行云测试平台确定了如下建设路线:借助此前在测试管理和自动化测试等方面积累的经验,基于民生银行成熟的分布式技术架构,以开源技术作为平台建设基础,通过对核心模块进行自主研发来打造一个全新的云测试平台,在测试管理与自动化测试方面实现管理和技术的创新性突破。
在具体建设过程中,云测试平台项目建设采取“分批开发、逐步投产”的建设策略。
第一阶段:系统规划与设计(2018年4月~10月)
项目组用了半年左右时间先后完成了云测试平台的技术选型与整体方案设计、各子系统概要设计与详细设计、项目各项立项准备工作以及开发与测试环境搭建等工作。
第二阶段:测试管理功能投产(2018年10月~2月)
完成云测试平台架构体系的搭建,建立以测试引擎为核心的基础平台框架,测试管理子系统上线,与项目管理、开发管理和运维管理等相关系统对接,实现全流程线上集成管理。同时,接口自动化子系统和App自动化子系统作为独立模块上线。
第三阶段:自动化测试功能投产(2019年2月~6月)
测试引擎子系统上线,并完成与测试管理子系统、接口自动化子系统和App自动化子系统的集成,实现了自动化设计和运行一体化管理,开始选择项目开展试点。
第四阶段:自动化测试功能推广(2019年6月~12月)
云测试平台持续优化,全面推广接口自动化和App自动化测试,扩大自动化覆盖范围,进一步将自动化延伸至Web测试领域。
四、民生银行云测试平台建设成果
1.打造了面向全行的质量与测试管理体系
民生银行云测试平台在设计之初就把系统定位为面向全行相关用户的质量与测试一体化平台,而不仅仅是质量与测试管理中心内部的系统。云测试平台目标用户主要包括软件开发部、生产运营部、大数据管理部、业务测试团队及各分行团队等。云测试平台为全行不同部门的测试需求构建统一且可定制化的流程,包括标准测试项目管理流程、开发自测项目管理流程及测试监理管理流程,形成一个有效且可跟踪的质量与测试管理体系。
云测试平台通过自有的管理系统和支撑工具,同时满足软件开发生命周期中,从接口测试、集成测试一直到验收测试等各个测试阶段的管理与技术支持。云测试平台体系如图1所示。
图1 民生银行云测试平台体系
2.建立了全流程线上质量与测试工作机制
通过与项目管理、开发管理和运维管理等系统进行对接,实现与立项、需求、开发、测试和运维等各环节相关管理体系的全流程线上集成管理。打通全部环节后,测试工作将以项目管理为主线、以测试资产库为基础,以测试过程管理为核心。
项目经过立项、方案与费用评审之后,项目管理系统将项目信息和原始需求自动推送到云测试平台,线上组织需求评审、工作量评估和测试风险评估,快速组建测试团队,制定测试计划。
测试执行环节充分结合自动化技术,做到测试进度实时跟踪、测试证迹在线管理、数据准备自动化和缺陷一键提交,大大提高了测试生产力。
测试结束后,将关键案例导入案例资产库,将项目问题及风险导入知识共享库,将生产问题及解决方案导入经验教训库,持续积累测试过程资产。
测试评审通过后,云测试平台会自动生成测试质量报告,推送到运维管理系统,作为项目上线的重要依据。
3.构建了基于测试引擎的自动化测试体系
基于测试引擎的自动化测试体系的构建是云测试平台在自动化测试领域的一大创新性突破。传统的自动化测试主要应用在接口、Web和移动App等领域,但往往独立开展自动化测试,而测试引擎则把各工具平台集成到一起,将其封装的原子脚本以原子功能点的形式提供给功能测试人员,实现各类自动化测试的全面开展。
(1)通过原子功能点实现对业务系统服务/接口的原子级封装。原子功能点是从业务角度对各个应用系统基本原子功能的定义。对于后台系统,主要是完成对其开放的服务/接口的封装,这个过程不需要开发任何程序或脚本,接口自动化测试子系统支持通过配置的方式完成封装过程。对于渠道类系统,可以通过录制的方式完成原子功能点的封装。
(2)通过原子功能点创建案例模型来实现业务场景的自动化。案例模型是对用户业务场景的实现,通过组装原子功能点,实现了各类业务场景。在测试引擎中创建案例模型的过程,实际就是拼接各个系统原子功能点的过程,通过梳理输入/输出关系、设置验证点等,实现了对用户场景的模型化。
(3)通过测试设计引擎完成各类自动化测试案例的设计与调试。通过为案例模型设计测试数据,就可以得到自动化测试案例。测试引擎支持自动化测试案例的设计与调试,可以实时运行自动化测试案例,测试引擎会根据原子功能点的类型来调度相应的子系统运行原子功能点。
(4)通过测试调度引擎完成自动化测试任务的统一调度。测试案例设计完成后,接下来可以创建和执行自动化任务。测试引擎会统一调度各个自动化任务,将任务下的案例按照各种不同的调度策略分发给测试执行引擎执行。
(5)通过测试执行引擎完成自动化测试案例的执行与结果分析。测试引擎执行每条案例时,会按照案例模型中原子功能点的调用顺序,将其逐一解析成“原子功能点+数据”的形式,分发给相应的自动化测试子系统来执行。每个原子功能点执行完成后,自动化子系统会将结果返回给引擎,引擎汇总后生成测试案例的报告。
(6)建立了与手工测试案例统一管理的自动化测试案例库。在云测试平台中,手工测试与自动化测试案例实际在同一资产库中,可以在测试管理系统中统一进行管理。对于功能测试人员而言,可以把自动化测试案例看成是可以自动化执行的手工案例,从而在案例层面打通了自动化测试和手工测试的关系,测试经理可以全面来管理自动化测试。
4.实现移动App测试的全新管理模式
针对移动App测试工作的特点,云测试平台提供了面向手工测试和自动化测试的全面解决方案,系统解决了移动App测试中的各种问题。
(1)移动测试设备私有云部署
移动App测试的痛点之一在于要面对多种终端品牌、型号和操作系统版本的测试,通过测试设备私有云集中部署的方案,所有测试设备在设备池中实现共享。用户在设备池中选择目标设备使用,释放设备后即可被其它用户使用,极大提升了测试设备的利用率。
对于移动App自动化测试,开发了设备调度模块,统一对设备进行自动调度管理。各种自动化测试任务并行执行时,可以充分地共享设备,提升测试效率。
(2)远程真机手工测试
移动App自动化测试系统提供远程真机的统一调度管理,测试员申请租用设备后,可以远程调度设备进行App测试。
功能测试人员在测试管理系统中选择测试案例后,可以进入移动App自动化测试系统调度设备进行测试,测试过程中支持一键截图、一键缺陷提交和一键上传证迹,快速完成案例的执行工作。
(3)自动化测试与兼容性测试
移动App自动化系统封装了Appium开源自动化测试框架,功能测试人员通过录制方式来设计自动化脚本,更容易开展自动化测试工作。
与测试引擎集成后,可以轻松设计移动App类型的原子功能点。各类移动App的原子功能点通过引擎开放给测试管理系统,功能测试人员可以轻松开发包含移动App业务操作的自动化测试案例。
借助自动化测试,还可以轻松实现面向各类移动设备的App兼容性测试。
五、民生银行云测试平台总体方案设计
民生银行云测试平台总体设计如图2所示。从图2中可以看出,云测试平台分为四层:测试工作台、测试管理系统、测试引擎和自动化测试系统。其中自动化测试系统包含接口自动化测试、移动App自动化测试和Web自动化测试三个子系统。
图2 民生银行云测试平台总体设计
测试工作台位于最上层,为不同的使用人员提供不同的操作界面:对于管理者,提供各项目的管理者视图,可以总览测试项目的统计与分析数据;对于测试经理和开发经理,将使用不同的测试管理流程来管理测试项目;对于测试执行人员和业务人员,将直接进行测试执行操作。
测试管理系统是测试工作台的后台服务层,主要对测试过程进行全流程管理,包括测试管理、质量管理和资产管理。测试管理系统在测试流程方面实现了测试需求接入、测试需求分析、测试案例管理、测试缺陷管理、测试结果管理和测试报表管理等;在质量管理方面实现了对项目的开发质量和测试质量的量化管理;在资产管理方面实现了业务场景库管理、测试案例库管理(手工/自动化)、数据准备库管理、案例模型库管理、原子功能点库管理和生产问题分析库管理等。
测试引擎在云测试平台中主要起承上启下的作用:测试管理系统通过测试引擎对接口、移动App和Web等自动化测试子系统进行管理与调度,完成自动化测试的设计与执行工作;接口、移动App和Web等自动化测试子系统通过测试引擎,把封装好的各类业务视角的原子功能点开放给普通的功能测试人员,实现各类业务流程或场景的自动化测试。测试引擎一方面通过降低自动化测试技术门槛,将手工测试案例方便快捷地转为自动化测试案例;另一方面通过对接口自动化、移动App自动化和Web自动化等子系统的调度,打通自动化测试系统之间的壁垒,实现业务视角的全流程自动化测试。
底层自动化测试系统将不再对功能测试人员直接开放,由引擎封装后统一开放各个自动化子系统的功能,通过这种方式可以大幅降低自动化测试复杂度,从而更容易在功能测试人员中普及自动化测试。例如云测试平台已经对功能测试人员屏蔽了脚本开发环节,手工测试人员通过组装原子功能点来设计案例模型,轻松地将手工案例转为自动化测试案例来执行。
在总体设计方案上,云测试平台需要系统全面地支撑从测试需求接入到测试分析与设计、从测试执行到测试结果报告各个阶段的管理与实施,形成对质量与测试全流程的闭环管理。
测试需求分析与设计阶段重点支撑测试需求接入、测试项目管理、测试计划管理、测试案例设计及评审管理等;测试执行过程重点支撑缺陷管理、配置管理及质量管理等;自动化测试执行过程主要由测试引擎进行调度与驱动;结果分析阶段重点支撑测试结果汇总、测试结果报告生成、测试工单流转及测试结果统计与分析等。
在总体技术设计方面,云测试平台引入分布式技术,采用分层架构设计,以高性能、高可用、高可靠和可扩展为设计原则,支持高并发、海量数据和弹性伸缩等分布式特性。通过分布式服务框架和服务治理,提供了跨系统服务调用的能力,引入注册中心实现服务的自动发布和发现,支持服务的负载均衡和集群容错能力,支持大并发场景下的服务限流,支持服务调用完整链路的跟踪。通过分布式缓存,降低数据库访问压力,支持服务器节点间的数据共享,实现了对应用透明的缓存数据访问能力。通过分布式批量处理框架,实现批量任务的调度执行,支持按照多种方式分包在多节点并发执行,支持控制节点的分包数量实现对占用资源的控制,提供错误重试和断点续跑等机制支持运行错误补偿。
民生银行云测试平台通过全新的系统架构设计,引入分布式技术,整合开发运维管理工具和流程,实现了银行业IT系统在质量与测试管理方面的创新性突破。借助这一全新的平台,民生银行实现了质量与测试管理水平、测试工作交付效率的大幅度提升,从而不断降低测试成本与生产运营风险。
民生银行云测试平台投产后,主要取得了如下八个方面的提升:
一是实现了总分行业务团队以及科技开发、测试和运维团队共用同一质量与测试平台协同工作。无论是测试中心主导的项目,还是开发自测及分行监理项目,均按照标准流程来进行闭环管理。
二是实现了质量与测试工作全流程线上管理,测试需求分析、测试设计、测试执行、缺陷管理、测试报告以及相关过程评审及审批等工作,全部通过测试云测试平台在线完成,所有过程都可以跟踪和审计,从而实现对测试工作的事前和事中管理。
三是实现了质量与测试的一体化管理平台,通过搭建质量评估方法和指标体系,既可以对测试过程进行质量管理与量化管理,又可以通过测试结果来反馈开发质量。
四是通过不断沉淀测试场景库、测试案例库和数据准备库等资产,实现对测试资产的全面管理,同时还将运维管理系统中的生产事件或问题导入后进行分析,形成测试经验库,为后继项目设计测试案例提供参考。
五是通过测试引擎降低了自动化测试的技术门槛,实现在功能测试中大范围推广自动化测试。功能测试人员无须开发自动化测试脚本,通过组装自动化测试团队封装好的原子功能点,就可以轻松实现案例的自动化测试。
六是对测试过程中的手工测试、自动化测试和测试资产库使用等进行全面的统计分析,掌握重要环节的效能情况,从而不断提升质量与测试管理水平。
七是打通了手工测试和自动化测试的壁垒,实现了手工测试和自动化测试的统一管理。借助云测试平台,无论功能自动化测试,还是性能自动化测试,都可以统一在一个项目下进行管理。
八是解决了测试数据问题。以测试案例模型为基础,开发了数据准备库模块,全面为手工测试和自动化测试提供测试数据支持,解决了测试过程中的各类数据问题。
民生银行通过云测试平台,探索了质量与测试管理一条新路。我们相信,在这个平台上通过持续改进和实践,质量与测试工作将会步入一个新的高度。
《中国金融电脑》2019年第 11 期
声明:本文来自中国金融电脑,版权归作者所有。文章内容仅代表作者独立观点,不代表安全内参立场,转载目的在于传递更多信息。如有侵权,请联系 anquanneican@163.com。