我在一个企业项目中工作,我的团队负责创建应用程序的前端,还有另一个团队开发 Web 服务,并为该项目中可用的所有服务提供了 WSDL。在开发阶段,我们的本地开发环境将指向负责创建 Web 服务的团队的开发框之一。他们的开发环境很可能在迭代过程中不稳定。为了降低这种风险,我们在本地机器上使用 SOAP UI 并开始模拟服务并进行开发。每当我们需要不同风格的响应时,我们都会修改本地服务响应 XML。这个过程运行良好,但我想知道是否有一种方法可以为每个服务说我创建 10 个响应并将它们部署为其中一台机器上的 tomcat 的战争,我的整个开发团队都指向这场战争,这将暴露相同服务并基于一个参数,它可以从 war 中捆绑的 10 个响应中发送一个响应。我不想为此付出任何努力。是否有开箱即用的工具提供这种功能。
3 回答
我处于相同的情况,测试团队想要测试不同的场景,这需要不时修改模拟服务。由于大多数测试团队的个人都是非技术人员,因此我总是为更新soapUI模拟套装而烦恼。为了避免这种情况,我创建了一个完全基于 Web 的应用程序来模拟使用 WSDL 的服务。由于它完全基于 Web,测试人员能够从他们的 Web 浏览器更改模拟服务。
该应用程序是在soapUI 框架之上编写的。它提供了自动生成虚拟响应 SOAP 消息和验证等功能。该实用程序还允许延迟模拟服务,这有助于性能测试。
我现在已将应用程序添加到 SourceForge。请在下面的链接中找到
http://sourceforge.net/projects/easymocker/
(Web Service Mocker 是一个易于使用、完全基于 Web 的 SOAP Web 服务模拟实用程序。该实用程序在 SOA 开发环境中的单元测试、组件集成测试和非功能性需求测试期间非常有用。)
如果您将内部架构稍微拆分一下,那会让您的生活更轻松。与其不灵活地让客户端代码依赖于外部 SOAP 服务,不如定义一个供内部使用的接口。您可以调用此 IServiceProxy 或类似的名称。
让客户端代码与该接口对话并使用依赖注入 (DI) 将其实例注入客户端。这意味着对于很多开发用途,您可以简单地用一个测试替身(例如模拟)替换这个接口。
如果您还必须有一个 SOAP 服务来验证您的 SOAP 堆栈是否按预期工作,请注意所谓的共享夹具测试气味。单个服务器上的共享“测试”服务将是一个共享夹具,它可能会给您带来比其价值更多的麻烦,因为开发人员会互相踩踏,这将是一个瓶颈。
更好的选择是在每个开发人员的机器上设置一个 SOAP 服务,或者,如果这不可能,则为每个开发人员提供一个专用服务。
您可以在优秀的xUnit 测试模式中阅读更多关于共享夹具和许多其他测试模式和反模式的信息。
我之前遇到过类似的问题
我们使用需要模拟服务的 WSDL 创建了一个模拟主机 Web 服务应用程序
将所有不同的响应存储在服务器的不同 XML 文件中
在 Web 服务代码中,我们只是在 Web 服务请求中放置具有唯一标识符的开关,在开关块中,我们发送来自存储在服务器中的特定 XML 文件的响应,该文件对应于唯一标识符
这是可能的,因为响应大多是静态的,并且会根据请求中的单个唯一标识符而有所不同
几乎没有一天的时间来构建和部署它,因为我们有方便的响应
希望这可以根据您的应用程序的上下文对您有所帮助