首页 > 代码库 > 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即可使用。
- 专业版本
- 相对于普通版本有更多更灵活的测试步骤可以添加。
- 专业版本需要申请一个免费试用的License才可使用。试用License的有效期是两周。License申请很简单,只需要在”soapUI Pro License”对话框中单击”Apply for Trial ”,然后填上邮箱、姓名和公司名称,一分钟左右邮箱中就能收到试用的License.但是,一个邮箱地址只能申请一个License,即两周的试用期过后,不能再使用之前申请时使用的License再次申请。
- 商业的非开源版本
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 soapUI的TestSuite功能
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”的节目列表。
测试步骤:
- 获取“中央电视”的分类ID”-1”
- 获取“中央电视”类别中的“中央电视台”ID:“39”
- 获取“中央电视台”的频道“CCTV-1”ID:”606”
- 获取“CCTV-1”频繁的节目列表
我们需要将服务请求getAreaDataSet结果中的“中央电视”ID“-1”作为服务请求getTVstationDataSet入参,右键点击getAreaDataSet-Request 1,选择Insert Step――Property Transfer,如图:
这个Property Transfer用于两个服务请求间的交互,我们将其命名为:“AreaTransferStation”
Source中我们选择getAreaDataSet-Request 1的Response,Target中我们选择getTVstationDataSet-Request 1的Request,并通过脚本选择服务请求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