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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   接口自动化的代码是比较简单的,单接口用例5行代码,多接口场景用例10行、30行、60行不等,都是那种只要认真看都能看懂的,所以在编写用例代码的时候注释都很简洁。但当很用心去完成一个接口用例时,会发现能做的还可以更多,比如命名和注释,看起来更加赏心悦目。  场景用例  获取二维码+二维码扫码结果:  看起来是真的舒服呢!下面上代码。package com.XXXXXXX.api.kjkhd.naturalperson.login; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON...
            0 0 1120
            分享
          •   对于“自己适不适合转行做软件测试?”一直都是测试行业里的热门话题。随着近几 年IT互联网行业的快速发展,软件测试岗位也受到越来越多人的关注,因此有很多人都想要从事这一行业,这里主要分为两类人,一种是刚毕业的应届生,对于很多毕业大学生来说毕业等于失业;另外一种是在其他行业,没有前景没有未来,想要转行。  一、如何判断自己适不适合做软件测试?  其实对于这个问题,除了一小部分人真的在这方面有特别突出的天赋以外,是没有严格区分适合与不适合的。想大家看到的大多数软件测试行业大佬都是从小白菜鸟慢慢成长过来的。其实只要你下定决心想要去学习并坚持,你就是适合的。一名软件测试人员身上具备很多显性特征,下面...
            0 0 719
            分享
          • 补充背景:系统 A 与 系统 B 数据交互的方式:系统 A 直连系统 B 的数据库。读者提问:我们团队负责测试的系统A,数据源来自兄弟团队负责测试的系统B。现在存在的问题是:系统B 的生产环境和测试环境都是生产数据,我们在测试环境没有数据可测,只能上生产验证。有什么解决办法吗?阿常回答:短期解决方案:在你们系统 A 的测试环境同步一份系统 B 的生产环境数据。长期解决方案:搭建大数据平台,将所有上游系统的数据都同步到你们的大数据平台。读者朋友阿朵问阿常上述问题:测试环境没有上游系统的数据,怎么办 ?阿朵负责测试系统 A,今天领导给她安排了一个新任务,系统 A 要新对接一个系统 B,系统 A 从...
            0 0 1443
            分享
          •   测试用例方法  1.等价类设计测试用例  具体步骤:  1)明确需求  2)划分有效和无效等价类  ·有效等价类:满足需求的  · 无效等价类:不满足需求的     -规则     - 长度     - 类型     - 是否为空     - 是否重复  3)设计测试用例  · 典型应用场景:输入框  2.边界值设计测试用例  定义:是等价类的一种补充,对输入或输出的边界进行测试的一种黑盒测试方法。  上点:边界上的点。  内点:边...
            0 0 1385
            分享
          • 在上一小节,我们简单介绍了接口文档,以及对于接口本身的测试,从本小节开始我们来介绍一下业务功能的测试。需求分析我们先给一份产品需求如下:点击“我喜欢”按钮,调起一个弹窗,展示我喜欢的明星列表;明星排列顺序按照添加时间倒序排列;可分页展示,向上划动,可展示下一页内容,每页最多展示2条内容。我们逐条分析一下,这几条都分别是由哪些开发同学负责:肉眼可见的按钮一定是由前端或者客户端来完成,不是我们测试重点;倒序排列,前后端均可完成,但一般是由后端处理完成后,交给前端客户端展示,这是接口测试的重点;前后端均可完成。但如果是由前端完成,那么后端需要把所有数据一次性给到前端,我们想一下如果数据量巨大,那么对...
            0 0 2012
            分享
      • 51testing软件测试圈微信