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

news2025/1/10 12:11:50

1痛点和研究背景

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

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

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

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

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

2技术方案和创新成果

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

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

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

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

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

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

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

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

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

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

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

图5可观测性平台架构图

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

图6拓扑图生成效果展示

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

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

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

图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自动化测试、接口自动化测试、测试持续集成、测试架构开发测试框架、性能测试等。

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/602522.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux驱动】VScode 环境简单配置

在开始编写驱动之前,我们需要保证良好的编码环境,这里编写代码所使用的编辑器是VScode,如果进行环境配置,可能会提示很多错误,比如头文件找不到、内核函数的定义无法跳转等等。 VScode 在这里只作为编辑器使用&#x…

Springboot配置Yml多环境

文章目录 学习链接前言pom.xmlapplication.ymlapplication-dev.yml 开发环境配置application-prod.yml 线上环境配置logback.xml 日志配置 学习链接 easypan Spring Boot手把手教学(2):使用yml多环境配置和创建多环境profile打包 springboot 配置多环境使用yml配置…

自动化测试介绍和分类,看这一篇就够了

自动化测试介绍及分类 什么是自动化测试? 自动化测试是软件测试活动中一个重要的分支和组成部分,即利用工具或脚本达到测试目的,没有人工或者极少人工参与的软件测试活动称为自动化测试. 自动化测试的优势有哪些? 方便进行回归测试,当软件的版本发布比较频繁的时候,自动化…

平台工程是 DevOps 的未来

Gartner 预测到 2026 年时,将有 80% 的软件工程组织会建立平台团队 DevOps 与平台工程 DevOps 是一种文化和理念。平台工程,是我们实现**“谁构建、谁运行”**的唯一方式。这是 DevOps 的核心初衷,也是后来企业级规模和云原生时代的实现基础…

游泳健身馆预约小程序开发 助力门店拓客引流

暑假快要到了,很多游泳健身馆都想方设法来招揽顾客,其实无论是派发传单还是媒体投放,都不如开发一款游泳健身类预约小程序来的好。因为有了健身游泳小程序系统不仅能够起到很好的推广宣传效果,对于日后的经营发展也有诸多好处。 …

javaEE在2023年5月21知识复盘(一)

今天讲述了doget()、doPost()方法,介绍了里面参数req,resp的一些实用方法 getParameter()获取请求参数 getParameterValues() 返回参数数组 【post方式】 设置编码格式 req-> setCharacterEncoding() resp->SetContent-Type(“text/html;charsetutf-8”) 获取…

SpringBoot + minio实现文件切片极速上传技术(敢说全网整合完整度前三)

一. 概述 提示:请不要多个博客来回跳着看,此文章之详细绝无仅有,融合多家之长,如果遇见报错,请仔细捋一遍文章,不要忽略!我在写的时候因为许多文章不全面,来回跳遇见许多坑&#xf…

Java 集合,你肯定也会被问到这些

作为一位小菜 ”一面面试官“,面试过程中,我肯定会问 Java 集合的内容,同时作为求职者,也肯定会被问到集合,所以整理下 Java 集合面试题 说说常见的集合有哪些吧? HashMap说一下,其中的Key需要重…

傻子都能学会的LNMP部署

LNMP 一、安装 Nginx 服务1、安装依赖包2、创建运行用户3、编译安装4、优化路径5、添加 Nginx 系统服务 二、安装 MySQL 服务】1、安装Mysql环境依赖包2、创建运行用户3、编译安装4、修改mysql 配置文件5、更改mysql安装目录和配置文件的属主属组6、设置路径环境变量7、初始化数…

接口测试测什么?一个简单问题把我难住了

那么设计测试用例时我们主要考虑如下几个方面: 一、功能测试 接口的功能是否正确实现了 接口是否按照设计文档中来实现(比如username参数写为了user,那么这就不符合,因为接口文档在整个开发中都需要使用,所以接口实…

MEX 文件 ‘lsd.mexw64‘ 无效: 找不到指定的模块。问题解决方法

问题描述 在跑MATLAB和C混合编程的一个算法时,出现了如下错误: MEX 文件 C:\Project\final code\reference code\lsd.mexw64 无效: 找不到指定的模块。 如下图所示: 原因分析 根据资料[1]的说法,*.mexw64文件无效可能的原因是缺…

GitLab从旧服务器迁移到新服务器(空间不足,gitlab安装报错)

注意事项:迁移前首先要保证新旧服务器上的GitLab版本号一致,而且gitlab的包要符合安装的系统gitlab安装,系统与安装包不一致导致的安装错误。 1.查看当前GitLab版本 cat /opt/gitlab/embedded/service/gitlab-rails/VERSION显示为 12.5.5。…

Linux之Ubuntu 22.04实现微信双开

Linux之Ubuntu 22.04实现微信双开 基于deepin-wine仓库安装第一个微信添加仓库安装对应软件包com.qq.weixin.deepin 微信的安装存在的问题补充 Linux下使用模拟器进行微信多开(可取?)下载Linux模拟器下载完成打开: 安装第二个微信…

zookeeper机制及消息队列kafka集群部署

目录 一、zookeeper1、zookeeper简介2、zookeeper特点3、zookeeper工作模式及机制4、zookeeper应用场景及选举机制5、zookeeper集群部署 二、消息队列kafka1、为什么要有消息队列2、使用消息队列的好处3、kafka简介4、kafka特点5、kafka系统架构名词介绍6、Kafka架构及流程7、k…

技术分享 | 如何编写同时兼容 Vue2 和 Vue3 的代码?

LigaAI 的评论编辑器、附件展示以及富文本编辑器都支持在 Vue2(Web)与 Vue3(VSCode、lDEA)中使用。这样不仅可以在不同 Vue 版本的工程中间共享代码,还能为后续升级 Vue3 减少一定阻碍。 那么,同时兼容 Vue…

Shell脚本攻略:文本三剑客之grep

目录 一、理论 1.grep 2.sort 3.uniq 4.tr 5.cut 6.split 7.paste 二、实验 1. grep 2.sort 3.uniq 4.tr 5.cut 6.split 7.统计当前主机的连接状态 8.统计当前连接主机数 一、理论 1.grep (1)概念 grep是Linux中最常用的”文本处理工…

Redis-主从复制以及哨兵

前言 ​ 要避免单点故障,即保证高可用,便需要冗余(副本)方式提供集群服务。而Redis 提供了主从库模式,以保证数据副本的一致,主从库之间采用的是读写分离的方式。在 Redis 主从集群中,哨兵机制…

共享打印机出现文件无法打印|0X00000709错误的解决方案|win7 win11

现在办公室通常会使用打印机共享功能,在使用打印机共享中会出现在[文件无法打印,因为在“\ip\打印机名 在Ne02:”上发生错误] 这时,我们输入相应IP重新共聚共享端打印机,就会出现“0X00000709”的错误。 回到共享端…

Rust in Action笔记 第三章 复合数据类型

通过#[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZI50wIh1-1685693144796)(null)]),不带感叹号的#[allow]仅为下一行代码提供属性,属性有多种分类,文中出现的allow属性称为诊断属性(Diag…

僵尸网络检测数据集CTU-13介绍及使用

首先感谢爱学习的大白菜爱学习的大白菜的博客_CSDN博客-刷题,ACM之路,机器学习领域博主对CTU-13数据集的描述的翻译,这使得后面对这份数据集的理解更加容易。 参考CTU-13数据集_爱学习的大白菜的博客-CSDN博客 由于要做僵尸网络检测的工作,但是没有相关…