使用 SOAPSimulator 进行 Web 服务模拟简介:实践教程





3.00/5 (2投票s)
了解如何在端点不可用时模拟Web服务,以实现快速的SOA开发。
引言
通常,公司会开展SOA项目,以实现企业内部以及与外部贸易伙伴之间的系统集成。可重用服务是成功实施SOA的基石。在SOA项目中,一旦生产者服务构建完成,开发者就可以开始实现消费者服务,测试人员也可以开始构建测试场景。如果生产者服务仍在开发中且不可用进行请求-响应交互,开发和QA团队将严重受阻,无法开发消费者代码。服务模拟——在生产者服务实现之前就能模仿其功能的能力——使消费者开发者和测试人员能够并行开展工作,而不必等待服务实现完成。服务模拟还使用户能够提供一种便携的替代方案,避免构建昂贵的参考环境。
在本动手实践教程中,我们将使用Crosscheck Networks的SOAPSimulator™来学习服务模拟技术。
场景和设置概述
本教程的设置模拟了一个真实的SOA开发场景,其中需要开发和部署一个生产者Web服务,如下图所示。首先设计了一个名为Factorial(int n)的服务,用于计算数字n的阶乘。在此设计阶段,使用.NET Web Matrix以C#定义了此服务的接口存根——具有清晰的输入和输出。设计阶段编写或生成的WSDL被移交给测试团队,测试团队将此WSDL导入SOAPSimulator,用于服务模拟。通过一个易于使用的简单点选界面,SOAPSimulator被配置为模拟SOAP请求-响应对。然后,如上图所示,在端口8000上启动了Factorial服务的模拟。

