需求不完备测试解决方案——分布式微服务架构测试实践

1痛点和研究背景

目前随着分布式核心下移和小型机下线的趋势,主流系统架构已逐步演变为CCE+TDSQL。而在这一演进过程中也陆续暴露出来一些痛点难点问题,需要我们着力解决。为此,我们聚焦于分布式架构下需求、架构、数据这三个方面的痛点问题探索解决途径和措施展开了研究。

需求不完备测试解决方案——分布式微服务架构测试实践_第1张图片

第一,需求缺失的问题,分布式核心下移和小型机下线涉及的系统体量大、业务逻辑复杂,需求说明书持续迭代的情况下说明书内容已逐渐滞后缺失,易导致测试遗漏的出现。

第二,架构痛点,分布式事务一致性逻辑复杂,目前主要基于手工测试,依赖于开发人员修改程序构造异常事务场景,导致测试费时费力;多微服务间的参数配置存在关联关系,微服务个数较多时,参数配置检查工作偏重复性体力劳动;分布式架构,某项功能的实现往往涉及多重微服务的关联调用,缺少有效的全链路监控方案。

第三,数据痛点,数据迁移测试、并行运行期间主机到开放数据的kafka同步功能的验证成为一大测试重点,目前主要依靠数据抽查、SQL脚本执行的手工测试方法,存在效率较低、覆盖率不足的问题。

本研究通过探索需求不完备测试解决方案、分布式事务一致性测试、参数配置检查、可观测性技术、数据移植/同步验证五个专题来解决上述问题。通过自研工具和运用成熟工具,减少手工测试工作量,降低对测试人员技能的依赖;提炼分布式微服务架构新测试方法,提升测试质量和效率。

2技术方案和创新成果

下面详细介绍五个专题的技术方案和创新点,展示部分自研工具的应用效果。

“需求不完备测试解决方案”专题,通过自研两类工具提升测试结果的正确性和测试覆盖的充分性。图1思维导图展示了详细的技术方案。我们一是通过自研报表/账务测试工具,实现全量新旧系统测试结果比对;日志回放测试提升工具,实现新旧报文字段不一致的映射、返回结果不一致的检查,提升测试质量。二是自研未覆盖代码提取工具,提取未覆盖的代码分支,补充测试数据,提升代码覆盖率。

自研了财务/报表测试工具,图2是报表/账务测试工具展示,实现了两个文件的精确对比和模糊对比功能。

需求不完备测试解决方案——分布式微服务架构测试实践_第2张图片

图1“需求不完备测试解决方案”专题技术方案

需求不完备测试解决方案——分布式微服务架构测试实践_第3张图片

图2报表/账务测试工具展示

“分布式事务一致性测试”专题,基于混沌工具制造事务异常场景,替代开发人员修改程序,丰富测试场景,提升测试质量和效率。提炼熔断、限流的通用测试方法。研究CCE+TDSQL技术栈下,多种基础软件(Gap-Nginx、ZooKeeper、Redis等)的混沌工程故障实验,提升系统稳定性。图3思维导图展示了详细的技术方案。

需求不完备测试解决方案——分布式微服务架构测试实践_第4张图片

图3“分布式事务一致性测试”专题技术方案

创新实践了基于CCE架构的混沌测试基础故障场景实验,探究了Gap-Nginx异常场景系统的健壮性;实践基于CCE架构的熔断、限流的测试场景。

“参数配置检查”专题,创新自研了redistools工具,实现自动检查关键参数配置,减少重复性体力工作,降低人为统计误差,并给出优化建议。图4思维导图展示了详细的技术方案,主要提取YAML文件、Redis数据库、配置文件、DCC中心的测试参数,与预投产参数比较。

需求不完备测试解决方案——分布式微服务架构测试实践_第5张图片

图4“参数配置检查”专题技术方案

“可观测性技术”专题,依托Skywalking开源可观测平台,通过非代码侵入的方式,采集监控信息,实现可视化系统拓扑关系、交易调用链路追踪、精准识别故障位置等功能,弥补现有测试方法对调用链监控的缺失。探索可观测技术在性能测试、混沌工程中的应用,提升测试质量。图5是可观测性平台架构图。

需求不完备测试解决方案——分布式微服务架构测试实践_第6张图片

图5可观测性平台架构图

通过引入了分布式可观测工具Skywalking,完成环境资源申请、搭建与部署;选取复杂调用链交易,在测试环境进行并发压力测试,对比部署Skywalking前后交易的性能表现,分析探针对JVM堆内存使用的影响。图6和图7分别是拓扑图生成和调用链路追踪结果的效果展示。

需求不完备测试解决方案——分布式微服务架构测试实践_第7张图片

图6拓扑图生成效果展示

需求不完备测试解决方案——分布式微服务架构测试实践_第8张图片

图7调用链路追踪结果效果展示

“数据移植、同步验证”专题,在分布式核心建设过程中,总结提炼数据移植、数据同步功能测试关注点,开发数据移植和数据同步验证工具,释放测试人力,提高测试效率。数据移植验证工具通过对源数据和目标数据的数据量、字段取值等信息进行一致性验证。数据同步验证工具,实现主机数据库脚本生成及执行,开放数据库结果验证,同步结果报告生成功能。图8和图9分别是数据移植验证工具、数据同步验证工具详细的技术实现方案展示。

需求不完备测试解决方案——分布式微服务架构测试实践_第9张图片

图8数据移植验证工具技术实现方案展示

需求不完备测试解决方案——分布式微服务架构测试实践_第10张图片

图9数据同步验证工具技术实现方案展示

3应用前景

应用场景适用于分布式核心系统建设、小型机下线、服务器上云、系统重构类项目。

分布式核心系统建设,架构从主机DB2迁移升级为CCE+TDSQL。针对研究研究成果正在实践的项目应用了需求不完备、分布式事务一致性、参数配置检查、可观测性技术、数据移植/同步验证5个研究的成果。

小型机下线,架构从CICS+Sybase升级为CCE+TDSQL。针对研究研究成果的实践应用了需求不完备、分布式事务一致性、参数配置检查、可观测性技术、数据移植/同步验证5个研究的成果。

服务器上云,架构从WAS+Oracle升级为CCE+TDSQL。针对研究研究成果正在实践的项目应用了分布式事务一致性、参数配置检查、可观测性技术、数据移植/同步验证4个研究的成果。

系统重构,架构特点为多微服务、多链路系统。可应用参数配置检查、可观测性技术、数据移植、同步验证4个研究的成果。

以上为编者基于分布式微服务架构的测试技术研究与实践,欢迎大家交流互促。

中国农业银行研发中心童薇、蔡晓峰、刘建伟

最后:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

你可能感兴趣的:(java,数据库,分布式,软件测试,测试用例)