SouapUI介面測試之入門示例
- 2019 年 10 月 10 日
- 筆記

SouapUI
一、SouapUI簡介
SoapUI是一個開源測試工具,通過soap/http來檢查、調用、實現Web Service的功能/負載/符合性測試。該工具既可作為一個單獨的測試軟體使用,也可利用插件集成到Eclipse,maven2.X,Netbeans 和intellij中使用。
SoapUI是一個自由和開放源碼的跨平台功能測試解決方案。通過一個易於使用的圖形介面和企業級功能,SoapUI讓您輕鬆, 快速創建和執行自動化功能、回歸、合規和負載測試。在一個測試環境,SoapUI提供完整的測試覆蓋,並支援所有的標準協議和技術。
SoapUI 基於Java 開發,支援多個平台,安裝非常簡單。
SoapUI下載地址:https://www.soapui.org/,下載開源版SoapUI,SoapUI Pro是SoapUI的商業非開源版本,下載後next安裝即可使用,這裡不會安裝的小夥伴請自行百度。
二、SouapUI入門示例
使用的介面實例是中國電視節目表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創建一個測試套件

填入工程名和WSDL地址
3.點擊OK後就已經創建好一個工程了,自動添加WSDL裡面有的介面,根據Soap 的版本不同提供了兩種介面,如下圖所示:

已創建好的工程
介面業務解析:
getAreaDataSet:獲得支援的省市(地區) 和分類電視列表
getTVstationDataSet:通過省市ID 或分類電視ID 獲得電視台列表
getTVchannelDataSet :通過電視台ID 獲得該電視台頻道列表
getTVprogramDataSet : 通過頻道ID 獲得該頻道節目列表
在此處需要注意的是:除getAreaDataSet介面不需要入參,最後三個介面是需要輸入參數的,介面getTVstationDataSet的請求中「?」表示要入參,如下圖所示:

參數說明1
若不輸入參數,運行會出錯,會出現如下所示錯誤資訊:

參數說明2
三、運行單個請求
1.選擇getAreaDataSet下的Request1,雙擊,點擊運行按鈕,就會出現右側面板中的結果,獲得到支援的省市(地區) 和分類電視列表,如下圖所示:

參數說明3
2.選擇getTVstationDataSet下的Request1,雙擊,把中間面板中的?替換成省市ID或分類電視ID10,點擊運行按鈕,就會出現右側面板中的結果,獲得電視台列表,如下圖所示:

輸入參數
3.選擇getTVchannelDataSet 下的Request1,雙擊,把中間面板中的?替換成電視台ID66,點擊運行按鈕,就會出現右側面板中的結果,獲得頻道列表,如下圖所示:

參數查詢
四、構建測試用例
1.創建測試套件:選擇項目「ChinaCTV」右鍵點擊「New TestSuite」,可輸入測試名,如下圖所示

構建測試套件
2.創建測試用例Test case,選擇測試套件「TestSuite 1」右鍵點擊「New TestCase」,如下圖所示:

創建測試用例
可以看到測試用例創建好之後,新建的TestCase1中包含三個部分:
測試步驟:Test Steos
負載測試:Load Tests
安全測試:Security Tests

測試用例目錄
3.把請求添加到測試用例中:選擇一個請求,然後右鍵點擊「Add to TestCase」,然後在彈出窗口中選擇我們剛才新建的"TestSuite 1"即可,如下圖所示:

請求寫入測試用例
執行操作後,就已經創建好了一條測試用例,如下圖所示:

添加成功後的請求
4.運行測試:打開TestCase窗口,點擊綠色運行按鈕即可,綠色表示運行成功,運行結果在右面板下方,如下圖所示:

運行測試用例
5.增加檢查點
①在測試步驟中打開服務求請求,如下圖所示:

打開服務請求
②點擊+號,添加檢查點,選擇Propert Content Recently used>Contains>Add,如下圖所示:

添加檢查點
③輸入檢查的內容,如下圖所示:

輸入檢查內容
④然後運行服務請求,在「Assertions」窗口中可以看到「Contains - VALID」說明檢查點是有效的,如下圖所示:

