首页 > 代码库 > SoapUI 使用手册

SoapUI 使用手册

 一.概述

1.1 soapUI的介绍

由于 Web 服务是被程序调用的, 一般不会提供界面让最终用户或测试人员直接使用,在 SoapUI 等工具出现之前,测试人员不得不自己编写程序来测试它, 这就要求测试人员花费很大的精力了解底层的接口,调用关系和详细的协议,导致他们不能把注意力集中到测试中。 

soapUI是当前比较简单实用的开源Web Service 测试工具,提供桌面应用程序和IDE插件程序两种使用方式。

soapUI通过SOAP(Simple Object Access Protocol)/HTTP(Hypertext Transfer Protocol)来调用Web Service,从而实现对Web Service 的功能、负载、符合性测试。不仅可以测试基于SOAP的WEB服务,还可以测试基于REST风格的WEB服务。

SoapUI基于Java开发,支持多个平台,开源的,安装非常简单。能够快速构建项目和组织测试用例是该工具的一大特性。读者可以到 SoapUI的 官方网站下载一个安装包 ( 本文使用的是 Window 版本 3.0.1),直接安装即可。在该安装包中,包括了一个 SoapUI 所需要的 JRE1.6 版本。安装完毕以后,读者需要设置 JAVA_HOME 变量指向到相应的 JRE 目录,同时修改 PATH 变量,将 JRE1.6 的 bin 目录添加进去。

1.2 soapUI的版本说明

soapUI有普通版本和专业版本。

  • 普通版本

可以实现一般的功能,不需要申请License即可使用。

  • 专业版本
  1. 相对于普通版本有更多更灵活的测试步骤可以添加。
  2. 专业版本需要申请一个免费试用的License才可使用。试用License的有效期是两周。License申请很简单,只需要在”soapUI Pro License”对话框中单击”Apply for Trial ”,然后填上邮箱、姓名和公司名称,一分钟左右邮箱中就能收到试用的License.但是,一个邮箱地址只能申请一个License,即两周的试用期过后,不能再使用之前申请时使用的License再次申请。
  3. 商业的非开源版本

 

1.3 soapUI网站信息

SoapUI的网站信息如下:

soapUI的官方网址为:http://www.soapui.org/

soapUI的下载地址为http://sourceforge.net/projects/soapui/files/

 

二.安装

2.1安装过程

         安装过程非常简单,省略。需配置JDK.

 

三.使用

3.1 soapUI基本操作

3.1.1创建工程

1. 启动soapUI,右键单击左侧导航树中的Project,选择New soapUI Project(Ctrl-N)

 

2. 系统弹出”New soapUI Project”对话框,如下图:

我们这里以“中国电视节目预告Web服务”:http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl为例,新建WSDL项目。

输入项目名称:ChinaTV

WSDL:http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl

 

其中WSDL可以是URL也可以是WSDL的静态文件。

默认选上:  

Create sample requests for all operations?(说明:为每个接口创建一个请求的例子)

 

3. 加载

 

 

 

3.1.2  单个服务的请求

SoapUI工具会解析WDSL文件获取服务接口,创建请求。如图,该服务提供8个接口,并根据soap的版本不同提供两种。

 

点击展开“getTVstationDataSet”的Soap请求“Request 1”:

 

我们看到的是服务请求Soap消息,其中”?”问号代表的是入参,将其修改为请求入参值“-1”(本实例中,-1代表中央电视),然后点击图标,获得请求结果,如图:

 

我们看到返回的soap消息及其中的数据。

 

 

3.1.3 保存工程

      保存后的工程的格式为.xml的格式的文件,以project名称+“- soapui-project.xml”命名。

 

         保存所有工程

                            如果要一次保存soapUI左侧导航树中的所有工程的话,请直接单击工具栏中的” ”.

         保存所有工程并退出

                       如果要一次保存soapUI左侧导航树中的所有工程,并且退出soapUI的话,点击菜单”File”--“Exit without saving”.

         保存单个工程

                    要保存单个工程时,请右键单击需要保存的工程的名称,在快捷菜单中选择“Save Project”。如果要另存为工程,则选择“Save Project As”.

 

         工程命名规则:项目名称-soapui-project.xml

 

3.1.4  删除工程

                如果要删除某个工程,右键工程名称,选择“Remove”

     

3.1.5 导入工程

如果要导入之前保存过但已经从soapUI的工程导航栏中删除的工程。选择菜单”File”—“Import Porject”.

 

3.2  soapUITestSuite功能

3.2.1 构建测试用例

选择项目“ChinaTV”并右键,选择“New TestSuite”,构建一个测试套件,如下图:

 

然后,在请求getTVstationDatsSet的”Request 1”右键,选择“Add  To TestCase”,新建TestCase并将服务请求加入到TestCase中:

 

这样我们就拥有了第一个测试用例:如下图

 

因为上述过程中已经设置了服务请求入参,所以这里我们双击TestCase1点击可以直接运行,如图:

 

我们看到了“绿条”,这表示运行通过。

 

3.2.2 增加检查点

如图,打开服务请求getTVstationDataSet――Request 1 ,点击,添加检查点:

 

检查点有多种类型,这里我们选择“Contains”,并输入检查点“中央电视台”:

 

我们运行服务请求getTVstationDataSet――Request 1,如图:

 

可以看到检查点是有效的:Contains-VALID.

 

3.2.3组织测试步骤

将getAreaDataSet(获得支持的省市、地区和分类电视列表)、

getTVstationDataSet(通过省市ID或分类电视ID获得电视台列表)、

getTVchannelDataSet(通过电视台ID得该电视台频道列表)、

getTVprogramDataSet(通过频道ID获得该频道节目列表)依次加入到TestCase1的测试步骤中去,然后组织测试步骤获取“CCTV-1”的节目列表。

 

测试步骤:

  1. 获取“中央电视”的分类ID”-1”
  2. 获取“中央电视”类别中的“中央电视台”ID:“39”
  3. 获取“中央电视台”的频道“CCTV-1”ID:”606”
  4. 获取“CCTV-1”频繁的节目列表

 

我们需要将服务请求getAreaDataSet结果中的“中央电视”ID“-1”作为服务请求getTVstationDataSet入参,右键点击getAreaDataSet-Request 1,选择Insert Step――Property Transfer,如图:

 

这个Property Transfer用于两个服务请求间的交互,我们将其命名为:“AreaTransferStation”

 

Source中我们选择getAreaDataSet-Request 1Response,Target中我们选择getTVstationDataSet-Request 1Request,并通过脚本选择服务请求getAreaDataSet返回结果Soap消息中节点(AreaList[4])中(areaID[1])的值传递给服务请求getTVstationDataSet作为入参(theAreaID[1])的值。

 

来自:

 

同样的操作步骤,我们组织好其他几个服务请求间的交互,就组织完成一个完整的测试步骤,最后我们运行TestCase,看到全部的运行结果:

 

 

备注:

AreaTransferStation

declare namespace diffgr="urn:schemas-microsoft-com:xml-diffgram-v1";

//diffgr:diffgram/Area/AreaList[4]/areaID[1]

 

declare namespace web="http://WebXml.com.cn/";

//web:getTVstationDataSet/web:theAreaID[1]

 

StationTransferChannel

declare namespace diffgr="urn:schemas-microsoft-com:xml-diffgram-v1";

//diffgr:diffgram/Station/TvStation[1]/tvStationID[1]

 

declare namespace web="http://WebXml.com.cn/";

//web:getTVchannelDataSet/web:theTVstationID[1]

 

ChannelTransferProgram

declare namespace diffgr="urn:schemas-microsoft-com:xml-diffgram-v1";

//diffgr:diffgram/Channe/TvChanne[1]/tvChannelID[1]

 

