1. 程式人生 > >SoapUI(二):經典例子學習

SoapUI(二):經典例子學習

引用經典例子學習,瞭解該專案,包括MokeService模擬服務和測試用例,以此來熟悉SoapUI的介面和操作。本篇主要學習SoapUI的5個功能:
 1.匯入專案;
 2.WebService Mocking;
 3.WebService Inspection;
 4.對WebService服務進行功能測試;
 5.對WebService服務進行負載測試。

1.匯入專案

匯入自帶專案

(1)右鍵點選在Navigator中的專案節點,選擇“Import project”選項,匯入已經存在的專案,此時頁面彈出“Select SoapUI ProjectFile”對話方塊。
這裡寫圖片描述

(2)從安裝SoapUI的資料夾下的Tutorials目錄裡,選擇專案名稱為 sample-soapui-pro-project.xml 或者 sample-soapui-project.xml 的專案檔案。
這裡寫圖片描述

(3)專案匯入成功
這裡寫圖片描述

2.WebService Mocking

WebService Mocking 是在SoapUI中偽造或模擬WebService服務介面功能的一個途徑,當WebService服務介面沒有啟動或介面的編碼尚未完成等各種原因導致介面暫時無法使用時,WebService Mocking 是非常有用的一個功能。總而言之,WebService Mocking可以在開發開始編碼的同時建立測試用例,這意味著,當真正的WebService服務介面可以開始測試時,用例設計工作可能已經完成,可以直接開始測試。

(1)新增一個MockService,右鍵單機介面集合的名稱。
這裡寫圖片描述

(2)彈出“General MockService”對話方塊,可直接使用預設設定的值,點選OK。
這裡寫圖片描述

(3)輸入MockService 的名稱,點選OK。
這裡寫圖片描述
生成一個MockService,如下圖:
這裡寫圖片描述

(4)首先使MockService執行起來。匯入的檔案中已經包含名為“SampleServiceSoapBinding MockService”的MockService,可先刪除前三步新建立的MockService,開啟MockService只需雙擊即可。
這裡寫圖片描述

(5)在MockService中我們可以看到有不同的介面:login, logout, search, buy 共4個介面,在例子專案中,所有的相應均採用SCRIPT的排程方式進行分發相應,這是最常見的一種排程方式,這裡還提供順序等其他方式供測試人員選擇。

(6)單擊執行按鈕開始執行MockService,MockService執行在8088埠。
這裡寫圖片描述

3.WebService Inspection

WebService Inspection 是一個非常好的功能,它能夠讓你在測試開始執行時就能很容易地瞭解到你所測試的WebService介面是如何工作,需要什麼樣的入參才能呼叫。

(1)直接瀏覽WSDL介面的XML報文,都是很雜亂的,而且一般WSDL報文也都比較複雜,由於WSDL的複雜而使人們不願意去讀懂它,但WSDL其實是規範的,而SoapUI的介面檢視模式是解決這個問題的好工具。

(2)通過雙擊“SampleServiceSoapBinding”節點,SoapUI頁面上會開啟該節點的資訊,切換至WSDL Content標籤頁,如圖所示可通過此處的內容與右邊欄“SampleServiceSoapBinding”節點下的介面對映,來加深對WSDL介面的理解。
這裡寫圖片描述

(3)單擊“SampleServiceSoapBinding”節點下的“login”,展開介面對應的請求“login rq”,雙擊開啟,可以在SoapUI的桌面上看到“login”。
這裡寫圖片描述

(4)請求中已寫明瞭入參:username = Login, password =Login123,點選執行按鈕提交請求,成功後可以在右邊看到響應的報文。通過點選TAB標籤頁,可以用不同的顯示方式檢視請求報文和響應報文內容。
這裡寫圖片描述

4.對WebService服務進行功能測試

在例子中,已經建立了不同的測試集,測試集包含了不同的用例,一個測試用例又由一個或多個測試步驟組成,SoapUI會組織成如下結構:
這裡寫圖片描述

(1)展開Simple TestSuite,雙擊“Simple Login ang Logout w.Properties Steps”,可以檢視到測試用例由5個測試步驟組成。

這裡寫圖片描述

(2)開啟“Description”標籤檢視測試用例描述。

這裡寫圖片描述

