五六年前我测试了自己的第一个web服务。该服务是一个更大的系统重写的一部分。在这一阶段,我们用web服务集成了一个遗留主机应用和一个新的web平台。我们在测试办公方面的web服务有若干工具:SoapScope,一个国产的基于浏览器的测试工具,我们当中还有一些人直接编写Java或Ruby代码进行测试。
我还记得,那时候就在想,应该有更容易的测试方式才对。 那时候项目开展有两个星期了,当时我正在设法获取几个可以测试服务的Ruby库,项目组里面有人向我推荐了soapUI,那时候soapUI还很年轻——只有基本功能和性能测试能力,且还没有专业版。从我第一次使用soapUI开始,它就成为了我测试服务的……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
五六年前我测试了自己的第一个web服务。该服务是一个更大的系统重写的一部分。在这一阶段,我们用web服务集成了一个遗留主机应用和一个新的web平台。我们在测试办公方面的web服务有若干工具:SoapScope,一个国产的基于浏览器的测试工具,我们当中还有一些人直接编写Java或Ruby代码进行测试。我还记得,那时候就在想,应该有更容易的测试方式才对。
那时候项目开展有两个星期了,当时我正在设法获取几个可以测试服务的Ruby库,项目组里面有人向我推荐了soapUI,那时候soapUI还很年轻——只有基本功能和性能测试能力,且还没有专业版。从我第一次使用soapUI开始,它就成为了我测试服务的缺省选择。
现在,soapUI除了开源版本以外还有商业的专用版。它们提供了对WS、REST及以HTTP为基础的服务的支持,还有最近宣布的对JMS、AMF及JDBC的支持。在本文中,我们来看一个对WSDL服务进行功能和性能测试的例子。在将来的文章中我们还将讨论负载测试、web服务模拟以及与JUnit的集成。对于这些文章中所涉及的例子应用,我们都会考虑Atlassian JIRAsoap web服务。这是一个很好的、非凡的界面,也有一个公开的例子。
创建第一个项目
第一次打开soapUI时,不会有工程加载进来。要想创建新工程的话,右键单击Project图标然后选择New soapUI Project,如下图1所示:
图1:在soapUI中创建一个新项目。
第一步:在soapUI中创建一个新项目
这会弹出New soapUI Project的对话框,如下图2所示。输入项目的名字及所建项目的初始WSDL地址。如果WSDL变了,你可以在后面导入更新—不要以为拿到最后版本才能开始。在本例中,我会使用自己的JIRAweb服务实现以便可以执行测试。如果你要跟着做的话,可以将你的项目指向Atlassian的例子,该例子可在此处找到。
图2: 命名项目并导入初始WSDL。
第二步:命名项目并导入初始WSDL
你会看到几个复选框,让你选择在项目创建过程中由soapUI自动执行的任务。若是想全部都选上,欢迎,不过通常我只会选“为所有的操作创建样例请求吗?(Create sample requests for all operations?)”这个复选框。一旦完成新项目信息的输入,点击OK按钮。
图3:显示在项目下面的各种JIRA请求,有一个请求窗口在soapUI主工作区打开。
项目加载完成后,你应该看一看所有不同的请求的细节,这些细节均在图3中项目底下的WSDL定义中显示。要想观看这些请求细节,你可以展开请求并双击图中所示的“Request 1”按钮。应该就能打开soapUI主工作区的一个窗口。
第三步:显示在项目下面的各种JIRA请求,在soapUI主工作区打开一个请求窗口
图4:用绿色箭头提交一项服务请求。
要想手工提交请求给web服务,只需点击请求窗口中的绿色箭头—如图4所示。
第四步:用绿色箭头将请求提交给服务。
如果你对这个请求—addVersion请求执行上述动作,在没有做出任何改变的情况下,你会得到如下表1所示的包含有例外的响应:
表 1:例外:未传递合法参数数据。
以下是引用片段: … <faultcode>soapenv:Server.userException</faultcode> <faultstring>java.lang.NumberFormatException: Invalid boolean</faultstring> … |
这一例外会得到返回,有几个原因。首先,我们还没有登录进去。如果你向下滚动我们项目已有的请求,就会看到有一个登录请求。其次,请求中所有的数据值上面都有问号,正如下面的列表2所示。在提交任何请求之前,你应该想要输入测试值到看到出现有问号的那些字域中去。
列表2:缺省情况下,请求的值不会弹出。
以下是引用片段: … <in0 xsi:type="xsd:string">?</in0> <in1 xsi:type="xsd:string">?</in1> <in2 xsi:type="bean:RemoteVersion" > <id xsi:type="xsd:string">?</id> <name xsi:type="xsd:string">?</name> <archived xsi:type="xsd:boolean">?</archived> <releaseDate xsi:type="xsd:dateTime">?</releaseDate> <released xsi:type="xsd:boolean">?</released> <sequence xsi:type="xsd:long">?</sequence> </in2> … |
这时候,你可以浏览任何的请求;查看不同的请求参数;改变请求并人工运行来看那些响应。总而言之,你应该可以浏览web服务并与之交互。
在本文的后两部分中,我们将继续介绍下面的步骤。
作者
相关推荐
-
SAP收购CallidusCloud 与Salesforce竞争
一直被称为后台办公巨头的SAP现在似乎也想在前台办公大展拳脚。 最新的迹象是SAP收购CallidusClou […]
-
API设计如龙生九子 各不相同
IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下。
-
从头开始实现领域驱动设计
领域描述业务;它是驱动企业的概念和逻辑的集合。如果遵循领域驱动设计(DDD)这一本质,那么领域就是应用程序中最重要的组成部分。
-
走出思维定式 数据库/大型机现代化不再是问题
升级和改变组织的主要利益驱动应用的前景,正处于一个压倒性的位置,所以组织将要面临一系列的改变。