Web service其实就是一些暴露给网络(不管是内网还是外网)的程序的集合。而一个Web service的错误可能激怒的不仅仅是监视和维护着服务器的经理和管理员,还有调用了你的Web service的客户。要么把你的Web service做好,要么等着两边的指责。
在本文中,我会分析3款声称能验证你的Web services的正确性的工具:soapUI、TestMaker和WebInject。三款都是开源的,能免费下载并整合到你的下一个Web services项目中去。
需要注意的是:在使用这些工具之前你应该理解SOAP和HTTP协议。有些商业产品提供的是SOAP的“伪代码”。把那些难于阅读的XML翻译成易读的伪代码,能帮助新手和有经验的SOAP用户明白某个SOAP请求和响应之间发生的事情。这三款开源的Web service测试工具需要额外的工作,我推荐中等级别的开发人员使用,学习曲线会适当地比商业产品的长。
SoapUI1.6
我用的是1.6版本的soapUI,一款从Eviware而来的基于Java的工具。这个版本的soapUI在自己独立的UI里执行;新的1.7版本包括NetBeans、InterlliJ和Eclipse的插件。
用户界面遵循普遍的IDE架构设计:左边是导航面板,右边是内容面板,额外的属性面板放在底部。如果你用过类似Visual Studio的IDE的话,你会发现使用soapUI很顺手。
soapUI把工作组织成项目。每个项目主要由需要测试的接口来识别。在这里,接口是指另外一端的指向一个暴露了Web service方法的站点的URI(统一资源标识)。你可以很快地创建一个基本的项目结构;soapUI能接受一个文件的WSDL或者一个Web service终点传输的WSDL。
项目被有层次结构地组织,并且包含一个或多个TestSuite,TestSuite包含一个或多个TestCase,TestCase包含一个或多个测试步骤。真正的工作 – 发送请求、接受响应、分析结果、改变测试执行流程 – 发生在测试步骤这个层面。TestCase收集和组织需要执行某个对目标的特定操作的步骤。TestSuite汇总那些发生在某个特定区域的Web service的TestCase(例如订购一本书所需要的操作)。你可以通过右键点击项目树中的父节点并选择上下文菜菜单中的“New”菜单,来创建新的TestSuite、TestCase和测试步骤。
soapUI通过检查附加给测试响应的断言来判断测试是通过还是失败。有大量的断言可供选择,从“simple contains”测试 – 如果某个提供的字符串匹配则表示成功 – 到“XPath matching”,对响应信息执行复杂的XPath表达式匹配成功则表示测试通过。
测试步骤与程序代码很类似。目前,soapUI定义了6个测试步骤类型,最普遍的是请求(Request),发送一个HTTP请求给目标地址,并接收一个响应。可插入条件跳转测试步骤(Conditonal GoTo)来控制流程。一个或多个检查最近的响应的Xpath表达式是必不可少的。第一个表达式的成功会导致相关测试步骤分支的执行。
soapUI最强大的是Groovy测试步骤。Groovy是类Java的轻量级脚本语言。一个Groovy测试步骤可以是任何Groovy代码,也就是说基本上Groovy能做的事情,在测试步骤中也能做。测试步骤中的Groovy代码可以访问soapUI框架。例如,一个Groovy测试步骤可以通过JDBC读取数据库的信息,与前一个测试步骤的响应信息进行比较,并响应地修改执行的流程 – 甚至执行另外一个TestCase。
除了功能测试外,soapUI还能对Web service进行压力测试。每个压力测试包含一个或多个TestCase的执行,并且可以调整用于模拟各种各样的场景。你可以指定测试执行一定量的时间长度,或者一定量的迭代周期,指定以并发的方式执行还是随时间线性变化的方式。
当压力测试完成后,一个压力测试编辑器会为每个TestCase提供大量的统计数据:执行的次数,最大、最小、平均执行时间等。还可以在统计图表页以图表的形式查看这些数据。
让soapUI运行起来很容易;能很快地构建一个基本的项目和基本的测试。我对这个工具不满的地方是:在系统中没有上下文帮助,这让你在某些区域想知道可供选择的是什么变得困难。不管怎样,文档提供的还是挺不错的,只要持续使用,一些最初的理解上的混淆都会慢慢消失。
TestMaker
TestMaker是PushToTest的一个Web service测试工具。它需要Java1.4或以上。我把TestMaker4.4安装在Ubuntu Linux6.10,看Web service测试在Linux会是怎样的。安装很简单,一旦设置好JAVA_HOME环境变量后,TestMaker启动和运行都没有问题。
TestMaker的测试是用称为“测试代理”(test agents)的脚本来完成的。TestMaker提供一个“代理向导”(Agent Wizard)来读入WSDL定义并自动创建一个测试代理的基本结构。
需要指出的是:TestMaker不仅仅能测试Web services;它还能被用于测试Web应用程序。与TestMaker绑定在一起的还有一个网络监视工具,能监视浏览器和目标Web应用之间的HTTP通信,并且从交互过程中产生测试用例。然而,我没有体验那些功能,因为那与Web services的关系不大。
TestMaker的测试代理是用Jython(用Java写的Python)写的。这是把双刃剑。一方面,TestMaker的脚本可以变得很强大,拥有编程能力。Jython可以访问所有Java库,还有TestMaker提供的类和方法。TestMaker最大的库是TOOL(Test Object Oriented Library),它包括所有处理各种通讯协议的类:HTTP,HTTPS、SOAP、JDBC等。因此,你可以创建很精细的测试用例来处理任何Web service可能被调用的客户端应用。
另一方面,你需要掌握Jython来充分利用TestMaker,或者换句话说,你需要知道Python和Java。这未必是件坏事,但是它绝对意味着TestMaker的学习曲线要比其他工具陡峭。
由代理向导(Agent Wizard)创建的基本的测试代理(test agent)是很简单的:它知道目标服务的Web方法,并且执行不会出现错误,但是它没有真正执行任何请求、响应或者测试结果。我发现我需要检查一个测试代理例子的源代码来填写缺少的内容。
一旦你跨越了陡峭的学习曲线,就可以很容易地通过拷贝、粘贴和调整已有的代码来创建新的测试。另外,用户界面的用户体验很好。最开始启动TestMaker的时候,它会打开一个“QuickStart”窗口,在这里,你可以运行代理向导(Agent Wizard),直接跳到测试代理提供的例子,或者深入阅读它的文档。TestMaker的用户界面也是标准的多窗口IDE,左边是导航面板,右边是编辑区域,结果显示区域在右下端,类导航视图界面在左下端。
TestMaker可以在命令行执行,因此,你的测试代理(test agent)可以被自动化系统执行。另外,TestMaker还绑定了Apache Axis TCPMonitor工具,它让你可以监视某个端口的HTTP信息交换。这对于检查内部请求/响应对来决定如何编写Jython测试代码时会很有用。
商业的TestMaker版本添加了XSTest,提供性能测试和容量测试(Scalabillity testing),一个监视面板提供实时的结果,报告能力,还有TestNetWork – 能远程执行测试代理(test agent),因此,允许你搭建测试代理服务器来同时测试目标Web应用程序。
TestMaker的文档很好,工具的感觉像专业的应用。但是,很难掌握和精通。需要留出大量时间来阅读指南和分析那些例子的源代码。
WebInject
WebInject是一个极其轻量级的测试工具,能自动化测试Web services和Web应用程序。事实上,WebInject能测试XML/SOAP Web Service好像是最近增加的功能,早期版本不能很好地处理SOAP协议。
WebInject首先是一个用Perl写的命令行工具,虽然它的作者提供了一个简单的Perl/Tk用户界面,至少简化了测试的执行(对于某些人来说不愿意花太多的时间在命令行)。如果你不熟悉Perl,不要害怕。WebInject的使用可以不用任何Perl代码。
WebInject其实是一个执行和报告引擎。不像其他工具,它没有IDE类型的用户界面,因此测试的编辑必须在WebInject界面之外完成。这让人感觉WebInject没有那么专业,但是这不妨碍这个工具的使用,我可以想象WebInject的用户都有一个目录存储了各种测试“模板”。新建一个测试的时候,这些用户只需要打开他们最喜欢的编辑器,拷贝粘贴一些代码,调整一下就完成了一个新的测试用例。
当你运行WebInject时,它读入一个包含测试用例描述信息的XML文件。每个测试用例使用XML标签来描述。因此,一个简单的验证某个Web方法返回一个书名列表是否包含My Antnia的测试用例可能会像下面的代码所示:
id=”5”
description1 = “Verify My Antonia in list”
method=”post”
url=”Http://localhost:8080/axis/bkService.jsw”
postbody=”file=>soapListTest.xml”
posttype=”text/xml”
addheader=”SOAPaction: urn:getBookList”
verifypositive=”My Antonia”
/>
“id”属性不仅提供了测试用例的唯一名称,还标识了测试用例的执行顺序。其他的属性都是很直观易懂的(只要你细读它的文档)。赋给“postbody”属性的值告诉WebInject取当前目录名为“soapListTest.xml”的XML文件,并用它来组成SOAP请求的内容。
如果结果包含“My Antonia”字符串,则测试通过。WebInject提供了三个额外的“verifypositive”属性,每个的值都被作为正则表达式处理。这意味着你可以创建很复杂的验证说明 – 更确切地说,你可以构建一个测试步骤,只有通过4个正则表达式的过滤条件才算通过测试,每一个正则表达式对应一个“verifypositive”属性”。一个测试用例元素还可以包括4个“verifynegative”属性,功能与“verifypositive”属性”相反,如果任何一个正则表达式不匹配,则测试用例失败。
本质上,一个WebInject“项目”只是一连串的组成的XML文件。WebInject的简单结构让你可以非常快速地构建测试。但是你必须适当了解SOAP协议的机制,还需要一个工具帮助你捕获和产生HTTP/SOAP请求和响应。你需要那些请求信息来构建POST的正文,需要那些响应信息来创建合适的“verifypositive”和“verifynegative”的正则表达式来检查测试是否成功。我使用Eclipse的Web Service工具包来为WebInject获取请求和响应信息,一旦我掌握其中的诀窍,我觉得创建测试用例是很简单的事情。
对于每个测试用例的执行,WebInject的UI都会显示状态(通过或者失败)。你可以配置WebInject以提供完整的HTTP请求和响应信息,这是一个非常有用的功能,如果你想在测试用例失败时调试的话。
除此之外,UI还能产生实时的图表,为每一对请求和响应产生往返时间的统计图表,因此你可以使用WebInject构建和监视性能测试。而且WebInject还为MRTG(Multi Routing Triffic Grapher)提供插件,MRTG是一个网络监视和数据收集工具,允许你执行和捕获测试用例运行一段时间的结果,还能分析数据的模式和趋势。
WebInject的最大特点是它的简单性。一旦你掌握了WebInject的XML命令的诀窍,你可以快速地构建、修改和扩展测试用例。整个文档包含一个Web页面,这些信息可以在同一个地方读取到。但是,这个页面的文档有时候也会让你感觉不知道如何进一步测试。此外,你需要适当了解SOAP协议,还有额外的一个工具来提取Web Service响应信息的POST正文,以便创建测试用例。
为你效劳
这三款工具从快速和易用到复杂和强大的都有。如果你需要快速编码来测试你的Web service的话,WebInject是个符合逻辑的选择;你将在一个下午的时间里测试你的Web service。如果你需要高端的工具,让你可以创建强大的测试,可能扩展到其他的系统资源 – 文件系统、数据库、e-mail等的话,那么TestMaker是最佳选择。但是首先要看看Jython,准备好艰难的学习过程。
我喜欢中间的soapUI。由soapUI的向导创建的基本测试结构比起TestMaker创建的要容易让其丰满起来。而且如果我需要更复杂的测试,我还可以使用soapUI的Groovy。
如果说把这些产品与商业的Web service测试工具比较的话,我会说它们是大杂烩。它们虽然是免费的,并且对于简单到中等复杂程度的工作而言工作得不错;但是另一方面,它们比商业工具在易用性方面要弱些,你需要做一些复杂的工作,必须自己构建。TestMaker看起来比较接近商业工具,但是需要学习Jython意味着需要更长的时间来构建测试。soapUI看起来没有那么专业,但是可以让你不需要编程就能创建可用的测试。WebInject则是彻头彻尾的开发人员的工具。你需要懂得SOAP,才能很好地使用它,并且能力也不会有soapUI或TestMaker那么强大,因为它的测试用例依赖模板驱动。
分享到:
相关推荐
SoapUI是一款广受欢迎的开源Web服务测试工具,尤其在API测试领域中占据着重要的地位。它的版本号5.2.1表明这是一个较早但稳定版本,适用于Windows操作系统。本篇文章将深入探讨SoapUI的核心功能、如何使用以及它在...
SoapUI是一款非常流行的开源Web Service测试工具,支持SOAP和RESTful接口的测试。以下是关于SoapUI的一些详细知识点: 1. **功能介绍**: - **创建项目**:用户可以导入WSDL(Web Service Description Language)...
SOAPUI是一款强大的开源测试工具,专为Web Service的测试而设计,涵盖了功能测试、负载测试、性能测试和符合性测试等多个方面。它以SOAP(简单对象访问协议)和HTTP为基础,允许用户方便地创建、执行和分析SOAP和...
总的来说,SoapUI是一个强大且灵活的Web Service测试工具,无论你是开发者还是测试人员,都能从中受益。它可以帮助你快速验证Web Service接口的正确性,以及在不同负载情况下的稳定性,从而确保服务的质量和可靠性。...
5. **测试工具**:如SoapUI,这是一个流行的开源Web服务测试工具,不仅支持SOAP,也支持RESTful服务。它允许创建和执行测试套件,检查返回的数据,进行性能测试,以及进行安全测试。此外,它还提供了一个可视化的...
1. **SoapUI**:开源且功能强大的测试工具,支持SOAP和RESTful服务,提供图形化的测试场景创建,支持断言、数据驱动测试和性能测试。 2. **Postman**:主要用于RESTful API测试,但也可以处理SOAP请求。它提供了一...
SOAPUI是一款广泛使用的开源测试工具,它能够帮助开发者和测试人员高效地进行WebService接口的测试工作。在本篇文章中,我们将深入探讨SOAPUI 4.5.2版本的功能、用法以及其在测试过程中的重要性。 首先,让我们了解...
SoapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。SoapUI...
压缩包中的"Web Service通用客户端和测试工具"可能包含这些工具的源码和可执行文件。对于开发者而言,源码能提供深入理解工具工作原理的机会,同时也可能为自定义功能或集成到现有工作流中提供便利。可执行文件则...
soapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。...
SoapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测试。该工具既可作为一个单独的测试软件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。SoapUI...
- Eclipse WTP:Eclipse的Web Tools Platform插件集提供了一整套工具,包括Web Service的开发、调试和测试。 - .NET Framework:微软的.NET平台提供了构建Web Service的完整框架,如ASMX和WCF(Windows ...
此外,还需要服务器软件,如Apache Tomcat,它是一个开源的Web应用服务器。在这个实例中,服务器版本为7.0.34。 ### WebService服务端开发 服务端开发的主要目的是通过WebService技术提供服务接口,以便客户端可以...
XFire 是一个开源的、高性能的Java Web Service框架,它简化了创建和消费Web服务的过程。XFire在早期是Apache CXF的一部分,后来并入了CXF项目,提供了丰富的功能,包括SOAP、WS-*协议支持、自动WSDL生成以及与其他...
- Workshop Studio:Eclipse的Web Service插件,提供了一整套工具来创建、测试和部署Web Service。 在安装环境时,确保所有组件的版本兼容,以便于顺利开发。 2. **初探Java中的WebService** 创建Web Service的第...
- 在Web Service上右键选择“测试Web服务”,可以查看服务的WSDL文件和SOAP请求示例。 5. **发布服务**: - 发布后的服务可以通过浏览器访问其URL,展示服务的相关信息。 #### 四、使用NetBeans 构建Web Services...
Apache CXF是一个流行的开源框架,专门用于构建和部署Web Service。本实例将深入探讨如何使用CXF来开发Web Service。 首先,让我们了解CXF的核心功能。CXF支持两种主要的Web Service规范:SOAP(简单对象访问协议)...
可以使用SOAPUI工具对Web Service进行功能测试,验证其正确性和性能。 9. **安全性**: Web Service的安全性是重要的考虑因素,包括认证、授权、加密等。Java平台提供了JSSE(Java Secure Socket Extension)和...
AXIS 是 Apache 开源项目提供的一款强大的 Web Service 引擎,用于开发和部署 Web Service。在本文中,我们将深入探讨如何使用 AXIS 在 Tomcat 6.0.26 上进行配置,并详细介绍三种部署和调用 Web Service 的方法:...
SoapUI是一款简单易用的接口测试工具,该软件宗旨在于帮助高级计算机用户针对他们的WebService项目执行各种大规模的数据...soapUI是一个开源测试工具,通过soap/http来检查、调用、实现Web Service的功能/负载/符合性测