• 0
  • 0
分享
  • 基于分布式微服务架构的测试技术研究与实践——软件测试圈
  • 曼倩诙谐 2023-07-27 16:13:40 字数 2348 阅读 1170 收藏 0

  1 痛点和研究背景

  目前随着分布式核心下移和小型机下线的趋势,主流系统架构已逐步演变为CCE+TDSQL。而在这一演进过程中也陆续暴露出来一些痛点难点问题,需要我们着力解决。为此,我们聚焦于分布式架构下需求、架构、数据这三个方面的痛点问题探索解决途径和措施展开了研究。第一,需求缺失的问题,分布式核心下移和小型机下线涉及的系统体量大、业务逻辑复杂,需求说明书持续迭代的情况下说明书内容已逐渐滞后缺失,易导致测试遗漏的出现。第二,架构痛点,分布式事务一致性逻辑复杂,目前主要基于手工测试,依赖于开发人员修改程序构造异常事务场景,导致测试费时费力;多微服务间的参数配置存在关联关系,微服务个数较多时,参数配置检查工作偏重复性体力劳动;分布式架构,某项功能的实现往往涉及多重微服务的关联调用,缺少有效的全链路监控方案。第三,数据痛点,数据迁移测试、并行运行期间主机到开放数据的kafka同步功能的验证成为一大测试重点,目前主要依靠数据抽查、SQL脚本执行的手工测试方法,存在效率较低、覆盖率不足的问题。

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

  2 技术方案和创新成果

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

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

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

1-1.png

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

1-2.png

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

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

1-3.png

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

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

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

1-4.png

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

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

1-5.png

图5 可观测性平台架构图

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

1-6.png

图6 拓扑图生成效果展示

1-7.png

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

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

1-8.jpg

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

1-9.jpg

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

  3 应用前景

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

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

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

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

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

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


作者:童薇、蔡晓峰、刘建伟    

来源:http://www.51testing.com/html/25/n-7796425.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • pytest是python自带的单元测试框架,是unitest的升级版本。使用框架的目的是“提高效率”,可以实现:环境初始化和数据清除定制化执行测试用例配置--分布式执行自带html报告(可根据需要使用allure报告)安装:pip install pytestpip install pytest-html    原生态报告模版查看安装结果:pip show pytest注意事项:使用pytest框架,默认识别“test”,所以:1.测试用例必须以test开头,例如:test_A2.测试类必须以Test开头(第一个字母大写)3.对应的py文件必须以test_开头,或者_te...
            0 0 1784
            分享
          • 1.测试分类:(1)黑盒测试:不需要写代码,给输入值,看程序是否输出期望的值大部分都在使用黑盒测试,就是根据你写的代码进行测试(2)白盒测试:需要写代码,关注程序的具体的执行流程2.Junit的使用:Junit是白盒测试(1)@Test的使用1.定义一个类先在类中定义方法package cn.junit; /* * 计算器类 * */ public class Calcuator { /* * 加法 */    public int add(int a,int&nb...
            1 1 1896
            分享
          •   在过去几年中,随着敏捷实践的应用不断增加,质量保证与开发人员之间的关系也在不断发展。这两个角色之间的区分变得越来越模糊,这就这两种角色演变的一个很好的例子。  传统上,质量检查工程师的角色与职位,测试和验证代码质量更加一致。质量保证人员可以采用瀑布式方法进行工作,可以将无法部署的代码打回给开发人员,或者对代码进行了测试和验证通过,版本会发布到生产中。测试和验证不是开发人员关注的流程,交接仅仅是一种规范。  敏捷为开发人员和质量保证专业人员带来了新的思维定势,并承担了许多新的责任,这不仅有利于软件的交付,而且使我们的工作更加出色。  这是成为QA专业人士进入敏捷组织时的期望。  Dev-QA...
            0 0 1763
            分享
          • 大型数据库一、Microsoft SQL Server适用于入门者。开放性:只能在windows上运行,没有开放性,操作系统的系统的稳定对数据库是十分重要的,Windows9X系列产品是偏重于桌面应用。伸缩性:并行实施和共存模型并不成熟,很难处理日益增多的用户数和数据卷,伸缩性有限。安全性:没有获得任何安全证书。性能:多用户时性能不佳客户端支持及应用模式:C/S结构,只支持windows客户,可以用ADO、DAO、OLEDB、ODBC连接操作性:操作简单,但只有图形界面。使用风险:完全重写的代码,经历了长期的测试,不断延迟,许多功能需要时间来证明。并不十分兼容。二、Oracle 强大...
            12 12 888
            分享
          •   项目背景  公司内部的软件采用B/S架构,目的是进行实验室的数据存储、分析、管理。大部分是数据的增删改查,但是由于还在开发阶段,所以UI的变化非常快,难以针对UI进行自动化测试,那样会消耗大量的精力与时间维护自动化脚本,对于小团队来说就得不偿失了。针对此种情况,选用接口测试较为有效。  工具选择  针对接口测试的自动化工具也很多,例如Soup UI、Postman、robotframework,甚至jmeter这样的性能测试工具都可以进行接口测试。  robot framework测试框架有很多的第三方库可以使用,采用的是填表的方式进行,较容易上手,但是无法深入底层的了解客户端与服务器的交...
            2 3 3330
            分享
      • 51testing软件测试圈微信