天天看點

SOAP WebService接口功能自動化測試

此處我們以qqCheckOnline的WebService接口為例進行講解,接口的具體資訊如下:

l 接口描述:獲得騰訊QQ線上狀态

l 入參:qqCode,String類型,預設QQ号碼:8698053

l 出參:qqCheckOnlineResult,String類型

傳回資料代表的含義為:Y = 線上;N = 離線;E = QQ号碼錯誤;A = 商業使用者驗證失敗;V = 免費使用者超過數量

l 傳回格式:

HTTP/1.1 200 OK

Content-Type: text/xml; charset=utf-8

Content-Length: length

<?xml version="1.0" encoding="utf-8"?>

<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">

<soap:Body>

<qqCheckOnlineResponse xmlns="http://WebXml.com.cn/">

<qqCheckOnlineResult>string</qqCheckOnlineResult>

</qqCheckOnlineResponse>

</soap:Body>

</soap:Envelope>

了解了接口資訊之後我們來看看如何完成接口用例腳本的設計,大緻步驟如圖5.1所示

<a href="https://s1.51cto.com/wyfs02/M02/9E/49/wKioL1mPDVzzVpv2AAA2ld1c_UM095.jpg" target="_blank"></a>

圖5.1 接口用例腳本設計步驟

5.2.1 單接口的測試方法

按照圖5.1所示的步驟完成初步設定後,腳本結構如圖5.2所示,這個是最簡單的腳本狀态,還有很多地方需要我們優化改進,下面我們就把常見的優化方法分别講解下。注意:後續的操作都在TestSuite中完成。

<a href="https://s2.51cto.com/wyfs02/M00/9E/49/wKioL1mPDWnjrBkiAAA81JZAUvo980.jpg-wh_500x0-wm_3-wmp_4-s_4112185177.jpg" target="_blank"></a>

圖5.2 腳本結構

根據接口的資訊我們在設計測試用例的時候,可能需要考慮多種情況,包括但不限于正确的QQ号碼、錯誤的QQ号碼、處于線上狀态的QQ号碼和處于離線狀态的QQ号碼等來驗證各種情況下的接口的正确性,具體的用例需要根據具體的接口資訊來設計。此處我們隻以正确且處于線上狀态的QQ号碼為例進行講解。

1. 參數化

打開我們TestSteps下的qqCheckOnline接口,如圖5.3所示,你會發現其中的qqCode是寫死的,顯然這個不是我們希望的,我們希望這裡是“活”的。

<a href="https://s3.51cto.com/wyfs02/M01/9E/5A/wKiom1mPDYTgUzH7AAA9hvlTiv0789.jpg-wh_500x0-wm_3-wmp_4-s_2614568493.jpg" target="_blank"></a>

圖5.3 qqCode

那如何能使該參數變“活”呢,這時候就要利用DataSource這個強大的功能了。在DataSource中可以通過多種外部媒體來實作參數化,比如:

l File:文本檔案的形式。

l Excel:最好使用2003格式的Excel。

l Grid:表格形式。

l JDBC:JDBC資料源,就是從資料庫中擷取。

l XML:XML格式。

l Groovy:Groovy腳本形式。

這裡我們使用File類型的文本檔案形式進行參數化,大緻實作步驟如下:

1) 在本地電腦上建立一個文本檔案:qq.txt,并在檔案中輸入如圖5.4所示的内容。

<a href="https://s1.51cto.com/wyfs02/M02/9E/49/wKioL1mPDY-yOFgEAAAScxiJ2mA410.jpg-wh_500x0-wm_3-wmp_4-s_954135107.jpg" target="_blank"></a>

圖5.4 qq.txt

2) 建立一個DataSource,填入相關的資料資訊,注意它的順序要位于接口之前。如圖4.5所示。

<a href="https://s4.51cto.com/wyfs02/M00/9E/5A/wKiom1mPDaCTEvUrAAA5Kar_sNc148.jpg-wh_500x0-wm_3-wmp_4-s_3160583679.jpg" target="_blank"></a>

圖5.5 DataSource

部分字段的解釋如下:

l DataSource:選擇外部的存儲媒體。