declare namespace web="http://WebXml.com.cn/";

//web:getTVprogramDateSet/web:theTVchannelID[1],web:theDate[1]

 

3.3 soapUI模拟服务器

soapUI模拟服务器端时,是供其他接口调用的,并能给调用它的接口提供所需要的结果。

sopaUI模拟服务器主要是MockService功能,因此,如果要模拟服务器端,在创建工程时,在“New soapUI Project”对话框中一定要选择“Create MockService”。

3.4 soapUI模拟客户端

soapUI模拟客户端,即作为soapUI作为消息发送方,将请求消息发送到地址栏中的地址,并接收响应结果。

soapUI模拟客户端主要是”Request”功能,因此,在创建工程时,在“New soapUI Project”对话框中一定要选择”Create Requests”项。

 

四.其它功能介绍

4.1 web service性能测试

soapUI可以通过测试套中的测试用例做负载测试,用以检查Web Service性能。

 

1.右键单击要执行性能测试的测试用例,例如:“Test Case1”,如图:

 

 

2.在快捷菜单中选择“New LoadTest”,如上图红色框。系统显示下图对话框:

 

3.在“New LoadTest”中输入负载测试的名称。也可以保持默认值。

4.单击“确定”。右侧界面显示创建的负载测试界面,如下图:

 

图中说明:

Threads:并发线程数

Strategy:并发策略,请选择“Simple”

Test Delay:请求间的时延。

Limit:运行时间限制。

 

5.为了使soapUI能够统计出成功的请求数和失败的请求数,需要给负载测试增加断言。如添加检查点,添加Not SOAP Fault等。

6.单击“LoadTest”界面的工具栏中的“”为负载测试设置参数选项。如下图:

 

7.单击工具栏中的“”运行负载测试。

运行结果,需要关注的参数包括:

l  cnt:发送的总请求数

l  tps:每秒的请求数

l  err:错误请求数

 

4.2 设置抓包工具

在soapUI上设置抓包工具TcpMon前,先在本地安装好TcpMon工具。

TCPMon相当于一个中转站,他可以设定接收的端口,目标的端口;

功能:可以拦截客户和服务之间的HTTP请求和HTTP相应信息,并查看;TCPMon是apache下的一个项目,下载地址:http://ws.apache.org/commons/tcpmon/download.cgi。

 

1.选择“File”—Preferences.系统会弹出以下界面:

 

2.在导航树中选择“Tools”,界面右侧显示“Tools”项目的设置参数。

3.单击右侧的“Apache TcpMon”后的“Browser”,选择安装好的TcpMon工具的安装目录。

4.单击OK。

5.选择“Tools”-“Launch TcpMon”启动抓包工具。

 

4.3 抓包工具使用介绍

抓包流程:

TcpMon工具在抓包过程中扮演的是一个代理的角色消息流程如下:

l  消息发送方先将请求消息发送给TcpMon

l  TcpMon接到请求消息后再转发给目标主机。

l  目标主机接到请求消息后,将响应消息返回给TcpMon.

l  TcpMon接到响应消息后,再将响应转发给发送方主机。

 

1.在菜单栏选择“Tools”—“Launch TcpMon”,如下图:

 

2.设置好监听端口和目标主机的IP地址、端口号。

3.单击“Add”.

一般来说客户端想要请求web服务,则必须要将端口号设成9876,但是如果有了TCPMon,则客户端可以将端口号设置成8080. 这样TCPMon就可以监听8080端口,接收到HTTP请求后显示在界面上,然后再把请求发送到9876端口,并再次监听9876端口发回的HTTP响应,并显示在界面上;

 

4.如果要停止抓包,请单击“Stop”.

 

五.可使用的WebService地址

1.中央电视台节目WebService

http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl

2.天气预报WebService

http://www.webservicex.net/WeatherForecast.asmx?wsdl

3.查询手机归属地WebService

http://fy.webxml.com.cn/webservices/EnglishChinese.asmx?wsdl