近年来,金融机构持续践行“科技驱动、价值创造”的发展理念,大力开展业务架构、应用架构和数据服务体系升级换代,稳步推进应用转型工程建设。转型工程建设涉及应用多、工期紧、系统架构复杂,在转型过程中需兼顾业务需求落地的客观现状。为提升质量保障体系支撑能力,确保重点转型任务顺利落地,中国工商银行软件开发中心不断革新测试方法和技术手段,大力推进基于流量的精准测试体系建设。利用线上流量大、场景全的特性弥补人工评估测试范围的局限性,推动新老系统全面自动化比对测试、流量自动化测试场景建设、流量案例精准推送,从而提升研发效能,支撑应用系统完成高质量转型工作。
(一)测不完:随着大量应用架构转型的推进,数据库转型、单元化转型、各类软硬件升级对系统全面测试的影响力逐步加深。同时评估测试范围过于广泛,导致测试案例数量庞大,测试人员难以在有限时间内完成所有测试,致使测试数据和测试场景存在部分遗漏,对测试覆盖的全面性提出了全新的挑战。
(二)速度慢:自动化测试建设速度跟不上研发节奏,自动化案例前期录入和后期维护等环节存在人工操作干预,技术架构变化的越频繁,自动化测试调整的成本越高,其中维护成本、误报率、动态保鲜是三个重点问题。
(三)不够真:测试场景与生产场景存在差异,在逻辑复杂业务场景下,回归测试依赖人工评估的自动化脚本覆盖,人工构造测试数据失真,回归测试难度逐渐增大,急需提升全量测试的有效率以及案例覆盖精准度。
(四)依赖多:测试链路长,依赖上下游,银行系统业务场景复杂,一个应用系统往往依赖于多个上下游系统,在测试环境中,这些系统的稳定性和性能会直接影响到测试效果和进度。
(一)流量精准测试核心理念
流量录制回放是目前业界的一种主流测试方法,主要是通过记录和回放系统在生产环境中的流量,达到在测试环境中进行接口测试、性能测试、压力测试等操作,其核心价值在于能够模拟真实场景下的流量,帮助测试团队更好地发现系统潜在问题,了解系统的性能和瓶颈,同时提高团队测试效率,降低工作量和时间成本。在转型背景下,利用线上流量大、场景全面的特性,弥补人工评估测试范围的局限性,生成全面精准的测试案例,快速高效地完成自动化测试案例建设维护和保鲜,模拟真实还原的测试场景,形成独立无损的测试环境,提供触手可达的非功能性测试服务,进而降低业务快速迭代带来的风险。
在流量精准测试体系方面,不断提升相关应用探索和实践能力;在自动化方面,形成全面比对和自动化测试脚本生成能力;在测试资产方面,提供全量业务场景、精准测试范围和动态的案例增补能力;在非功能性测试方面,提升性能、混沌、安全等测试场景的自动化造数能力;在低成本联调方面,提升开发联调契约和沙箱测试环境搭建速度和数据真实性。
(二)流量精准测试主要应用
1.流量>全面比对
转型过程中,新老系统功能比对是目前涉及比对测试最多的场景,其中最大的挑战是数据库国产化,主要是验证新老系统执行相同交易结果是否一致。通过生产流量在新老系统的回放比对,实现数据库国产化过程中的场景全覆盖自动化回归测试,主要分为测试回放结果和生产结果比对、测试环境双路回放后比对两部分。
图1 流量测试全面比对示意图
使用流程步骤如下:
流量筛选:生产环境录制回流流量数量庞大,每次进行全量回放,不仅会消耗大量服务器资源,也对回放结果分析有较大影响。需要根据测试人员的需求,支持按接口、流量类型、时间、自定义等规则进行流量筛选,只回放筛选完的流量。
流量合并:针对多个并发、存在链路关系的录制任务(同一应用下不同集群),录制完成后可通过录制任务合并,整合成一个录制任务流量,为链路级流量回放和MOCK提供支撑。针对千万级流量,支持秒级合并。
流量替换:流量回放前支持对流量参数进行替换,包括按替换规则精准替换和复杂替换。
流量回放:支持先对流量进行筛选,按应用、服务、流量起止时间、速率(可倍速)等维度配置回放任务;回放节点据录制报文的时间节点进行回放,真实模拟生产交易场景。
流量MOCK:包括数据库MOCK,单服务下游子调用MOCK,按照链路、流量类别、指定流量等方式精准MOCK。
流量比对:支持多维度比对,包括生产报文比对、链路级参数比对、双库比对、数据库比对等。除了基本的完全匹配模式之外,还提供更多个性化比对规则以及智能降噪能力。
图2 链路比对示意图
2.流量+案例>自动化测试
图3 流量案例自动化整体流程示意图
使用流程步骤如下:
1.规则管理能力(规则库)
选择应用接口参数的不同字段(比如业务种类、卡种、币种等,自动同步接口信息或解析流量),自动识别字段的特征值及含义接口同步+数据库同步),根据字段名称+对应字典项,形成规则。
无法自动同步的接口字段信息的情况,支持人工维护。
2.流量打标能力(流量库)
通过遍历已录制的生产/测试流量,将上述规则组合标记到每一条流量中,形成流量上的业务规则标签。
处理逻辑:根据规则字段,进行打标,格式为:“入参/出参:参数名称=参数值”。
3.流量管理能力(流量库)
展示完成打标的流量列表信息,展示流量唯一标识号、标签等信息,支持流量发起回放、案例生成、报文查看、查看链路等操作。
4.案例生成能力(案例库)
选择一笔或者多笔流量,根据标签规则自动生成案例名称。其中,替换配置(替换规则、MOCK、SESSION)、回放配置(地址、速率、开始时间、比对规则)、前置数据脚本等信息为可选项,可后续统一维护。
5.案例管理能力(案例库)
针对已有案例,支持流量编排、案例执行(展示执行进度)、结果查看(复杂比对、链路比对)和分析(响应分析、结果导出)。
对于相同应用下海量案例信息,可支持案例范围圈定和定时自动化执行。
收益体现:流量案例脚本转化工作量相比于自动化脚本编写效率提升约50%。
3.流量+特征规则>测试资产
图4 测试资产组合生成示意图
使用步骤:
针对上下游应用间版本信息不透明、存量自动化场景不完备的问题,动态获取调用链路和业务组合场景的变更情况,如果发现新的调用链路或业务组合场景,则针对该情况的流量进行自动推荐并邮件推送提醒,测试人员可根据测试需求生成测试案例。
对于存量流量,从基本信息、覆盖率情况、稳定性、历史失败原因等维度形成流量画像,动态识别应用核心、高频资产库,定期对不符合指标要求的流量案例设置退出机制。
4.流量+程序链路>精准测试
图5 精准测试代码关联示意图
5.流量>非功能性测试基础
通过流量膨胀、加速和转化的编排能力,赋能非功能性的仿真测试,覆盖混合场景的压测,降低混沌工程对性能测试的流量的依赖,新增流量式IAST漏洞安全检测的能力。
图6 非功能性测试示意图
6.流量>联测契约
聚焦架构转型下分行联测、研发环境联调等痛点,通过实现将生产流量转换为预期返回结果能力,形成分行、客户高保真沙盒测试场景,用流量快速补齐联测契约挡板,实现研发联测小环境。
图7 联测契约示意图
来源:CAICT金融科技
责编:郭 旭 设计:李佰玲
主编:李婉娜
关注现代商业银行,看更多原创独家资讯!