l File:選擇檔案的路徑。

l Properties:把從外部存儲媒體中擷取的結果儲存到這裡。

l 其餘的字段可以保持預設。

3) 切換到qqCheckOnline接口,把之前寫死的qqCode變“活”。隻需在qqCode參數處右鍵滑鼠選擇“Get Data”下對應步驟中的Properties即可。如圖5.6所示。

<a href="https://s4.51cto.com/wyfs02/M00/9E/49/wKioL1mPDavyD7ZOAAA7kNUd2LE507.jpg-wh_500x0-wm_3-wmp_4-s_3005448168.jpg" target="_blank"></a>

圖5.6 Get Data

4) 增加DataSource Loop,完成參數化的周遊,如果不添加這個則永遠取出來的是第一個QQ号碼,最終的腳本結構如圖5.7所示。其中DataSource Step是選擇的源資料,Target Step是選擇目标步驟。這裡需要特别注意DataSource、接口、DataSource Loop的順序。

<a href="https://s3.51cto.com/wyfs02/M02/9E/5A/wKiom1mPDb6gCa85AABLlwbQTsE034.jpg-wh_500x0-wm_3-wmp_4-s_350378433.jpg" target="_blank"></a>

圖5.7 DataSource Loop

2. 斷言(檢查點)

既然我們是做接口的功能自動化,那一定會對傳回的響應資料(出參)進行檢查,隻有符合我們預期結果才能認為該接口通過測試,要完成這件事情就需要用到斷言,也就是大家常說的檢查點,大緻實作步驟如下:

1) 輕按兩下TestSteps中的接口并運作,在響應區域對你想檢查的内容添加斷言,右鍵選擇Add Assertion-&gt;for Cotent,如圖5.8所示。

<a href="https://s2.51cto.com/wyfs02/M01/9E/5A/wKiom1mPDcnjd9BOAAAmzkb53yI767.jpg-wh_500x0-wm_3-wmp_4-s_3986445525.jpg" target="_blank"></a>

圖5.8 選擇斷言

2) 在彈出的“XPath Expression”對話框中我們可以看到已經識别出來了要檢查的内容就是qqCheckOnlineResult對應的值Y,直接點選“save”按鈕即可,如圖5.9所示。

<a href="https://s1.51cto.com/wyfs02/M02/9E/49/wKioL1mPDevC2Z3QAABIzG_tr1M894.jpg-wh_500x0-wm_3-wmp_4-s_1409446018.jpg" target="_blank"></a>

圖5.9 确認斷言

3) 最終完成後的效果如圖5.10所示,其中Assertions表示的就是斷言。

<a href="https://s4.51cto.com/wyfs02/M02/9E/49/wKioL1mPDffh_hQOAABHOjnyq6M486.jpg-wh_500x0-wm_3-wmp_4-s_2471087165.jpg" target="_blank"></a>

圖5.10 斷言效果圖

在SoapUI中有多種形式的斷言,可謂功能十分強大,可以通過單擊“Add Assertion”來檢視,具體内容見書籍中的第五章。

3. 運作與報告

完成上述步驟之後,你就可以運作本用例腳本了,輕按兩下本TestCase,在彈出的“qqCheckOnline TestCase”對話框中點選“綠色小箭頭”即可,如圖5.13所示。如果想看SoapUI生成的測試報告,點選“文檔”形狀的圖示即可,測試報告樣式如圖5.14所示。

<a href="https://s3.51cto.com/wyfs02/M00/9E/49/wKioL1mPDgSggRcfAAA7IfBlpdA120.jpg-wh_500x0-wm_3-wmp_4-s_3162055123.jpg" target="_blank"></a>

所有類似這樣單接口的測試大概都是這個過程,大家需要根據具體的接口資訊做一定的調整,但整體的思路和方法是大同小異的,也希望大家在不斷學習的過程中可以悟到“一通百通”的道理,這樣即使你隻有2年的工作經驗也可能會超過有5年工作經驗的朋友。

本文轉自 小強測試幫 51CTO部落格,原文連結:http://blog.51cto.com/xqtesting/1955830,如需轉載請自行聯系原作者