工商银行系统架构转型引发的质量守护困境和突破 韩靖 工商银行软件开发中心广州研发部(简称:广研): •测试开发领域拓荒者; •持续集成团队负责人; •DevOps测试方向教练牵头人; •行内优秀内训师。 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 Content 目录 01工商银行应用架构转型 02架构转型背后质量守护困境 03全链路测试数据快速生成、保鲜 04ATDD拉通设计、开发、测试 01 工商银行应用架构转型 SAFE CB2000 NOVA NOVA+ ECOS ~2000 2000 20102020 工商银行应用架构历史进程 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 云平台 全球银行业规模最大的企业级云计算平台,入云节点超13万个,服务数量 超3万个,服务日均调用量超140亿次,日均处理消息请求超3500亿次,支撑日均千亿指标实时聚合、百亿链路信息实时分析。 规范 2022年4月,中国工商银行软件开发中心联合神州信息牵头编制的 荣誉 《商业银行分布式联机交易系统技术规范》团体标准,经北京金融科 技产业联盟第二届理事会第四次会议审议通过并正式发布。 国际数据公司(IDC)举办的“2022IDC中国数字金融论坛”中摘得“2022IDC 工商银行应用架构转型成果 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 中国金融行业技术应用场景创新奖”的殊荣; 在“2022数字化转型发展高峰论坛”数字化转型应用评选中获“鼎新杯”一等奖。 02 架构转型背后质量守护困境 困难重重 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 业务验证点不明确 平台主机双边一致难保障 性能测试范围广耗时分析链路长 混沌工程 测试数据成本高 测试环境不稳定 灰度验证 好不容易造一笔数据,用不了几天...... 转型后 平台数据库(客户信息) 客户信息表 6月15日升级 平台数据库(个人金融) 个金账户表 7月1日升级 平台数据库(个人理财) 理财账户表理财持仓表 7月1日升级 1.开立客户信息2.开立借记卡3.存钱4.开通理财账户5.购买理财产品6.确认理财份额 转型前 客户信息表个金账户表理财账户表理财持仓表 ...... 主机数据库 测试数据构建难、易失效 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 架构转型,验什么?怎么验? 一句话测试要点?! 验证与主机功能一致 测试经理 验证它是一头牛 我看,成! 老师,我测好了 测试小新 架构师/开发经理 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 03 全链路测试数据快速生成、保鲜 优点 ❒简单、快捷 落地困难 insert、update 方法1:通过SQL语句操作数据库 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 开立一个信用卡,需要更新的表:客户信息的2张表? 个人金融的3张表?信用卡发卡的5张表? ... 每张表动辄100+字段,每个字段的值? (我也说不清...) 无力应对过于复杂的数据准备 (eg:表字段多、关联的表多...) 方法2:导入生产数据 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 优点 需求:山东青岛的借记卡 广州、珠海...的部分客户信息 ... ... 个人金融 客户信息 反洗钱规则? ❒一次准备大量数据; ❒可以多次恢复; ❒全面性、多样性。 落地困难 跨应用数据库抽取规则难确定; 涉及敏感信息,审批周期长。 方法3:调用交易接口产生测试数据 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 开卡 优点 存钱 ❒准确、真实 ❒效率高 质押 需解决 买理财 购汇 业务链路长,生成一笔测试数据需要调用多个接口,接口间难以简单、灵活串联用 造数场景 数据服务 一键开卡造数链条2造数链条3造数链条N 数据服务1数据服务2数据服务3数据服务N 串联数据服务数据服务间参数传递 封装应用接口形成数据服务 (串联的基础) 应用接口 开立客户信息 开立空白卡 应用接口 …… 应用接口 …… 其余字段默认赋值 入参5个字段 入参(100字段) 出参(100字段) 应用接口 数据服务 分层建设内聚的数据构建能力 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 出参 8个字段 过滤关键字段传递 沉淀数据构建知识形成对外能力 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 拼装造数场景对外提供造数能力 灵活选择多个数据服务,串联成造数链条(场景) 数据服务间参数传递 如何保证要用数的时候,一定能提供有效的数据? 测试人员手边书 闲时造数数据保鲜 数据“构建”与“使用”的解耦 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 SQL1SQL2 ...... 自动造数 数据状态刷新 数据检索 数据建模 数据缓存 把一笔数据划分为基础信息、补充信息、特征 一张借记卡 密码:****** 手机号:189*****8391地址:广州市天河区XXX主账户余额:50000 ...... 卡片状态:正常电子银行:开通 是否绑定信用卡还款:是 ...... 卡号:622202****8976客户编号:*****7543 = 特征 补充信息 基础信息 ++ 稳态,永远不会变化动态,随时间推移可能会变化 (无明确字典) 动态,随时间推移可能会变化 (有明确字典) 独创数据建模 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 基础信息 一张借记卡 特征 = 补充信息 ++ 卡号:622202****8976客户编号:*****7543 密码:****** 手机号:189*****8391地址:广州市天河区XXX主账户余额:50000 ...... 卡片状态:正常电子银行:开通 是否绑定信用卡还款:是 ...... 数据状态刷新 以基础信息为基准(SQL查询条件),定时更新补充信息、特征(执行SQL) 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 eg:手机号、地址eg:卡片状态(正常、挂失、销户、冻结) selectmobile,adressfrom客户信息表正常:selectcount(1)from卡片表where wherecustomer_no=[基础信息.客户编号]card_no=[基础信息.卡号]andstatus=正常 挂失:selectcount(1)from卡片表wherecard_no=[基础信息.卡号]andstatus=挂失销户:...... 冻结:...... (若没命中任何字典,判定数据失效,丢弃) 热点数据在线查找 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 根据数据特征,获取数据基本信息、补充信息 测试脚本与测试数据解耦 自动化案例通过描述特征获取满足条件的数据,减少数据原因造成的误报。 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 从结构化返回信息 (基本信息、补充信 息)获取所需字段 根据数据“特征”,查询当前环境符合 条件的数据 Before:固化数据After:按需获取数据 数据失效,导致案例误报 解决痛点 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 原来现在 跨应用造数步骤多且慢 一键生成数据,效率 10倍 数据失效,难保鲜 数据自动刷新,保障有效性 个个人人经经验验 组织的资产,形成合力 04 ATDD拉通设计、开发、测试 业务需求不清晰 业务骨干开发人员 explain Code 多年积累的功能,无法让业务人员重新澄清 明确业务需求 ExampleRequirement 团队业务成熟度低团队更新换代,业务骨干所剩无几,大多数新人、 外部资源 沉淀业务资产 become TestCase verify 为什么要引入ATDD 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 测试新人、外部资源 Code 业务骨干开发人员 Example explain Requirement TestCase become 测试新人外部资源 verify l业务骨干不会写代码,参与感低 l实例(文字)转换成案例(脚本),重复劳动 l实例和案例一致性难保证,评审内耗 l案例验证过程和结果难把握 ATDD本地化遇到问题 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 ATDD本地化解决方案 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 业务骨干不会写代码,参与感低 实例(文字)转换成案例(脚本),重复劳动 实例和案例一致性难保证,评审内耗 案例验证过程和结果难把握 Given(条件准备1...n) 规范化案例 GIVENWHENTHEN “零代码”提升ATDD实施效率 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 Then(验证点1...n) When(发起交易X) 沉淀灵活复用 文件校验 缓存校验 数据库校验 报文 文件准备 参数准备 缓存准备 数据库准备 细粒度资产 使用支撑 批量触发 接口调用 文件操作 参数中心操作 缓存操作 数据库操作 多元执行能力 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 “活文档”保持脚本与案例描述一致,降低内耗 从前现在 变更变更联动更新 实例描述 测试案例(脚本) 同步修改对比评审 在线运行+现场保留,所见(设计)即所得(执行) 测试经理 从前 出生产问题了! 当初强调过这个验证点吖... 测试小新 测试小新 领导 老师,我测完了 我看到了,但有几个案例,最近一次运行, 存在部分断言不通过 现在 测试经理 抱歉,漏执行了... 嗯...100个案例,目前通过率75% 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 2023DevOps国际峰会暨BizDevOps企业峰会·北京站 Thanks DevOps时代社区荣誉出品