来源:鑫智奖·2024第五届金融机构数智化转型优秀案例评选

获奖单位:贵州农信

荣获奖项:网络影响力TOP10优秀案例奖

一、项目背景及目标

背景:

(1)金融科技的发展:随着金融科技的快速发展,银行和金融服务行业越来越依赖于复杂的信贷系统来处理大量的金融交易和数据。这些系统必须保证高度的可靠性和安全性,因此对它们的测试工作提出了更高的要求。

(2)传统测试的局限性:传统测试方法交易链路复杂、耗时长、效率低且易出错,难以满足快速迭代的市场需求。手动测试在面对复杂多变的信贷系统时,往往无法高效地完成测试任务。

(3)自动化的优势:通过引入自动化手段可以极大提高测试效率,例如自动化测试能够将人为驱动的测试行为转化为机器执行的过程,适用于功能测试的各个流程,包括单元测试、集成测试、功能测试等;引入自动化版本部署,加快版本部署效率,保障测试环境版本的一致性;引入自动化造数功能,实现批量生成测试数据,降低测试准备时间。

(4)技术与需求的差异:市场上现有的自动化测试、自动版本部署、自动造数工具可能与银行业的实际需求存在差异,这促使行业内部开发适合自己需求的自动化工具集。

目的:

(1)提高测试效率:通过引入自动化手段减少人力资源的投入,缩短信贷类系统的测试周期,实现快速反馈和持续集成,从而缩短产品上市时间。

(2)保证质量:确保信贷系统能够正确、高效地处理贷款申请、审批、放款和还款等过程,同时满足监管要求和风险管理的需要。

(3)降低维护成本:虽然基于UI的自动化测试用例维护成本较高,但通过合理的自动化策略和技术选择,可以减少这部分成本,提高测试用例的可维护性。

(4)适应变化:软件的界面UI变化频繁,而接口相对更稳定。通过基于接口的自动化测试,可以更好地适应系统的变化,降低因界面变动导致的测试失败风险。

综上所述,信贷系统的自动化手段实践是为了应对金融科技背景下的挑战,通过提高测试效率和质量,降低成本,适应系统变化,最终确保信贷系统的稳定性和可靠性

二、创新点

(1)综合多种自动化测试手段:将接口自动化测试与UI自动化测试相结合,以覆盖信贷系统的不同方面。例如,通过接口测试覆盖信贷核算系统、公司信贷系统和大零售信贷的后端的贷款开户、出账申请和放款功能;通过UI测试从发起端进行端到端的全链路验证。

(2)智能测试数据服务平台:为了解决测试数据准备阶段的难题,以数据全程可追溯的方式满足了7×24小时循环自动化测试的数据准备需求。

(3)DevOps体系的融合:在自动化测试中融入DevOps理念,实现测试开发一体化,加快信贷系统的迭代速度和提升系统的稳定性。通过自动化测试支持持续集成和持续部署的实践,帮助信贷系统快速响应市场变化并减少人为错误。

信贷系统的自动化手段实践不仅提高了信贷系统测试的效率和质量,还有助于降低维护成本,同时能够更好地适应系统的变化,确保了信贷系统的稳定性和可靠性。

三、项目技术方案

1)自动化测试技术框架

根据信贷系统业务功能的特性和特点分析,信贷系统适合进行UI自动化测试和接口自动化测试结合,才能提高信贷系统回归测试的覆盖率。UI自动化测试可以对页面要素及模拟用户操作进行测试,提高页面功能的回归效率;接口自动化测试可以提高底层接口处理逻辑的覆盖率,同时通过接口自动化测试进一步巩固业务数据处理的安全性。

基于业务要求及行内运行环境的配套要求,我们做了如下技术选择:

UI自动化:采用Selenium WebDriver进行Web端自动化测试,Appium用于移动端测试;

API测试:采用Postman、SoapUI、Jmeter等相关接口自动化测试工具。

基于Selenium WebDriver、Appium、Postman、SoapUI、Jmeter的技术架构及建设思路,我们进行自动化测试管理平台自研,形成更具本行特色的自动化产品。

2)持续集成与持续部署(CI/CD)

持续集成与持续部署,我们采用DevOps平台来实现。

底层技术选择:底层集成了Jenkins相关应用,作为CI/CD的底层技术应用;

构建触发:每次代码提交自动触发构建。

反馈机制:各版本代码的自动构建及部署,若存在代码异常,导致部署失败,触发构建失败的警报,反馈给构建人员。

3)数据管理策略

设计一个高效的测试数据管理策略,确保测试数据的可靠性和一致性。我们进行测试数据管理平台自研,通过测试数据管理平台,我们能快速生成测试数据,并实现数据隔离。

数据准备:使用测试数据管理平台生成测试数据,为每支业务交易进行测试数据脚本开发,通过脚本运行,批量造数;

