在开发面向服务的体系结构(Service-Oriented Architecture,SOA)应用程序时,您的组织很可能会存在需要进行大量的实现和测试工作的非功能需求(NonFunctional Requirement,NFR)。Shiv Asthana 在本文中介绍了在测试作为 SOA 环境的一部分构建的应用程序的非功能需求时需要遵循的最佳实践。
SOA 是一种 IT 体系结构风格,支持将您的业务转换为一组相互链接的服务或可重复业务任务,可在需要时通过网络访问这些服务和任务。这个网络可以是局域网、Internet,或者一组不同位置提供的分散各处且采用多种技术,但以类似于安装在本地桌面的方式交互的服务。可以对这些服务进行结合,以完成特定的业务任务,从而让您的业务快速适应不断变化的客观条件和需求。也就是说,SOA 遵循查找、绑定并执行的关键原则工作,非常适合用于满足请求/响应类型的业务需求。
图 1. SOA 实现生命周期
当由能够解决难点或实现特定手动任务的自动化的策略业务目标和需求对 SOA 实现进行引导时,就可以实现业务转换。这样能够带来诸多好处,包括:
- IT 与业务的一致性。
- 最大限度地重用 IT 资产(不采用拆除和替换方法)。
- 手动和重复性任务的自动化。
- 遵循行业标准和法律法规。
- 填补组织的 IT 竖井 (Silo) 间的空白。
- 持续更改能够方便地映射为新服务的业务流程。
不过,只有在将功能需求和非功能需求包含到应用程序中并无缝集成到生产环境中,才能够实现 SOA 承诺的好处。因此,理想的实现和测试在关键时刻是必不可少的。
NFR 测试的主要挑战出现在 SOA 应用程序在实验室环境中开发或作为软件供应商的新产品投资组合的一部分开发时,在这些情况下,大多数时候生产环境都不可用。其他的挑战包括:
- SOA 应用程序具有大量的内部和不可见组件。
- 要进行测试,需要创建存根,用于替代生产环境中的遗留应用程序。
- 互操作性期望非常高。
- SOA 应用程序在重型中间件堆栈或平台上运行。
- 性能和负载承载能力非常依赖于中间件堆栈和遗留应用程序(在生产环境中)。
- 由于实现 SOA 的目的是为了填补企业级的空白,因此 NFR 的数量可能非常多。
- 早期技术 (SOA) 适配器具有对测试自动化工具的有限访问。
- 根据所解决的业务问题不同,用于应用程序部署的体系结构和组件可能会有所变化。
- NFR 比功能需求的变化频率高。
- 在实验室环境中进行测试需要在测试基础设施方面进行大量的投资。
|
虽然没有测试软件的最佳万能方法,但可以参考下面根据我的经验给出的列表。除了应对上面的一些挑战外,这些建议还可能会带来其他优势:
- 首先组建测试团队,此团队需要具有在计划使用的目标操作系统和中间件组件上工作的足够技能。
- 仔细分析需求,并找出自相矛盾的需求。
- 了解系统上下文关系图,以确定对存根的需求。
- 确保在项目开始时创建可测试性表格。确定能够测试的 NFR、不能测试的 NFR,以及哪些测试能够实现自动化。
- 创建了可测试性表格后,确定能够通过任何行业标准工具(如 IBM® Rational® Performance Tester)进行测试的需求,或者确定实现测试自动化是否需要自定义软件程序或脚本。
- 尽早规划测试基础设施。可能会需要在各个平台上测试应用程序,如 Microsoft® Windows®、Linux®、IBM AIX® 等。要在以后采购服务器可能会比较困难。
- 估算测试数据需求并确定创建足够的有效测试数据量以进行容量和负载测试。
- 对于您的 SOA 应用程序,请至少对表 1 中所给出的非功能方面进行测试。
表 1. 非功能特征类别
测试类型 | 测试定义 |
---|---|
可访问性 | 验证访问应用程序功能的能力。 |
审核与控制 | 验证检查历史工作流和审核记录的便利性。 |
可用性 | 验证应用程序是否能提供服务水平协议(Service Level Agreement,SLA)中规定的高正常运行时间。 |
兼容性 | 验证应用程序是否适合之前已有(较旧)的环境。 |
文档 | 验证用户指南是否提供了正确的说明。 |
安装 | 验证应用程序是否能在所定义的中间件堆栈上工作。 |
互操作性 | 验证在更改环境中的重要组件后应用程序是否能正常工作。 |
负载/容量 | 验证给定时间应用程序是否能完成所需处理的事务数量。 |
可维护性 | 验证在应用程序投入生产环境中后进行维护的便利性。 |
性能 | 验证响应时间、吞吐量、并发性等等标准是否满足需求。 |
可靠性 | 验证应用程序在与生产环境类似的负载压力下是否能正常工作。 |
可伸缩性 | 验证应用程序是否能满足业务不断增长的需求。 |
安全性 | 验证应用程序是否具有足够的安全措施,能够防止信息被盗。 |
服务能力 | 验证是否能够在不对业务造成任何影响的情况下对应用程序进行调试。 |
可用性 | 从最终用户的角度验证应用程序是否可用。 |
表 2. 可以促进 SOA 应用程序的 NFR 测试的工具综合列表
本文转自IBM Developerworks中国