查看檢查點是否有效
五、介面之間傳遞參數,組織測試步驟
getAreaDataSet:獲得支援的省市(地區) 和分類電視列表
getTVstationDataSet:通過省市ID或分類電視ID獲得電視台列表
getTVchannelDataSet :通過電視台ID獲得該電視台頻道列表
getTVprogramDataSet: 通過頻道ID獲得該頻道節目列表
依次加入到TestCase 1 的測試步驟中去,然後組織測試步驟獲取「湖南金鷹卡通」的節目列表,具體的測試步驟為:
①獲得「廣東省」的分類ID 「19 」
②獲取「廣東省」類別中的「廣東電視台」ID :「55 」
③獲取「廣東電視台」的頻道「廣東新聞頻道 」ID :「337 」
④獲取「廣東新聞頻道」頻道的節目列表
1.獲得「廣東省」的分類ID 「19 」
.先將請求依次添加到用例中,如下圖所示:

批量加入測試用例
.添加入參操作,用於兩個服務請求間的交互,如下圖所示:將服務請求getAreaDataSet 結果中的「廣東省」ID「19 」作為服務請求getTVstationDataSet 入參

入參
.創建好之後,雙擊,彈出如下圖所示介面,輸入參數值:

輸入參數值
.右側面板上部分中輸入如下程式碼,//並不是注釋,只是表相對路徑,(getAreaDataSet 結果)
declare namespace diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"; //diffgr:diffgram/Area/AreaList[23]/areaID[1]
.右側面板下部分中輸入如下程式碼(getTVstationDataSet 入參)
declare namespace web="http://WebXml.com.cn/"; //web:getTVstationDataSet/web:theAreaID[1]
.點擊運行,即可看到是否成功,成功如下圖所示:

運行結果
.獲取上述程式碼的方法:
上半部分getAreaDataSet 結果獲取:

getAreaDataSet 結果獲取
下半部分getTVstationDataSet 入參獲取:

getTVstationDataSet 入參獲取
2.獲取「廣東省」類別中的「廣東電視台」ID :「55 」
.將服務請求getTVstationDataSet結果中的「廣東電視台」ID「55 」作為服務請求getTVchannelDataSet入參

獲取廣東電視台ID
.右側面板上部分中輸入如下程式碼(getTVstationDataSet 結果)
declare namespace diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"; //diffgr:diffgram/Station/TvStation[4]/tvStationID[1]
.右側面板下部分中輸入如下程式碼(getTVchannelDataSet 入參)
declare namespace web="http://WebXml.com.cn/"; //web:getTVchannelDataSet/web:theTVstationID[1]
.獲取上述程式碼的方法:
上半部分getTVstationDataSet結果獲取:

getTVstationDataSet結果獲取
下半部分getTVchannelDataSet入參獲取:

getTVchannelDataSet入參獲取
3.獲取「廣東電視台」的頻道「廣東新聞頻道 」ID :「337 」
.將服務請求getTVchannelDataSet 結果中的「廣東新聞頻道 」ID :「337 」作為服務請求getTVprogramDataSet 入參

獲取廣東新聞頻道ID
.右側面板上部分中輸入如下程式碼(getTVchannelDataSet結果)
declare namespace diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"; //diffgr:diffgram/Channe/TvChanne[6]/tvChannelID[1]
.右側面板下部分中輸入如下程式碼(getTVprogramDataSet入參)
declare namespace web="http://WebXml.com.cn/"; //web:getTVprogramDateSet/web:theTVchannelID[1]
.獲取上述程式碼的方法:
上半部分getTVchannelDataSet結果獲取:

getTVchannelDataSet結果獲取
下半部分getTVprogramDataSet入參獲取:

getTVprogramDataSet入參獲取
六、運行測試用例TestCase 1
1.整個測試步驟設置好之後,打開「TestCase 1」運行測試,全部綠色表示測試通過,如下圖所示:

運行測試用例
2.在TestCase Log中還可以看到介面之間傳遞的參數值,如下圖所示:

在介面中查看參數值
3.運行結束後,再打開介面請求,可以看到請求顯示的就是所傳遞的值,如下圖所示:
