贵州农信:基于自动化手段的信贷系统测试效能提升实践

来源自:媒体公告    点击数:1   发布时间:2024-09-22 12:07:11

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  增强市场竞争力:通过更快地推出高质量的产品,公司能够获得竞争优势,从而增加市场占有率和收入。

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

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

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

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

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

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

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

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

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