目录
扫描二维码关注公众号,回复:
14784768 查看本文章
一、主要内容(下午题考)
1、分布式架构概述
2、质量特性
3、测试策略
二、分布式架构概述
1、分布式架构概念
-
分布式架构是指在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个系统似的。
分布式 : 将一个单体项目分成很多个模块,各个模块协同工作,各个模块构成了分布式系统; 集群:针对单个模块或者单个系统在多台服务器上部署,称为集群。为了提高系统的可用性,增加系统的负载。
2、分布式架构本质上的两大特点
-
内部有很多计算机组成
-
外部呈现给用户的是一个统一的系统,看不出是由多个计算机协同工作的
三、分布式架构的组件
1、分布式业务框架
-
主要是为业务实现的业务逻辑开发的框架
2、分布式缓存和管理组件
-
主要是为大并发和数据存储提供高速访问的数据,并确保数据的一致性
3、分布式消息组件
-
为分布式架构中的位于不同物理计算机上的软件子模块提供的一种通信和调用的机制
-
比如远程调用RPC
4、分布式数据库
-
主要负责大规模数据的读写、管理、查询等
5、分布式文件系统
-
将多台独立的物理计算机的文件系统映射为一个完整一致的文件系统
6、治理组件
-
对运行系统中的各个子模块的功能进行统一的管理、协调
四、互两网业务系统的治理组件
-
不同的业务环境下对应的治理组件不完全相同。
五、分布式架构的优缺点及代价
1、优点
-
支持大量并发用户
-
容错和灾备能力
-
可灵活扩展
2、代价
-
额外的复杂性
-
接口数量的爆炸增加
-
容易出现强耦合导致维护性差
-
信息安全的风险
3、缺点
-
高维护成本
-
数据/事务处理上的一致性难题
-
逻辑耦合强,定位问题困难
六、分布式架构的质量特性
1、功能性
(1)功能完备性
-
与架构实现有一定的关系
(2)功能正确性
-
与架构无关,由具体业务逻辑实现决定
(3)功能适合性
-
与架构无关,由功能的交互设计和场景决定
(4)架构与功能完全分开考虑的缺陷
-
在不同系统负载和容量情况下,系统所能提供的功能
-
非法、意外事件
-
部署、运维和监控功能
2、数据一致性相关
(1)影响
-
数据一致的牺牲导致业务功能相关的缺陷
-
错误实现的数据一致性逻辑造成功能性和可靠性的缺陷
-
数据一致与高可用性的平衡设计不足,影响可靠性
-
对数据一致性的要求影响系统性能和容量
(2)应对策略
-
尽早开始测试和参与软件设计的评审
-
通过场景法设计容错和并发场景
-
进行专门的数据测试来覆盖数据一致性问题
3、事物处理相关
(1)影响
-
嵌套式事务能较好地保证系统的可靠性,但容易导致性能问题
-
分布式事务在提供较好的性能和扩展性时会导致稳定性差
(2)应对策略
-
对由嵌套事务模式实现的业务逻辑针对性的设计性能测试和压力测试
-
对由分布式事务模式实现的业务逻辑进行容错性测试
4、并发、互斥相关
(1)影响
-
出现在业务直接相关区域的错误读写影响业务功能的功能性
-
出现在服务软件逻辑区域的错误读写影响服务的可靠性
-
为确保不出现错误的数据读写,过度扩大临界区范围设计导致并发性能下降
(2)应对策略
-
分层的测试策略
-
尽早地开展测试活动,参与设计的评审
-
结合软件设计实现并发与互斥的逻辑,通过场景法、边界值法、状态迁移法,针对弱点进行覆盖
-
单元测试中,对具体算法/业务/代码逻辑等进行逻辑覆盖和功能覆盖
5、远程调试和通信相关
(1)影响
-
涉及转换和通信过程,导致通信开销和通信延迟
-
跨地区/因特网时,导致信息安全风险
-
远程计算机出现错误时,本地模块崩溃
(2)应对策略
-
强调集成测试
-
在各个集成层面上进行性能测试
-
容错的场景涉及覆盖和灾备演练可以再各个集成粒度上进行
-
对于跨因特网或区域的远程调用和通信,组织专门的信息安全测试
6、运维相关
(1)易用性
-
主要考虑的是用户差错性防御
(2)信息安全
-
对系统管理功能和访问是否有合适的权限的安排或管理测试
(3)维护性和可移植性
-
按模块可重用的要求进行考虑和测试
(4)兼容性(可选)
-
服务节点模块要能够在不影响其他模型的情况下能快速进行替换
7、常见质量目标
(1)容量
-
是指分布式系统在既定的资源情况下去考虑容量是否达到了既定的要求,以及在增加计算资源的情况下去考虑系统容量的增长是否会符合预期
(2)容错
-
是指单个服务失效时,对整个功能整个系统的影响
(3)响应速度
-
对服务的调用的响应速度
-
把它纳入到分布式各个场景的考核目标下进行测试
(4)弹性
-
当用户的需求、用户的规模发生变化时,系统是否能自动的快速、及时的调整运算资源
七、分布式架构的测试策略
1、总体思想
-
分而治之,然后再进行综合
2、单元测试
-
分布式的软件系统:模块/子系统
-
功能测试、代码覆盖、再结合场景测试
3、接口测试
-
系统内的模块接口
-
应覆盖功能、性能、稳定性、信息安全
4、集成测试
-
子系统要完成的功能
-
等价类、边界值、场景法、状态迁移
-
性能、并发、容错
-
多个子系统集成
5、系统测试
-
系统对外的接口
-
基于规格说明的测试技术