SoapUI簡介
SoapUI是一個開源測試工具,通過soap/http來檢查、調用、實現Web Service的功能/負載/符合性測試。該工具既可作為一個單獨的測試軟件使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。
SoapUI是一個自由和開放源碼的跨平台功能測試解決方案。通過一個易於使用的圖形界面和企業級功能,SoapUI讓您輕松, 快速創建和執行自動化功能、回歸、合規和負載測試。在一個測試環境,SoapUI提供完整的測試覆蓋,並支持所有的標准協議和技術。
SoapUI 基於Java 開發,支持多個平台,安裝非常簡單。
SoapUI下載地址:https://www.soapui.org/,下載開源版SoapUI,SoapUI Pro是SoapUI的商業非開源版本
入門實例解析
使用的接口實例是中國電視節目表WEB服務
WSDL地址:http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl
Endpoint地址:http://ws.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx
通過案例講解,能夠掌握以下幾個方面的操作:
構建項目
1.打開SoapUI軟件>File>New SOAP Project,新建工程
2.填入工程名和WSDL地址,WSDL地址為:http://www.webxml.com.cn/webservices/ChinaTVprogramWebService.asmx?wsdl
構選上“Create Requests”項目會根據WSDL文件創建接口請求文件;構選上“Create TestSuite”就會給WSDL創建一個測試套件
3.點擊OK后就已經創建好一個工程了,自動添加WSDL里面有的接口,根據Soap 的版本不同提供了兩種接口,如下圖所示:
接口業務:
getAreaDataSet:獲得支持的省市(地區) 和分類電視列表
getTVstationDataSet:通過省市ID 或分類電視ID 獲得電視台列表
getTVchannelDataSet :通過電視台ID 獲得該電視台頻道列表
getTVprogramDataSet : 通過頻道ID 獲得該頻道節目列表
在此處需要注意的是:除getAreaDataSet接口不需要入參,最后三個接口是需要輸入參數的,接口getTVstationDataSet的請求中“?”表示要入參,如下圖所示:
若不入參,運行會出錯,會出現如下所示錯誤信息:
運行單個請求
1.選擇getAreaDataSet下的Request1,雙擊,點擊運行按鈕,就會出現右側面板中的結果,獲得到支持的省市(地區) 和分類電視列表,如下圖所示:
2.選擇getTVstationDataSet下的Request1,雙擊,把中間面板中的?替換成省市ID或分類電視ID18,點擊運行按鈕,就會出現右側面板中的結果,獲得電視台列表,如下圖所示:
3.選擇getTVchannelDataSet 下的Request1,雙擊,把中間面板中的?替換成電視台ID98,點擊運行按鈕,就會出現右側面板中的結果,獲得頻道列表,如下圖所示:
4.選擇getTVprogramDataSet 下的Request1,雙擊,把中間面板中的?替換成頻道ID292,點擊運行按鈕,就會出現右側面板中的結果,獲得該頻道節目列表
構建測試用例
1.創建測試套件:選擇項目“CTV”右鍵點擊“New TestSuite”,可輸入測試名,如下圖所示
2.創建測試用例Test case,選擇測試套件“TestSuite 1”右鍵點擊“New TestCase”,如下圖所示:
創建好之后,新建的TestCase中包含三個部分:

3.把請求添加到測試用例中:選擇一個請求,然后右鍵點擊“Add to TestCase”,然后在彈出窗口中選擇我們剛才新建的"TestSuite 1"即可,如下圖所示:
執行操作后,就已經創建好了一條測試用例,如下圖所示:
4.運行測試:打開TestCase窗口,點擊綠色運行按鈕即可,綠色表示運行成功,運行結果在右面板下方,如下圖所示:
5.增加檢查點
①在測試步驟中打開服務求請求,如下圖所示:
②點擊+號,添加檢查點,選擇Recently used>Contains>Add,如下圖所示:
③輸入檢查的內容,如下圖所示:
④然后運行服務請求,在“Assertions”窗口中可以看到“Contains - VALID”說明檢查點是有效的,如下圖所示:
接口之間傳遞參數,組織測試步驟
getAreaDataSet:獲得支持的省市(地區) 和分類電視列表
getTVstationDataSet:通過省市ID 或分類電視ID 獲得電視台列表
getTVchannelDataSet :通過電視台ID 獲得該電視台頻道列表
getTVprogramDataSet : 通過頻道ID 獲得該頻道節目列表
依次加入到TestCase 1 的測試步驟中去,然后組織測試步驟獲取“湖南金鷹卡通”的節目列表
具體的測試步驟為:
①獲得“湖南省”的分類ID “18 ”
②獲取“湖南省”類別中的“湖南電視台”ID :“98 ”
③獲取“湖南電視台”的頻道“湖南金鷹卡通 ”ID :“292 ”
④獲取“湖南金鷹卡通”頻道的節目列表
1.先將請求依次添加到用例中,如下圖所示:
2.添加入參操作,用於兩個服務請求間的交互,如下圖所示:
將服務請求getAreaDataSet 結果中的“湖南省”ID“18 ”作為服務請求getTVstationDataSet 入參
創建好之后,雙擊,彈出如下圖所示界面,輸入參數值:
右側面板上部分中輸入如下代碼,//並不是注釋,只是表相對路徑,(getAreaDataSet 結果)
declare namespace diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"; //diffgr:diffgram/Area/AreaList[22]/areaID[1]
右側面板下部分中輸入如下代碼(getTVstationDataSet 入參)
declare namespace web="http://WebXml.com.cn/"; //web:getTVstationDataSet/web:theAreaID[1]
點擊運行,即可看到是否成功,成功如下圖所示:
獲取上述代碼的方法:
上半部分getAreaDataSet 結果獲取:
下半部分getTVstationDataSet 入參獲取:
其它兩個交互方法一樣,稍微更改即可
將服務請求getTVstationDataSet結果中的“湖南電視台”ID“98 ”作為服務請求getTVchannelDataSet入參
右側面板上部分中輸入如下代碼(getTVstationDataSet 結果)
declare namespace diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"; //diffgr:diffgram/Station/TvStation[5]/tvStationID[1]
右側面板下部分中輸入如下代碼(getTVchannelDataSet 入參)
declare namespace web="http://WebXml.com.cn/"; //web:getTVchannelDataSet/web:theTVstationID[1]
獲取上述代碼的方法:
上半部分getTVstationDataSet結果獲取:
下半部分getTVchannelDataSet入參獲取:
將服務請求getTVchannelDataSet 結果中的“湖南金鷹卡通”ID“292 ”作為服務請求getTVprogramDataSet 入參
右側面板上部分中輸入如下代碼(getTVchannelDataSet結果)
declare namespace diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"; //diffgr:diffgram/Channe/TvChanne[4]/tvChannelID[1]
右側面板下部分中輸入如下代碼(getTVprogramDataSet入參)
declare namespace web="http://WebXml.com.cn/"; //web:getTVprogramDateSet/web:theTVchannelID[1]
獲取上述代碼的方法:
上半部分getTVchannelDataSet結果獲取:
下半部分getTVprogramDataSet入參獲取:
運行測試
1.整個測試步驟設置好之后,打開“TestCase 1”運行測試,全部綠色表示測試通過,如下圖所示:
2.在TestCase Log中還可以看到接口之間傳遞的參數值,如下圖所示:
3.運行結束后,再打開接口請求,可以看到請求顯示的就是所傳遞的值,如下圖所示:
4.還可以在請求中設置檢查點,來檢查是否通過,檢查點的設置方法已在構建測試用例中介紹