(3)該測試用例主要有3個型別的測試步驟組成:一個Properties測試步驟,2個TestRequest和2個PropertyTransfer步驟,功能如下:

  • Properties:用來儲存屬性的值,後面的步驟都可以使用,在用例裡“login”介面的入參就是使用屬性“username”和“password”。

  • TestRequest:發給服務介面的請求,在用例中的請求有“login”和“logout”。

  • PropertyTransfer:一個用來在不同測試步驟間傳遞屬性的步驟,這可以使用的場景有從一個Properties的步驟將屬性傳給一個“TestRequest”的步驟,如用例中:“Move username and password”步驟,也可以是將屬性從一個請求的出參傳遞給另一個請求的入參,如用例中:Move sessionID 步驟。

(4)雙擊測試步驟“PropertyTransfer:Move Username and Password”,測試步驟的編輯器將會在SoapUI上開啟,這個步驟傳遞了“username”和“Password”兩個屬性。

這裡寫圖片描述

(5)SoapUI一個最重要的特點是:斷言,斷言的使用是為了驗證發出的請求是否被正確的相應,校驗與預期的結果是否一致。開啟測試步驟“TestRequest:logout”,在下面的測試步驟中可以看到幾個斷言,點選小+號可以根據情況進行新增:

這裡寫圖片描述

  • SOAP Response:驗證響應報文是一個有效的SOAP響應。
  • SchemaCompliance:指返回的報文是否符合WSDL中所定義的模式。
  • Not SOAP Fault:檢查響應報文沒有包含SOAP異常。
  • XPATH Match:比較XPATH表示式所指定位置上的元素是否與預期值符合。

(5)測試執行:大致瞭解整個測試用例後,可以執行用例,點選執行按鈕,測試用例將直接執行,測試結果將會顯示在下所示的執行進度條上,如果完全通過此進度會顯示成綠色,如果執行不通過,會停在失敗的執行步驟上,進度條顯示成紅色,而下方會列印相應的錯誤日誌資訊。

這裡寫圖片描述

注:如果執行時進度條顯示為紅色,檢查MockService是否開啟,或在執行完成的測試用例之前是否已經執行過“login”請求,如果執行過,請使用“login”清除掉服務端的惠華資訊或重啟MockService,再重新執行測試用例。

5.對WebService服務進行負載測試

在建立完測試用例後,SoapUI可以快速地讓你建立用例對應的負載測試用例,右擊並且選擇“New LoadTest”即可。這使得SoapUI的負載測試相當好用,它可以讓你在功能測試完成情況下,快速地、方便地、隨意地檢驗WebService介面是否能夠承載指定的負載量。

(1)點選測試集“Expanded TestSuite”,展開測試用例“Search and Buy TestCase”的“LoadTest”,可以看到,對同一個功能測試用例有4個不同的負載測試用例,可根據效能測試場景選擇不同的負載策略。

這裡寫圖片描述

(2)雙擊點開其中一個負載用例,可以配置裡面的配置項。

  • Limit:表示我們負載測試要持續執行的時間,s為單位,此處表示要執行30s。
  • Threads:配置負載測試所用的執行緒組,即一般效能測試中所說的併發數。
  • Test Delay:設定測試執行緒的休眠時間,即在完成一次完整的用例執行後,開始下一次執行時,縣城的休眠時間,以毫秒為單位(1s=1000ms),圖中是1000ms。
  • Random:該值的設定是與“Test Delay”的設定結合在一起的,它表示休眠的時間會在 Test Delay * (1-0.5)=100ms,和TestDelay * (1+0.5)=300ms之間波動。此處如果設定為0,則表示“TestDelay”的值不會隨意地變化,直接初始設定的毫秒數。

這裡寫圖片描述

(3)開始執行,資料隨著測試的執行而持續的發生變化,比較關心的數值:響應時間、每秒吞吐量(tps)、錯誤數(error)等效能。

這裡寫圖片描述

(4)檢視圖表:

這裡寫圖片描述

檢視測試結果資料的整體走向:

這裡寫圖片描述

(5)在SoapUI的負載測試中,你也可以定義負載測試斷言,一個經常且重要的斷言是:Max Error。當負載測試中出現錯誤,且錯誤的數量達到Max Error要求的值時,負載測試就會停止。

這裡寫圖片描述

注:進入測試集“Sample TestSuite fails if we don’t get faults”->測試用例“TestCase:Searching after Logging out LoadTests”->負載測試用例“LoadTest with Multiple Tests(will fail)”,雙擊開啟並執行,執行一段時間後,頁面彈出錯誤資訊,執行失敗,這主要是因為多個使用者模擬登入且使用同一個使用者名稱,這在MockService所模擬出來的服務介面是不被允許的。
這裡寫圖片描述