查看原文
其他

中国工商银行如何解决测试数据难题

中国工商银行 高效运维 2022-11-11



工商银行软件开发中心 广州产品部 

随着互联网金融的高速发展,传统单体系统已难以支撑金融业务快速响应市场的需求,工商银行系统逐渐由集中式主机系统向分布式架构转型。同时,为了快速响应市场需求,金融产品和服务不断推陈出新。在架构转型叠加业务需求的双重驱动下,工商银行的系统研发节奏不断加快,为了确保版本交付质量,逐渐加大测试的投入。但是,测试数据的生成,一直是开展系统测试绕不开的障碍。

一、当前银行系统的特点与数据痛点

一笔对客交易需要从渠道系统接入业务系统完成资金划转、账户更新等处理才可闭环,交易链路长,关联多个系统。同时,由于银行业务具有种类多、客户群体多、交易监管规则多的“三多”特征,因此银行系统具有架构复杂、上下游环节关联性强的特点。
系统的复杂性使得准备测试数据的链路非常长,例如,为了生成一张借记卡数据,首先需要在系统建立客户信息,然后开立活期借记卡,第三步给该卡转账存入一定金额,最后签订电子银行协议,一共涉及4个柜面交易、3个系统。由此可见,银行测试的造数痛点是跨越多个系统,对测试人员的业务经验和技能提出较高要求,且需耗费大量精力和时间。
银行系统的复杂性不仅导致造数难,还要求一笔可用数据需要在多个关联系统的数据库均存在相应记录,给测试数据的管理带来不小的挑战。一方面是存在多个案例共用一笔数据,出现数据“撞车”导致案例失败的情况,测试人员需要耗费精力去分析因数据引起的测试误报。另一方面是各系统数据库升级不同步,导致版本迁移后存量测试数据不可用,测试人员需要耗费大量时间重新准备数据。

二、工商银行破解测试数据难题的思路与实践

工商银行基于系统架构复杂的特点,深入挖掘测试数据的痛点问题,以解决系统测试全链路交易数据的痛点为目标,提出一套破解测试数据难题的方案,于2021年启动测试数据中心的建设。

1.制定数据服务开发标准,实现一键式生成全链路数据

通过调应用接口生成测试数据是业界主流的造数方法,相比渠道交易生成测试数据的方式,减少了渠道环节缩短流程,而且可以将调应用接口的模块封装成数据服务,通过调度服务实现并发批量造数。但是一笔测试数据关联上下游多个应用,单接口生成数据不能满足跨系统全链路测试的需要。为此,工商银行以接口生成测试数据的方法为基础,进行以下优化:制定数据服务开发标准,统一数据服务通讯区格式,由数据服务触发应用接口生成数据;支持串接数据服务组成造数链条,前项服务的返回值可传递给后项服务的上送值;支持灵活的造数方式:造数小助手、批量自动造数,用户可在测试数据中心页面选择造数链条一键触发造数。链条式造数的结构如图1所示。

图1 链条式造数结构图

2.支持数据刷新占用机制,轻松实现数据保鲜

如前文所述,测试中存在多方使用同一笔数据造成冲突的风险,例如,测试人员A 正在测试销户功能,同时测试人员B正在测试转账功能,双方选择的是同一张借记卡数据,且互不知晓,如果A先完成销户交易,则该卡数据状态失效,B测试将出现数据问题的报错。为了解决数据一致性问题及数据使用冲突问题,测试数据中心创新地提出数据刷新占用机制。

刷新功能的基础是数据建模,即定义数据由基础信息、补充信息、特征共三部分组成,如下图2所示。

图2 测试数据组成
如图2可见,基础信息是一旦生成就不会轻易改变的信息,由数据服务生成后存入测试数据中心,例如客户信息号、卡号、资金账号等;补充信息是测试需要获取的信息,例如测试转账接口需获取卡号、资金账号、余额等;数据特征是对测试数据状态的描述,例如“卡状态_正常”、“账户可用余额_大于0”等。数据刷新流程:首先以基础信息为条件执行SQL语句获取当前的补充信息并存入测试数据中心;以基础信息及补充信息为条件执行SQL语句识别数据最新状态,作为数据特征存入数据中心。数据刷新流程如图3所示。

图3 数据刷新流程图

如上所述,刷新功能可以定时获取数据补充信息及特征状态,用户通过数据特征查找数据,获取准实时数据信息,较好地解决数据不一致问题。占用机制则是数据使用时默认由当前用户独占该数据,被占用的数据将不会再被其他用户查找使用,直到该数据被释放再次刷新,该机制完美解决多方使用数据资源的冲突问题。通过定时刷新与占用释放功能,测试数据中心可以自动实现数据保鲜,用户无需花费时间确认数据状态、解决“撞车”苦恼。

3.支持以特征取数,破解测试数据固化引起的误报难题

自动化测试普遍采用固化数据的方式,经常因数据状态失效造成脚本报错。为了解决这个问题,测试数据中心支持以数据特征实时获取数据执行测试案例,破解脚本数据长期固化导致失效的难题,根本性解决自动化测试的数据问题,有效降低测试误报率。图4是脚本固化测试数据与脚本以特征实时取测试数据的对比,显然,当固化的卡号、资金账号被他人更改状态后,该案例数据将不可使用,测试人员需要重新查找数据并更新脚本通讯区赋值。以特征取测试数据的方式,则在执行案例时自动从测试数据中心获取满足测试需求的卡号、资金账号,有效保障数据的可用性,避免手工查找替换数据,让测试人员专注测试结果的验证。

图4 两种取数方式的对比

三、成果与展望

截至2022年6月,测试数据中心的建设方面:造数能力大幅提高,已囊括100多个系统共2200多个数据服务;数据管理范围广,数据刷新覆盖个人金融、企业金融、电子银行等20个核心系统的热点数据;已实现接入数据服务、串接造数链条、数据生成、数据刷新、特征取数等核心功能。测试数据中心的推广方面:平台累计用户1000多人,覆盖系统测试、验收测试等使用场景,月均造数量达到10万笔、特征取数量25万笔。特征数据的有效性达到98%,测试数据误报问题下降60%以上。此外,快速批量造数的优势愈发凸显,具有一键触发完成全链路造数的能力,已多次出色完成与人民银行紧急联测任务的批量造数需求。
历经长期的探索和发展,工商银行测试数据中心的建设已初显成效,不仅大幅降低了系统测试的造数难度与成本,其数据管理能力也在自动化测试实践中大放异彩。展望未来,伴随着工商银行核心系统架构转型的持续推进,测试数据中心将不断接入更多核心系统,为自动化质量守护提供基础支撑,并不断优化造数能力,积极探索智能造数能力的建设,为持续提升研发效能提供助力。

10月28-29日,GOPS 全球运维大会 2022 · 上海站,字节跳动、B站SRE稳定性可观测性实践、平安银行云原生、可观测、稳定性实践等大厂专场、热门议题,应有尽有,扫码解锁更多精彩 ⏬

<<  滑动查看下一张图片  >>


近期好文:

基于 Prometheus 的监控神器,看完不信你不会,简单灵活!

“高效运维”公众号诚邀广大技术人员投稿

投稿邮箱:jiachen@greatops.net,或添加联系人微信:greatops1118。
点个“在看”,一年不宕机

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存