面向服务架构(SOA)测试全解析
1. 引言
面向服务架构(SOA)正迅速改变着软件工程的格局。它通过服务发现与组合、超晚期绑定、服务级别协议(SLA)管理与自动协商以及自主系统重新配置等特性,实现了灵活且高度动态的系统。更重要的是,SOA 从根本上改变了开发视角,推动了软件所有权(软件作为产品)与使用(软件作为服务)的分离。
随着 SOA 在关键任务系统中的应用日益广泛,确保其高可靠性的有效方法变得至关重要。为增强对 SOA 的信心,可采用不同策略。一种是通过冗余实现容错 SOA,例如用容器调用多个等效服务并充当投票者;另一种是在服务中心系统执行期间持续监控,并在必要时采取纠正措施,如温度服务不可用时调用替代服务。
尽管监控是构建自修复服务中心系统的有效工具,但它要求为所有可能的异常事件实施适当的恢复措施。因此,测试仍然是将异常事件数量降至最低的关键过程。
然而,SOA 的动态和自适应特性使得大多数现有测试技术无法直接应用于服务和服务中心系统。例如,传统测试方法假设能精确识别调用的代码,或知晓多态组件的所有可能绑定,但这些假设在具有运行时发现和超晚期绑定的 SOA 中不再成立。
SOA 的独特特性增加了测试的复杂性,具体如下:
- 基于服务的系统本质上是分布式的,需要为不同的部署配置确保服务质量(QoS)。
- 系统中的服务相互独立变化,影响回归测试。
- 系统通过替换或添加服务实现自适应行为,集成测试需处理不断变化的配置。
- 服务集成商和用户对服务提供商提供的信息信任有限,增加了设计测试用例的难度。
- 系统部分的所有权由不同利益相关者共享,系统测试需要协调这些利益相关者。