此时,客户端开发团队和测试人员可以开始分配的任务。使用Crosscheck Networks的SOAPSonar™作为客户端SOAP测试工具,测试人员可以创建许多测试用例,并将SOAPSimulator作为目标模拟服务。服务模拟为测试人员提供了必要的独立性,使其能够在不依赖实际Factorial服务可用的情况下开始构建测试用例。同时,开发团队正忙于编写Factorial服务的代码。一旦测试人员在SOAPSonar中完成了测试用例的构建,开发者就宣布他们的Factorial服务已开发完成并准备好进行测试。令开发者惊讶的是,测试团队可以通过简单地将测试用例指向其Factorial服务的生产版本来立即准备好测试服务,如上图最后一个圆圈所示。使用SOAPSimulator进行服务模拟所带来的效率是显而易见的,因为QA测试用例的开发与服务开发并行进行,从而节省了大量时间和资源。
要构建上述SOA开发场景,需要以下组件:
-
Microsoft .NET Web Matrix:此安装程序包含用于构建Web服务的IDE和轻量级Web服务器。下载并安装Web Matrix。
-
Web服务文件:下载并解压缩此文件。它包含Design-WS.asmx和Production-WS.asmx。第一个文件是用于计算阶乘的服务存根,但没有实现。第二个文件包含实际计算阶乘数的实现。
-
SOAPSimulator下载:下载并安装SOAPSimulator,一个服务模拟产品。此安装程序还包含一个轻量级的SOAPSonar客户端测试工具。
组件可以安装在资源适中的Windows 2000/XP/Vista机器上。现在我们将按照步骤1-5来构建上述场景。
步骤1:在Web Matrix中加载设计时服务存根
在本教程的第一步中,我们将加载一个正在使用.NET Web Matrix开发的C#程序,我们之前已经安装了它。要开发的Factorial(int n)服务用于计算数字的阶乘。然而,到目前为止,只设计了服务存根,它只是简单地返回输入整数n的值。要将服务加载到Web Matrix中,请执行以下任务:
-
转到:开始 > 所有程序 > Microsoft ASP .NET Web Matrix > ASP .NET Web Matrix。
-
将出现一个提示屏幕。点击取消。
-
在Web Matrix中点击开始按钮
来运行Web服务。如下图所示,将提示您在端口80上启动应用程序。如果您的计算机上该端口已被占用,您可以更改端口。请确保您的本地防火墙已关闭。
-
将出现一个带有操作名称Factorial的Web浏览器。您可以点击操作名称并开始试验这个简单地回显输入值的Web服务。
在步骤1结束时,您已经成功启动并运行了.NET Web Matrix以及Design-WS.asmx Web服务,该服务可以从浏览器调用。
步骤2:将设计时WSDL加载到SOAPSimulator
在本教程的第二步中,我们将加载与我们在步骤1中加载到Web Matrix的设计时服务相关的WSDL。在后续步骤中,我们将使用SOAPSimulator根据设计时WSDL文件构建服务模拟。要将WSDL加载到SOAPSimulator,请执行以下任务:
-
转到:开始 > 所有程序 > Crosscheck Networks > SOAPSimulator > SOAPSimulator。
-
在“捕获WSDL”字段中输入https://:80/Design-WS.asmx?WSDL。请注意,WSDL是从Web Matrix服务器的端口80检索的。如果Web Matrix监听的是不同的端口,则需要输入该端口而不是端口80。下图显示了SOAPSimulator中的WSDL导入屏幕:
-
将默认端口从80更改为8000。您可以点击测试端口可用性按钮来检查SOAPSimulator是否可以使用该端口进行监听。点击提交按钮
来保存您的更改。
在步骤2结束时,您已经加载了将在SOAPSimulator中模拟的WSDL,并且已经配置了客户端(消费者)应用程序SOAPSonar将用于调用Factorial服务的监听器。
步骤3:在SOAPSimulator中配置SOAP请求-响应对
在本教程的第三步中,我们将配置SOAPSimulator以查找SOAP请求并返回SOAP响应。在这里,我们将定义传入请求的标准并将其映射到出站响应。执行以下任务以在SOAPSimulator中设置请求-响应对:
-
点击左侧导航面板中的项目树,并选择Factorial_1模拟,如下图所示。在树节点n下输入值5。点击提交按钮
来保存您的更改。
-
点击右侧面板中的响应定义,并在FactorialResult字段中输入值120。这是请求值n=5的阶乘结果。点击提交按钮
来保存您的更改。
-
右键单击项目树中的Factorial_1,然后从菜单中选择克隆,如下图所示。现在您可以设置第二个请求-响应对Factiorial_2,并带有一些示例值,例如n=6和FactorialResult=720。点击提交按钮
来保存您的更改。
在步骤3结束时,您已经在SOAPSimulator中设置了请求和响应值,并学会了如何快速克隆模拟以创建其他请求-响应对。现在您可以运行您的模拟了。
步骤4:运行模拟
在本教程的第四步中,我们将运行SOAPSimulator,并使用SOAPSonar(它将充当客户端)向其发送请求。执行以下任务来运行您刚刚创建的模拟:
-
点击开始模拟按钮
来启动模拟。将出现模拟控制窗口,如下图所示。SOAPSimulator现在已准备好接收输入值,并将显示请求-响应统计信息。
-
转到:开始 > 所有程序 > Crosscheck Networks > SOAPSonar Personal Edition 3 > SOAPSonar 来启动SOAPSonar,它将充当Web服务客户端并向SOAPSimulator发送请求。
-
在SOAPSonar的捕获WSDL字段中输入https://:8000/Design-WS.asmx?WSDL,如下图所示。请注意,端口设置为8000,并且WSDL是从SOAPSimulator监听器而不是Web Matrix检索的。
-
在上方显示的项目树中选择Factorial_1,并输入n=5。点击将当前请求发送到服务器按钮
将SOAP请求发送到SOAPSimulator。正如预期的那样,将返回120的值,如上方的响应面板所示。右键单击Factorial_1并选择克隆来添加测试用例Factorial_2和Factorial_3。分别设置测试用例的附加值n=6和n=10。除了n=5和n=6之外,发送到SOAPSimulator的所有值都将触发失败。查看SOAPSimulator模拟控制中的统计信息,以检查通过/失败的请求-响应对。点击事务选项卡以查看事务详细信息。
在步骤4结束时,您已成功使用SOAPSimulator运行了多个模拟,并在模拟控制选项卡中评估了SOAP请求-响应对。
步骤5:加载与运行生产服务
在本教程的第五个也是最后一步中,我们将使用在SOAPSonar中编写的测试用例,并将这些测试用例指向一个名为Production-WS.asmx的生产服务。当针对SOAPSimulator运行带有请求值n=5、n=6和n=10的测试用例时,前2个值通过。但是,第三个值失败,因为没有为n=10编写模拟。当测试用例针对一个实际计算阶乘值而不是仅仅模拟它们的生产系统执行时,将返回计算出的响应FactorialResult=3628800。在SOAPSonar中执行以下任务,将测试用例指向生产系统:
-
如下图所示,在SOAPSonar的请求面板中,在发送当前请求到服务器按钮
旁边的URI字段中,将值更改为https://:80/Production-WS.asmx。这将SOAPSonar测试用例指向生产服务,其中Factorial(int n)服务已完成编码,执行实际的阶乘计算,而不是像SOAPSimulator那样返回一个固定值。如果Web Matrix监听的是不同的端口,则需要输入该端口而不是端口80。
-
通过点击发送当前请求到服务器按钮
来运行每个测试用例。正如预期的那样,所有测试用例都返回了验证生产服务确实在计算阶乘值的值。您可以更改值或添加更多测试用例来检查生产服务。
在步骤5结束时,您已成功针对一个完全功能的生产服务运行了多个事务,该服务可以计算阶乘值。您编写的测试用例不需要服务可用或已完成,因为测试编写过程是在SOAPSimulator上执行的,SOAPSimulator模拟了实际服务进行了一系列SOAP请求-响应对。
结论
SOA部署的成功与否取决于它如何通过降低成本或产生新收入来有效解决紧迫的业务问题。SOA部署的成本效益通过服务重用以及服务集成形成复合应用程序的易易性来驱动。SOA部署的重用前提所产生的相互依赖意味着Web服务消费者必须等待生产者服务准备好并可用。SOA固有的消费者-生产者模型意味着消费者开发者和测试人员可能会因生产者服务的可用性或可访问性延迟而停滞不前。通过服务模拟提供一套替代的模仿服务可以消除这些障碍。
在本文中,我们学习了如何通过SOAPSimulator快速设置模拟服务。我们构建了不变且独立于生产服务的测试用例。一旦服务完成,这些测试用例就被用来测试生产服务。测试用例的开发任务与服务开发并行进行。这种并行开发可以在SOA开发工作中带来显著的效率提升。
关于Crosscheck Networks
Crosscheck Networks’使命是提供用于测试、扫描和模拟企业Web服务的各种产品。Crosscheck Networks的产品为QA专业人员、安全人员和合规官提供了关于其面向服务架构(SOA)的功能完整性、可伸缩性、安全性和互操作性合规性的必要信息。通过SOAPSonar和SOAPSimulator——行业领先的全面SOA测试产品——IT专业人员可以做出更明智的决策,使他们的公司能够遵守企业质量和监管界限。SOAPSimulator是行业首创的、易于使用的独立Web服务模拟器,可以部署在台式机或服务器上,用于模拟无法访问或不可用的服务。SOAPSimulator还提供了一个“即插即用参考系统”,消除了冗余的IT基础设施。SOAPSimulator非常适合那些认真对待通过量化和衡量最佳实践来治理其SOA的企业。立即访问Crosscheck Networks。