標籤:
用LoadRunner測試介面效能
方法一:通過wsdl地址調用介面
1、開啟LoadRunner點擊左上方選擇建立指令碼,在快顯視窗中選擇web service協議,然後點擊create按鈕
2、點擊 Manager services(注意:點擊前右側視窗指令碼的游標必須在“return();”之前),在快顯視窗中點擊Import,在快顯視窗內選擇“url”並填入要測試介面對應的地址,在地址的後面加上“?wsdl”,然後點擊Import
3、匯入url成功後會有相應的資訊出現,然後點擊“ok”
4、點擊“Add service call”,然後在彈出的視窗中Opertion對應的下拉式清單中選擇要測試的方法,在左側選擇Import Arguments,然後在右側value中輸入對應的請求(也可以隨便輸入,下面可以再指令碼中修改)。
5、在視窗左側選擇out,然後在右側勾選“Save returned...”,在parameter對應的內容可以修改,可以保持不變,其實就是一個變數,用來儲存輸出的值。
6、完成上述操作後自動產生如下指令碼,標紅的地方為剛才隨意輸入的請求內容,現在用合法的請求替換掉
7、在指令碼中替換請求內容後調試下指令碼看是否有錯誤,如果指令碼正常,那就設計運行情境,進行後續的負載測試工作。
方法二:匯入XML檔案
先看下面開發人員給的對應介面的請求內容:
{
"sysId": "1",
"userName": "root",
"passWord": "root321",
"queryArray": [
{
"fltNum": "QW9977",
"fltDate": "2014-04-12",
"orig":"SZX"
}
]
}
如上所示,我們從開發人員那裡獲得的請求內容為js格式的,不是xml格式的,此時我們再用方法一來試試:
1、匯入在指令碼中粘貼上我們的請求發現有“:”、“}”等都沒有變成藍色,而是黑色顯示,這說明這些內容是LoadRunner未識別的,我們運行一下發現日誌中也有很多日誌報出,這是什麼原因呢?因為LoadRunner指令碼時遵循的C語言的文法規則,而這些符號在C語言中是有定義的,我們要想使用必須添加逸出字元使他們轉義。一一修改又太麻煩,所以介紹使用LoadRunner測試介面的第二種方法:匯入xml檔案法。
2、在soapUI中添加js請求,調試指令碼看是否通過
3、指令碼調試通過後將指令碼另存新檔xml檔案
4、點擊Import SOAP,點擊“...”按鈕選擇剛才從soapUI中另存出來的xml檔案
5、然後視窗中內容變多,在URL中粘貼要測試介面對應的連結,SOAP Action中和開發人員溝通看是否有對應的Action,沒有就不用填寫,Response paramenter對應的內容隨便填寫,
是為了給服務請響應的內容定義一個儲存的變數。
6、通過以上操作點擊ok後出現如下指令碼,運行後通過,我們可以繼續後續的效能測試工作。
我們仔細對比一下這兩種情況下指令碼的變化:
調用介面後直接粘貼請求的指令碼:
Action()
{
web_service_call( "StepName=getTotalPassAndTotalAcPassAndTotalLuagg_102",
"SOAPMethod=FlightInfoAndVipPassInfoQueryWebService|FlightInfoAndVipPassInfoQueryWebServiceHttpPort|
getTotalPassAndTotalAcPassAndTotalLuagg",
"ResponseParam=response",
"Service=FlightInfoAndVipPassInfoQueryWebService",
"ExpectedResponse=SoapResult",
"Snapshot=t1405582936.inf",
BEGIN_ARGUMENTS,
"in0={
"sysId": "1",
"userName": "root",
"passWord": "root321",
"queryArray": [
{
"fltNum": "QW9977",
"fltDate": "2014-04-12",
"orig":"SZX"
}
]
}",
END_ARGUMENTS,
BEGIN_RESULT,
END_RESULT,
LAST);
return 0;
}
匯入xml檔案後產生的指令碼:
Action()
{
soap_request("StepName=SOAP Request",
"URL=http://192.168.0.125:8090/qwsis/services/FlightInfoAndVipPassInfoQueryWebService?wsdl",
"SOAPEnvelope="
"<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:web=
\"http://webservice.sasis.com\">"
"<soapenv:Header></soapenv:Header>"
"<soapenv:Body>"
"<web:getPassengerMobiles>"
"<web:in0>"
" {"
" \"sysId\": \"1\","
" \"userName\": \"root\","
" \"passWord\": \"root321\","
" \"queryArray\": ["
" {"
" \"fltNum\": \"QW9977\","
" \"fltDate\": \"2014-04-12\","
" \"orig\":\"SZX\""
" }"
" ]"
"}"
" </web:in0>"
"</web:getPassengerMobiles>"
"</soapenv:Body>"
"</soapenv:Envelope>",
"SOAPAction=",
"ResponseParam=response",
"Snapshot=t1405565685.inf",
LAST);
return 0;
}
我們會發現第二種情況的指令碼使用“”把請求中的“{”、“[”進行了處理,而“””則用“\”來進行了轉義處理,處理後指令碼中的內容都被識別,並變為了藍色字型顯示。
LoadRunner測試webservice介面效能