前面我們簡單的介紹了關於WSDL協議,現在我們開始學習如何使用LoadRunner對Webservice 進行介面測試,一般其實很多不會使用LoadRunner來做介面測試,因為現在市場上介面測試的工具也很多,例如soapui、postman等。但其實LoadRunner同樣也可以用來做介面測試。下面我們就詳細的介紹使用LoadRunner如何對Webservice進行介面測試。

下面將以fy.webxml.com.cn/webser這個WEB服務為例介紹Webservice介面測試。該系統是一個中英文雙向翻譯的WEB服務。

15.2.1選擇Web Services協議

單擊【New Script】按鈕,在彈出的【New Virtual User】對話框中,選擇Web Services協議,如圖所示。

15.2.2選擇Manage Services管理待測試的服務

在主界面單擊【Manage Services】按鈕,會彈出一個【Manage Services】對話框,如圖所示。在這個對話框中可以選擇我們待測試的服務。

15.2.3Import Services導入服務

在彈出的【Manage Services】對話框中,單擊【Import Service】按鈕,會彈出 【Import Service】對話框,如圖所示,在該對話框中來設置待測試的服務。

導入服務的方式有四種:URL、File、UDDI和Quality Center。但我們一般只會用到兩種即URL和File兩種,下面我們來闡述一下如何使用URL和File兩種方式如何來導入服務。

第一:URL方式

如果選擇URL方式時,在下面的文本框中輸入WEB服務的URL地址,但需要注意的是必須在後面加上「?wsdl」,如我們測試的服務地址為fy.webxml.com.cn/webser,那麼填入到文本框的地址實際上應該為fy.webxml.com.cn/webser,如圖所示。因為我們測試的對象是Web Services的服務,他是一個類似XML格式寫一個文件,所以我們在載入服務時,不能寫URL地址,一定得在後面加上「?wsdl」,否則添加服務就會失敗。

第二:File方式

導入服務時也可以使用File方式來導入,如果使用文件導入服務時需要注意,在使用File方式導入服務之前,需求將內容另存為後綴名為「.wsdl」的文件,使用瀏覽器打開我們要測試的服務(fy.webxml.com.cn/webser,注意是包含「?wsdl」的這個wsdl的文件),然後再點擊另存為,但別存為時一定得注意,另存為後綴名為「.wsdl」 的文件。再在【Import Service】對話框中選擇需要導入的文件,如圖所示。

當導入成功後可以在【Operations】標籤頁中看到該服務所包含的所有方法,如圖所示。

這些方法與打開http://fy.webxml.com.cn/webservices/EnglishChinese.asmx這個URL地址所看的方法是一樣的,打開該URL地址看的方法,如圖所示。

在【Operations】標籤頁中我們看到每種操作或方法都有兩個不同的埠名,分別為:EnglishChinsesSoap和EnglishChinsesSoap12兩種,這兩種埠名是表示支持Soap協議的兩個版本。

15.2.4Add Service Call添加服務調用

導入服務成功後,接下來就得確定要測試的對象,因為每個服務都可能有很多不同的操作,那麼我們要測試那個操作呢?這就是這個步驟要做的事情。

單擊【Add Service Call】按鈕,彈出【New Add Service Call】對話框,如圖所示。

在彈出的【New Add Service Call】對話框中,有以下幾個選項需要注意:

Service:表示Web Services的伺服器名。

Port Name:表示埠名。

Operation:表示操作或方法名,即該Web Services所包含的方法或操作名,也是做介面測試時待測試的對象。在這個下拉列表框中選擇我們要測試的方法或操作。

以測試TranslatorString操作為例,得在Operation下拉列表框中選擇TranslatorString操作。該操作是中英文雙向翻譯(基本)String(),輸入參數:wordKey = 單詞; 返回數據:一維字元串數組 String[]。

選中操作之後,可以在左邊看到該操作輸入和輸出的相關數據,當然還有可以設置SOAP Header,但一般我們只要設置輸入和輸出參數即可。

輸入的參數就是該操作在調用過程中所需要輸入的實參,所謂介面測試其本身就是測試該操作與外界打交道的內容,這就相當於函數,一個函數與外界打交道的只有輸入時的實參和輸出的結果,並沒有其它的內容,所以輸入的參數就相當於函數調用中的實參,其意思是一樣的。點擊【Input Arguments】就可以看到需要輸入的參數情況,在這個實例中只需要輸入一個參數(關於到底需求多少個參數,這完全取決於在函數定義時所需要輸入的形參個數),形參名叫「wordKey」,選中「Include argument in」選項,在下面選擇「Value」選項,在該文本框中輸入測試時具體的實參,這裡我們以輸入「Hello為例,即測試的數據為「Heloo」,如圖所示。當然有人就會說那如果需要參數化怎麼做呢?這裡可以直接點【ABC】按鈕來參數化,後面我們還會來參數如何參數化。

點擊【Ouput Arguments】可以設置輸出結果的相關信息。選中「Save returned value in param」,在這裡可以設置參數名,這個參數化可以隨便設置,用於保存輸出結果,如圖所示。這個參數主要用於保存該操作的返回值,就相當於函數的返回值一樣。

設置完成後,LoadRunner會生成一段代碼插入在Action部分,代碼如下:

