Chapter19 架构实现与测试
原创大约 4 分钟
架构与实现
- 保持代码和架构一致的技术:
- 在代码中嵌入设计(Embedding the Design in the Code)
- 框架
- 代码模板
在代码中嵌入设计(Embedding the Design in the Code)
- 架构作为实现的蓝图。这意味着:
- 实现者知道他们正在实现的架构结构。例如,层次结构、发布-订阅、MVC、代理等。
- 他们可以将架构结构作为注释记录在代码中。这样,任何接手代码的人都会了解一些约束条件。
- 然后,工具可以自动关联代码和架构。
框架(Framework)
- 框架是围绕特定主题组织的可重用的库或类集合。
- 程序员使用框架提供的服务。
- 例如:
- Ruby on Rails 基于 MVC,专为 Web 应用程序设计。它提供了从 Web 服务器收集信息、与数据库交互或查询以及渲染模板的能力。
代码模板(Code Templates)
- 代码模板是程序员提供应用程序特定部分的代码集合。
- 例如:
如果在关键应用组件中检测到故障,将进行以下切换: 1. 并行在不同处理器上的次要副本被提升为新的主要副本。 2.新的主要副本
与应用程序的客户端重建连接。 3. 启动新的次要副本
作为新主要副本的备份。 4. 新启动的次要副本向新主要副本宣布自己的存在。如果在次要副本中检测到故障,则在其他处理器上启动一个新的次要副本。 - 过程:
- 对每个关键组件使用代码模板。
- 在模板的固定位置放置应用程序特定的代码。
- 代码模板的优势
- 具有相似属性的组件以类似的方式运行。
- 模板只需
调试一次
。 - 复杂部分可以由熟练人员完成,并交给不太熟练的人员。
架构和测试
- 两个级别的测试
单元测试(Unit Testing)
:对特定软件部分进行测试。- 组件或模块
集成测试(Integration Testing)
:测试不同软件单元开始协同工作时的情况。- 集成测试可以测试功能、性能、可用性和安全性。
- 需要测试的内容:
- 功能正确性的责任(Responsibilities)
- 通过合成负载进行性能(Performance)测试
- 通过故障注入进行可用性(Availability)测试
- 可修改性(Modifiability)需求也可以通过将更改分配给测试团队进行测试
- 安全性(Security)通过执行各种攻击场景来测试。
黑盒测试(Black-Box Testing)
- 黑盒测试将软件视为一个“黑盒”,没有关于内部设计、结构或实现的任何了解。
- 测试人员的唯一信息来源是软件的需求文档。
- 架构如何在黑盒测试中起作用?
- 它帮助测试人员理解需求文档中与指定子系统相关的部分。
白盒测试(White-Box Testing)
- 白盒测试充分利用软件单元的内部结构、算法以及控制和数据流。
- 测试覆盖单元的所有控制路径。
- 白盒测试通常用于单元测试。
测试活动
- 架构师应积极参与以下活动:
- 测试计划是分配资源的过程,例如时间、人力、技术、工具、硬件或设备。
- 测试开发是编写测试、选择测试用例和创建测试数据集的过程。
- 测试报告和缺陷分析
- 测试工具集的创建,包括测试引擎和测试脚本仓库;
- 主要目的是自动化测试过程。
- 测试驱动开发是一种技术,系统是根据预先确定的测试来开发的。
- 测试执行。测试人员将测试应用于软件,并记录错误。
总结
- 实现
- 实现活动可以将架构知识嵌入代码中。
- 模板可以用于重复出现的关键部分。
- 通过使用工具和管理流程可以防止架构侵蚀。
- 测试
- 单元测试和集成测试依赖于架构知识和测试工具集。
- 架构师应参与各种测试活动。