您必须记住的是,在存在大量依赖关系的环境中,必须映射所有依赖关系并且必须测试所有路径。
拥有服务,它们必须与许多客户一起使用,因此每个客户都应该遵循测试用例。
有了服务,您还需要关注网络问题。使传统测试在网络中投入大量流量并关闭以查看其工作原理。
除此之外,拥有服务不需要其他类型的方法。只需控制所有输入和输出。
Soa测试只是确保所有独立服务都以预期的方式运行,同时遵守这些服务建立的输入和输出合同。 我找到了一个有趣的SOA测试工具,它是免费的 SOArite 。
SOA测试可以定义为传统测试的扩展。
类似于传统应用程序,我们首先对组件进行单元测试,然后进行组件级功能测试,然后进行模块级别,然后进行端到端应用程序测试,我们提供服务(有时是一组组件,用于完成某些任务) )级别单元测试,然后是功能测试,然后是流程(组合服务或业务流程)级别测试,端到端集成测试等。
由于流程停留在不同类型的服务中,其中一些服务可能是包装器,一些服务也可能具有通信约束负载约束,服务级别协议所有这些都使测试过程复杂化,并且应该考虑提出测试策略。
几个(有价值的?)建议:
服务的定义应该导致使用Mock框架来验证您的服务消费者,而不依赖于提供者的实现。
检查消费者的稳健性:当消息丢失,服务提供商不可用时会发生什么。
由于每个“服务提供者”应该具有标准的,面向业务的接口(通常提供WSDL技术),因此以下属性可能不同:
除非您对业务本身进行大量更改,否则所提供的服务不应从模块的修订更改为修订。
模块不应该关心它的客户是谁,这使得模块测试更容易。
理想情况下,所使用的服务由目录提供,而不是硬编码到模块中;如果这有,那么测试 部分 系统 - 一些模块,但不是全部 - 变得更容易。
的 编辑: 强>
通常,SOA服务测试是 的 黑盒子 强> 但是,您只使用已发布的WSDL协定,有时需要在数据库中进行直接验证,尤其是在没有可用于进行验证的功能(操作)时。
此外,由于现代SOA平台通常与其他服务实现共享资源,因此模拟大于或等于生产量的处理负载并评估内存,处理和I / O消耗的影响,避免对服务的负面影响非常重要。已部署。
最复杂的问题与合同和实现的演变有关,关于如何在不破坏现有客户端的情况下实现新功能,这可能特别麻烦,因为存在语法和语义问题,例如:
我经常使用的工具是: SOAP UI 和 JMeter的 ,并使用内部开发的框架创建自定义自动化测试。