数据隔离:测试数据管理平台实现数据隔离,通过搭建一套独立的自动化测试环境来实现不同测试环境数据的物理隔离;并使用一些数据隔离技术(如:数据标签化、虚拟化),确保自动化测试数据不污染生产数据;

备份计划:制定数据备份和恢复策略,以防意外情况发生。

4)测试脚本开发

根据测试计划和用例设计,编写可复用且易于维护的自动化测试脚本。为了提高测试脚本的开发及维护效率,必须做好编码规范、脚本结构、代码审查。

编码规范:遵循编码规范和最佳实践编写测试脚本;

脚本结构:采用页面对象模式(Page Object Model)等最佳实践来提升脚本的可维护性;

代码审查:定期进行代码审查以确保脚本质量。

5)并行测试执行

为了提高测试效率,使用并行测试执行策略,在同一时间运行多个测试用例,维护稳定的测试环境,并做好测试资源管理及做好测试监控,并及时进行测试脚本和测试过程的优化。实施实时监控测试执行过程,并生成详细的测试报告,包括成功、失败情况和耗时等指标。

硬件配置:确保有足够的服务器资源来部署持续集成服务器和其他测试工具;

软件环境:安装必要的操作系统、数据库管理系统、网络配置等;

依赖管理:使用Maven工具管理项目依赖;

实时监控:使用Nagios工具监控系统性能与测试进度。Nagios可以监控各种主机和服务,包括Windows、Linux和Unix系统,它还可以监控交换机、路由器和打印机等网络硬件。性能监控方面,Nagios通过插件和扩展实现各类性能数据的监控,如内存使用率、磁盘I/O等;测试进度监控方面,可以通过Nagios监控软件的部署情况、测试用例的执行结果等来评估测试的进度,具体包括定义监控指标、设置阈值和告警、自动化测试与持续集成等。

执行过程调优:基于监控数据对系统、测试脚本、测试过程进行优化。

报告生成:自动化测试管理平台通过利用Extent Reports技术(Extent Reports 技术是一种用于自动化测试的开源报告工具,它支持多种编程语言和测试框架),进行二次开发,在自动生成自动化测试报告上进行调优,使生成的测试报告具象化,更易于理解。

6)版本控制

将所有测试资产(包括测试用例、脚本、配置文件等)纳入版本控制系统,例如SVN,以便于跟踪变更历史和协同工作。

自动化投产版本验证测试是在投产版本验证测试环境下,通过执行特定测试案例(集),采用快速验证的方法,验证待投产版本是否符合投产标准的测试工作。

自动化投产版本验证测试目的主要是保障投产上线过程安全可控,投产后生产关键交易运行无风险。

7)缺陷跟踪与生命周期管理

使用自动化测试管理平台的缺陷管理模块进行自动化测试缺陷的跟踪和管理,及时记录缺陷,并跟踪缺陷的修复情况,直至缺陷被修复和重新验证。

8)跨浏览器和跨设备测试

对于需要支持多浏览器和设备的信贷系统,需要相应的自动化策略以确保广泛的兼容性。在并行测试执行集中,我们采用类BrowserStack技术,可以在多种浏览器和操作系统配置上自动执行测试。

四、项目过程管理

项目各阶段的实施周期表:

1)需求分析与规划阶段

该阶段通常包括对业务需求的收集、分析和测试计划的制定、编写测试场景并对测试场景进行评审,实施周期为40个工作日。

2)测试环境搭建阶段

在这个阶段,需要环境调研、测试环境的准备和更新,包括硬件、软件及网络配置等,实施周期为20个工作日。

3)测试脚本开发阶段

本阶段包括自动化脚本开发、审查、调试和脚本优化等,实施周期为100个工作日。

4)测试执行阶段

执行阶段包含测试数据准备、执行监控、执行策略优化、测试结果分析、缺陷修复等,实施周期为20个工作日。

5)试运行阶段

试运行主要是在自动化测试环境进行定时执行不同批次的自动化测试案例,观察自动化测试案例执行的稳定性和效率性,实施周期为10个工作日。

6)测试总结

总结测试过程中遇到的问题、编写规范、执行规范及相关技术难点和技术解决方案,形成组织过程资产并归档,实施周期为5个工作日。

7)回归测试执行阶段

回归测试执行主要是在投产版本验证环境运行,将准备上线的版本代码部署到指定环境,通过自动化测试案例对投产版本进行回归测试,只有自动化回归通过后,方可进行投产,此阶段为永久执行阶段。

五、运营情况

1)测试技术及工具的推广及应用

已覆盖我社大零售信贷系统、公司信贷系统管理和移动办贷APP的投产版本回归测试,目前正在进行柜面综合服务平台UI自动化测试脚本设计和编写,将自动化测试进一步扩大到柜面系统。

2)提高测试覆盖率,加大测试平台的建设

为了更好地适应银行业的实际需求,自研打造了接口自动化测试平台,而信贷系统回归测试自动化、信贷测试数据制造自动化为自动化测试平台提供了平台建设及落地的实践经验。

3)确保信贷系统运行稳定性和可靠性

将接口自动化测试与UI自动化测试相结合,以覆盖信贷系统的不同方面。例如,通过接口测试覆盖信贷核算系统、公司信贷系统和大零售信贷的后端的贷款开户、出账申请和放款功能;通过UI测试从发起端进行端到端的全链路验证。在实际运行中,自动化测试可以应用于投产后系统核心交易、关键交易是正确的,进一步保障了系统的稳定性和可靠性。

4)确保信贷系统的测试效率和质量

自动化测试有助于提高信贷系统的测试效率,减少人工干预,同时也提高了软件的质量。通过自动化测试,可以快速发现并解决软件中的缺陷,降低后续维护成本。信贷系统运行情况显示,自动化测试提高了科技团队的上线信心指数,对于提高信贷系统的效率和质量起到了积极作用。

六、项目成效

1)经济效益

提高生产效率:自动化测试可以快速执行大量的测试用例,减少了手动测试的时间和工作量,从而加快了软件的交付周期。在没做自动化之前,信贷系统一个版本的迭代周期在2个月左右;有了自动化的加持,一个版本的迭代周期缩减为1个月内完成交付,交付量大大提高了1倍。

降低人力成本:虽然初期可能需要较大的投资用于自动化测试工具和环境的配置,但长期来看,自动化可以减少对大量手动测试人员的依赖,从而降低人力成本。自动化技术应用前,信贷系统回归测试需要投入40个人天的工作进行回归,而且还存在很多交易场景没有回归到位;自动化的加入,只需要几台虚拟执行机,做一下基础数据配置,一个工作日内完成回归测试,大大降低了人力成本。

减少缺陷修复成本:自动化测试可以在开发的投产前发现问题,这时修复缺陷的成本远低于在系统上线后修复的成本。

提高软件质量:人工进行回归测试,为了节约成本,仅针对关键的开门交易进行回归,且大部分测试人员技能有限,仅对页面功能回归,不关注接口逻辑;而自动化不仅覆盖了关键的开门交易,而大量加入其他常规功能的测试覆盖,同时还进行接口测试,加大了接口逻辑的回归,多了一层测试保证,有助于提高软件的整体质量。

增强市场竞争力:通过更快地推出高质量的产品,企业可以获得竞争优势,从而增加市场份额和收入。

2)社会效益

提高用户满意度:自动化测试通过不断、重复的执行,加大了系统的使用频率,有助于确保软件产品的稳定性和可靠性,从而提高最终用户的满意度。

保障金融安全:对于信贷系统而言,自动化测试可以有效地发现潜在的安全漏洞,防止金融欺诈和数据泄露,保护用户的财务安全。

促进技术创新:自动化测试的实施推动了测试技术的不断创新和发展,促进了整个软件行业的技术进步。

提升行业标准:随着自动化测试在信贷系统中的应用越来越广泛,它有助于提升整个金融行业的软件测试标准。

七、经验总结

在进行信贷自动化测试时,我们积累了一些宝贵的经验,这些经验不仅提高了我们的工作效率,也确保了测试的质量和准确性。

首先,在项目初期,由于自动化手段涉及资源复杂,我们要做好详尽的测试规划,评估好资源、测试场景,搭建独立的测试环境,基于自动化测试需求和团队技能选择合适的自动化测试框架,做好资源分配、时间表制定、风险管理,并明确自动化测试各阶段的里程碑。

其次,在执行过程中,重点关注规范化和标准化,测试脚本的设计和开发要尽量制定好脚本的编写规范和要求,采用规范化、标准化的原则来开发自动化测试案例脚本,使其便于维护和优化,方可确保测试脚本的持续性和可维护性,也降低测试脚本维护成本。特别是执行过程中的数据管理,通过环境隔离、数据标签化和数据虚拟化的技术隔离测试数据,确保数据的安全性,并保证测试数据支持自动化测试用例的执行。此外还要做好执行过程中的监控,确保脚本的执行效率和稳定性。

最后,在运行过程中,要做好缺陷跟踪和回归测试,并根据需求变更及时进行脚本优化,确保自动化测试场景与业务的吻合度,避免业务偏差,形成自动化用例冗余。要做好阶段性的回归和反思,总结经验教训,改进自动化测试流程,更新组织过程资产(例如:脚本编写规范、技术规范文件、自动化测试流程文件、操作文档等),并做好自动化测试知识的共享,定期进行自动化知识的培训和自动化测试审查,提升团队的自动化测试技能。

更多金融科技案例和金融数据智能优秀解决方案,请在数字金融创新知识服务平台-金科创新社案例库、选型库查看。