web_service_call( "StepName=TranslatorString_102",

"SOAPMethod=EnglishChinese|EnglishChineseSoap|TranslatorString",

"ResponseParam=response",

"Service=EnglishChinese",

"ExpectedResponse=SoapResult",

"Snapshot=t1525517692.inf",

BEGIN_ARGUMENTS,

"wordKey=Hello",

END_ARGUMENTS,

BEGIN_RESULT,

"TranslatorStringResult/*[1]=Param_string",

END_RESULT,

LAST);

15.2.5調試腳本

在Action裡面其實只生成了一個函數(web_service_call),其實我們對 Web Services進行介面測試時,只是通過這個函數來發送請求的,也就是說如果對這個函數很熟悉的話,根本就不會上面幾個步驟來折騰,可以直接寫web_service_call這個函數來達到目的。

當代碼生成後,接下來就得調試代碼,檢查結果是否正確,在調試代碼之前,需要先在【Run-time Settings】對話框中設置一下「Log」的屬性,需要將日誌文件的格式設置為「Extended log->Parameter substitution」,這樣可以在回放日誌的地方將參數提交相關的日誌都可以列印出來,設置好日誌格式之後就可以回放腳本。回放後的日誌文件內容如下:

Virtual User Script started at : 2018-05-05 19:11:43

Starting action vuser_init.

Web Services replay version 11.0.0 for WINXP; Toolkit: ".Net"; build 8859

Run-Time Settings file: "C:Documents and SettingsAdministratorLocal SettingsTemp
oname120\default.cfg"

Vuser directory: "C:Documents and SettingsAdministratorLocal SettingsTemp
oname120"

Vuser output directory: "C:Documents and SettingsAdministratorLocal SettingsTemp
oname120"

LOCAL start date/time: 2018-05-05 19:11:43

Ending action vuser_init.

Running Vuser...

Starting iteration 1.

Starting action Action.

Action.c(3): Web service call "TranslatorString_102" started

Action.c(3): Notify: Saving Parameter "TranslatorString_102_Response = <TranslatorString><TranslatorStringResult><string>hello</string><string>hel?u, hel?u</string><string></string><string>int.(見面打招呼或打電話用語)喂,哈羅</string><string>1059.mp3</string></TranslatorStringResult></TranslatorString>".

Action.c(3): Notify: Saving Parameter "response = <?xml version="1.0" encoding="utf-8"?><soap:Envelope xmlns:soap="schemas.xmlsoap.org/soa" xmlns:xsi="w3.org/2001/XMLSchema-i" xmlns:xsd="w3.org/2001/XMLSchema"><soap:Body><TranslatorStringResponse xmlns="WebXml.com.cn/"><TranslatorStringResult><string>hello</string><string>hel蓹u, hel蓹u</string><string /><string>int.錛堣闈㈡墦鎷涘懠鎴栨墦鐢佃瘽鐢ㄨ錛夊杺,鍝堢綏</string><string>1059.mp3</string></TranslatorStringResult></TranslatorStringResponse></soap:Body></soap:Envelope>".

Action.c(3): Notify: Saving Parameter "Param_string = hello".

Action.c(3): Web service call "TranslatorString_102" was successful

Ending action Action.

Ending iteration 1.

Ending Vuser...

Starting action vuser_end.

Ending action vuser_end.

Vuser Terminated.

查看回放日誌時,需要檢查TranslatorString_102_Response、response和Param_string這三個參數的值是否正確,那麼如何判斷這三個參數返回出來的值是否正確呢?可以進入Web Service的系統中進行手工測試,進入這個fy.webxml.com.cn/webser地址單擊TranslatorString操作,輸入要測試的關鍵「Hello」,然後點「調用」就可以看到結果了,如果兩次結果一樣說明,測試的結果是正確的。

15.2.6增強腳本

腳本調試沒問題後,應該對腳本進行增強,那麼這裡增強腳本有兩個方面要處理:一是參數化;二是設置檢查點;

關於參數化在這裡就不詳細介紹了,在6.3章節中對如何參數化進了詳細的介紹,那麼Web Service腳本的參數化和6.3章節中講的策略是一致的。

腳本檢查點是必須的,一般情況每個腳本都會設置相對應的檢查點,用於檢查腳本運行結果的正確性。在之前的章節中會使用web_reg_find函數來檢查內容是否正確,但在這個腳本中不需要使用web_reg_find這個函數來檢查,因為待檢查的內容就在上面所講的那幾個參數中,不用到緩存中去查詢我們需要的結果,也即待檢查的內容就在一個變數中,所以這個時候只要比較變數中的值是不是我們需要的,所以在這裡使用strstr函數來檢查就可以。

strstr(str1,str2) 函數用於判斷字元串str2是否是str1的子串。如果是,則該函數返回str2在str1中首次出現的地址;否則,返回NULL。

增強後的腳本代碼如下:

web_service_call( "StepName=TranslatorString_101",

"SOAPMethod=EnglishChinese|EnglishChineseSoap|TranslatorString",

"ResponseParam=response",

"Service=EnglishChinese",

"ExpectedResponse=SoapResult",

"Snapshot=t1523427287.inf",

BEGIN_ARGUMENTS,

"wordKey={keyword}",

END_ARGUMENTS,

BEGIN_RESULT,

"TranslatorStringResult/*[1]=Param_translator",

END_RESULT,

LAST);

if(strstr(lr_eval_string("{Param_translator}"),lr_eval_string("{keyword}")) == NULL)

{

lr_error_message("FAIL");

}

else

{

lr_error_message("PASS");

}

return 0;

腳本增強完成後,那麼這個腳本就可以算是開發好了。


推薦閱讀:
相關文章