標籤:style blog http java color 使用
一.概述
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