05 分布式架构软件测试

Posted on Wed, 25 Dec 2024 17:12:51 +0800 by LiangMingJian


1.分布式架构概述

1.1 概念

  • 分布式架构把一个大问题拆分为多个小问题,通过多个部署在不同的服务器上的系统协同合作完成一个特定任务,好比多个人分工合作各种负责项目中的一部分。
  • 与分布式相反概念的架构是集群。集群是指在几个服务器上部署相同的应用程序来分担客户端的请求,好比多个人一起完成一个项目。

1.2 特点

  • 内部有很多计算机组成。
  • 外部呈现给用户的是一个统一的系统,看不出是由多个计算机协同工作的。

1.3 组件

  • 分布式业务框架:为业务实现而开发的逻辑框架
  • 分布式缓存和管理组件:为大并发和数据存储提供高速访问的数据,并确保数据的一致性
  • 分布式消息组件:为分布式架构中的位于不同物理计算机上的软件子模块提供的一种通信和调用的机制
  • 分布式数据库:负责大规模数据的读写、管理、查询等
  • 分布式文件系统:将多台独立的物理计算机的文件系统映射为一个完整一致的文件系统
  • 分布式治理组件:对运行系统中的各个子模块的功能进行统一的管理、协调

1.4 优点

  • 支持大量并发用户
  • 容错和灾备能力
  • 可灵活扩展

1.5 缺点

  • 额外的复杂性
  • 接口数量的爆炸增加
  • 容易出现强耦合导致维护性差
  • 信息安全的风险
  • 高维护成本
  • 数据或事务处理上的一致性难题
  • 逻辑耦合强,定位问题困难

2.分布式架构的测试

2.1 功能性测试

  • 功能完备性
  • 功能正确性
  • 功能适合性
  • 架构与功能分开考虑的功能

2.2 数据一致性相关

2.2.1 影响

  • 数据一致的牺牲导致业务功能相关的缺陷
  • 错误实现的数据一致性逻辑造成功能性和可靠性的缺陷
  • 数据一致与高可用性的平衡设计不足,影响可靠性
  • 对数据一致性的要求影响系统性能和容量

2.2.2 应对策略

  • 尽早开始测试和参与软件设计的评审
  • 通过场景法设计容错和并发场景
  • 进行专门的数据测试来覆盖数据一致性问题

2.3 事物处理相关

2.3.1 影响

  • 嵌套式事务能较好地保证系统的可靠性,但容易导致性能问题
  • 分布式事务在提供较好的性能和扩展性时会导致稳定性差

2.3.2 应对策略

  • 对由嵌套事务模式实现的业务逻辑针对性的设计性能测试和压力测试
  • 对由分布式事务模式实现的业务逻辑进行容错性测试

2.4 并发、互斥相关

2.4.1 影响

  • 出现在业务直接相关区域的错误读写影响业务功能的功能性
  • 出现在服务软件逻辑区域的错误读写影响服务的可靠性
  • 为确保不出现错误的数据读写,过度扩大临界区范围设计导致并发性能下降

2.4.2 应对策略

  • 分层的测试策略
  • 尽早地开展测试活动,参与设计的评审
  • 结合软件设计实现并发与互斥的逻辑,通过场景法、边界值法、状态迁移法,针对弱点进行覆盖
  • 单元测试中,对具体算法/业务/代码逻辑等进行逻辑覆盖和功能覆盖

2.5 远程调试和通信相关

2.5.1 影响

  • 涉及转换和通信过程,导致通信开销和通信延迟
  • 跨地区/因特网时,导致信息安全风险
  • 远程计算机出现错误时,本地模块崩溃

2.5.2 应对策略

  • 强调集成测试
  • 在各个集成层面上进行性能测试
  • 容错的场景涉及覆盖和灾备演练可以再各个集成粒度上进行
  • 对于跨因特网或区域的远程调用和通信,组织专门的信息安全测试

2.6 运维相关

  • 易用性:主要考虑的是用户差错性防御
  • 信息安全:对系统管理功能和访问是否有合适的权限的安排或管理测试
  • 维护性和可移植性:按模块可重用的要求进行考虑和测试
  • 兼容性(可选):服务节点模块要能够在不影响其他模型的情况下能快速进行替换

2.7 质量目标

  • 容量:分布式系统在既定的资源情况下去考虑容量是否达到了既定的要求,以及在增加计算资源的情况下去考虑系统容量的增长是否会符合预期
  • 容错:单个服务失效时,对整个功能整个系统的影响
  • 响应速度:对服务的调用的响应速度
  • 弹性:当用户的需求、用户的规模发生变化时,系统是否能自动的快速、及时的调整运算资源

2.8 分布式架构测试策略

  • 总体思想:分而治之,然后再进行综合
  • 单元测试:分布式的软件系统的模块以及子系统
  • 接口测试:系统内的模块接口
  • 集成测试:各子系统要完成的功能,考虑性能,并发,容错,以及多个子系统集成
  • 系统测试:系统对外的接口