技术开发 频道

开源的Web Service测试工具

    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标签<case…/>来描述。因此,一个简单的验证某个Web方法返回一个书名列表是否包含My Antnia的测试用例可能会像下面的代码所示:

<case
   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“项目”只是一连串的<case…/>组成的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那么强大,因为它的测试用例依赖模板驱动。

0
相关文章