一、 建立測試用例
(一) 基本概念
soapUI 中工程的層次結構
- 項目名稱:位於最上層 (BookStoreTest),項目可以包含多個服務的定義。
- REST 服務定義:服務其實是對多個 REST 資源的一個分組,在我們的例子中只有一個服務 BookStoreServie
- REST 資源定義:具體描述該資源的名稱,URI, 參數等屬性
- REST 方法定義:針對每個資源的方法 (GET,POST,PUT,DELETE 等 ),圖 1 中的方法名就是 GetBookList
- REST 操作請求定義:基於每個方法,可以有一個或多個請求操作,如 GetBookListRequest,這些請求操作才是真正被 soapUI 所調用執行的。每個請求可以設置非常豐富的信息,例如 Accept 類型,請求的 Header 信息,運行了該請求以后,就能以各種方式查看運行結果。但是這里還不能加入斷言來驗證結果 - 必須在建立測試用例以后才能使用。

TestCase 定義
- TestSuite:類似於 Junit 中的測試套件,其中可以加入多個 TestCase
- TestCase:可以包含多個 TestStep
- TestStep:一個 TestCase 可以包含多個 TestStep,TestStep 有多種類型,它可以是上面提到一個 REST 操作請求,也可以是一個 Groovy 的腳本,還可以試一個設置屬性的操作。 TestStep 甚至支持分支跳轉操作:根據特定的條件,從一個 step 可以跳轉到其他 step, 而不必順序執行。

(二) 創建REST 服務
1. 新建一個名為 RESTTest 的項目
2. 在項目上點擊右鍵,選擇"New Rest Service",在對話框中輸入 Service Name(AuthenticationService) 和Endpoint(http://qa-server11.achievo.com:33080)
3. 在" AuthenticationService "上點擊右鍵,選擇“New Resource”, 在對話框中輸入 Resource Name(Auth) 和 Resource Path (/apis/v1/auth/agency),點擊 OK
4. 在彈出的對話框中輸入 Method Name: signon4AgencyUser,HTTP Method 選擇默認的 POST, 點擊 OK
5. 在“signon4AgencyUser”上點擊右鍵,選擇“New Request”,在對話框中輸入“Request login success”
創建一個 REST 服務
(三) 創建測試用例
主要有兩種方式:
- 自動生成,步驟如下:
(1). 右鍵點擊一個 REST 服務,例如本例中的"AuthenticationService", 選擇"Generate TestSuite"
(2). 在彈出的對話框中,保持默認設置, 選擇"OK"
(3). 輸入名稱 , 例如"AuthenticationService TestSuite", 選擇"OK"即可。 - 手工創建,步驟如下:
(1). 在項目"RESTTest"上點擊右鍵,選擇“New TestSuite”, 在對話框中輸入"AuthenticationService TestSuite"
(2). 在 AuthenticationService TestSuite 上點擊右鍵, 選擇"New TestCase", 在對話框中輸入"login TestCase"
(3). 然后在左邊的導航欄中展開 login TestCase, 在“Test Steps”上點右鍵,選擇 Add Step->Rest Test Request
(4). 在彈出的對話框中選擇 “Request login success”
(四) 添加斷言
測試用例建好之后,需要向測試用例中添加 Assertions 以便驗證結果的正確性。soapUI 支持 Response SLA, Script Assertion, Contains, XQuery Match, Schema Compliance, XPath Match 以及 Not Contains 等多種斷言來對 response 進行判斷來保證對 Web 服務高質量的測試。
點擊 TestCase 的添加 Assertions 按鈕。 在彈出的 Select Assertion 窗口中選擇 XPath Match 斷言,點擊 OK。配置 XPath 如下圖所示:



(五) 運行測試用例

二、 性能測試
性能測試在 soapUI 中稱為 Load Test, 針對一個 soapUI 的 TestCase, 可以建立一個或多個 LoadTest, 這些 LoadTest 會自動的 把 TestCase 中的所有步驟都添加到其中, 在運行的時候,soapUI 會自動的使用多個線程來運行這些 TestStep,同時也會監控 它們的運行時間, 例如最短時間,最長時間,平均時間等等。這樣用戶能夠很直觀的看到 REST 服務的響應時間,從而對性能進行調優。
建立 LoadTest 非常簡單,只需要在“Load Tests”上點擊右鍵, 選擇"New LoadTest", 然后輸入名稱即可,下圖是一個針對 GetBookList 的 性能測試, 可以看到有兩個 TestStep : "GetBookList_xml" 和"GetBookList_json" , 100 個線程並發執行, 時間限制是 60 秒。 最后的結果是,最短時間 4 毫秒,最長時間 1204 毫秒,平均時間 20.54 毫秒。
