简介
SOAPUl是由标准的Java Swing开发的一个GUl自动化测试工具,从某种程度上说,它是JUnIT测试框架的扩展和衍生。SOAPUI工具提供了包含操作层面和模式层面的完整的WSDL覆盖程度分析,使到达每个元素的所有路径都被测试过了。它提供了测试重构能力,使用户可以随着WSDL的更新重构他们所有的测试。测试重构甚至还考虑到了更新过的WSDL会如何影响到XPath表达式。SOAPUl的需求管理功能可以将测试用例和需求有机地结合起来,其中需求可以被直接键入或者导入。SOAPUl可以直接从一个数据源得到测试数据。
SOAPUI根据WSDL生成SOAP数据包,手工填入参数后可以直接进行性能测试。SOAPUI能够捕捉SOAP请求和响应、创建测试请求、测试用例并且提供仿真的服务。
SOAPUI提供一个工具通过SOAP/HTTP来检查、调用、实现Web服务间的功能、负载、符合性测试,该工具既可作为一个桌面应用软件使用,也可利用插件集成到Eclipse、maven2.X、netbeans和intellij中使用。
特点
1.Groovy Script 支持SOAPUI
SOAPUI最强大的是Groovy脚本测试步骤。Groovy充分利用了工业标准JUnit框架,来简化单元测试的创建和使用过程。单元测试在Groovy中的应用集成了动态类型语言和静态类型语言的安全性。
一个Groovy测试步骤可以是任何Groovy代码,也就是说基本上Groovy能做的事情,在SOAPUI测试步骤中也能做。测试步骤中的Groovy代码可以访问SOAPUI框架。一个Groovy测试步骤可以通过JDBC读取数据库的信息,与前一个测试步骤的响应信息进行比较,并相应地修改执行流程,也可以执行另外一个TestCase。SOAPUI中使用Groovy脚本来编写断言,可以重用测试脚本,编写同一Groovy脚本代码可以重用到其它所有的测试用例里面。
2.灵活的属性传值模式
属性传递在SOAPUI中是一种TestSteps在属性容器之间传递属性,可以使用Xpath或XQuery表达式来指明属性传递源端和目的端,可以包含任意数目的属性传递。XPath/Xquery断言描述和属性传递使用同样的Saxon XPath/XQuery引擎。
SOAPUI可以采用多种方式来传递属性,这样可以在TestStep之间更加灵活地传递属性值。
3.SOAPUI中的Mock 服务
Mock是一个映射对象,它可以避免编写复杂的、不完整的、难以保持和难于理解的测试代码[]。使用Mock可以使许多有价值的代码单独测试,Mock可以隔离被测代码间的关联程度,Mock对象的出现可以简化测试结构,避免被测代码因环境问题而出现的意外污染,可以保证一个时间段测试代码的特性,并在被测代码出现问题时,及时通知测试人员。
SOAPUI实现了Mock服务,Mock服务可以从不同的WSDL文件中展现任意的虚拟操作MockOperations,同时也可分派其虚拟响应Mock Response,Mock服务可以直接在SOAPUI中运行或者通过命令行模式的MockServiceRunner来运行,它也可以调用包括SOAPUI本身在内的任意客户端。SOAPUI可以在TestStep模拟soap请求,来实现异步Web服务的测试。
基本测试框架
SOAPUI的核心对象模型定义了SOAPUl中所有的模型对象(工程、接口、操作等),是一个抽象接口并且是只读的。
SOAPUI集成了许多API函数和扩展的API,可以直接用在其它程序中。主要的类库工具包及其功能介绍如下:
1)com.eviware.SOAPUI.model.tree定义了树型模型TreeModel用于SOAPUI的navigator,它包含了SOAPUITreeNode,当前,针对增加新的核心模型的实现,SOAPUI并没有提供一个builder/factory机制。WSDL1.1的核心对象的实现core-implementation是硬编码到当前工作台的实现类。
2)com.eviware.SOAPUI.impl.WSDL.*
实现了核心对象模型WSDL/SOAP/HTTP-Binding包含核心对象模型的实现,每个实现类都在相应的配置文件的元素使用相应的XMLBeans来描述;此工具包还包括了所有模型对象元素实现行为和所有WSDL/SOAP相关支持类(如效验,导入等)。
3)com.eviware.S0APUI.impl.WSDL.teststeps.*
包含断言相关类TestStep的衍生类。
优缺点
优点
(1)SOAPUI工具适合QA和测试人员,而不需要开发人员使用编程来实现测试用例。它能够基于WSDL自动产生测试消息。
(2)SOAPUI能够直接引用外部的属性文件来简化测试步骤,通过建立断言SOAPUI可以进行XML模式效验和错误效验。
(3)SOAPUI可以用于压力测试,容易管理服务端点。
(4)SOAPUI提供方便的接口能够集成JBoss、Ant、XMLBean、ApacheTCPMon等多种工具。
(5)SOAPUI可以完成多种WebService的测试场景。
缺点
(1)S0APUI使用的是自己的Web服务客户端,它创建的测试消息不同于通常意义上的基于JAX或者其它的Web服务客户端的工作过程,S0APUI并不从WSDL中产生Java类,它也不处理Java对象的序列化和反序列化,这样的结果是客户端并不是像真正的Web服务消费者那样去调用Web服务。
(2)SOAPUI的RequestTransportRegistry类并不提供从外部增加新的协议的机制,它不支持JMS协议。
(3)SOAPUI中不能控制Mock服务的WSDL文件服务端点的URL,也就是说,如果需要WSDL请求在到达实际的Mock对象之前被其它对象处理,是无法控制的,此问题还有待于进一步的研究和分析。