使用loadrunner測試Web Services的程式大致可以使用兩種方法,分別為web_service_call()和soap_request()。兩者的使用很相識,我們錄製時都使用Web Services的協議。下面分別介紹一下使用方法:
一、web_service_call()使用步驟如下:
1、儲存WSDL檔案。在IE中開啟Web Services的地址,並加上“?wsdl”。比如:“http://192.168.4.112:8082/EDASer ... neService.asmx?wsdl”。然後將開啟的XML檔案另存新檔副檔名為".wsdl"的檔案。如
2、在loadrunner中匯入剛才儲存的WSDL檔案,如
3、增加調用函數,如
4、完成後將自動產生以下代碼。
web_service_call( "StepName=RunService_101",
"SOAPMethod=ServiceEngineService|ServiceEngineServiceSoap|RunService",
"ResponseParam=response",
"Service=ServiceEngineService",
"ExpectedResponse=SoapResult",
"Snapshot=t1273650512.inf",
BEGIN_ARGUMENTS,
"xml:inDataBuf="
"<inDataBuf>"
"<serviceName>2307</serviceName>"
"<serviceType>3</serviceType>"
"<pageNo></pageNo>"
"<sessionID></sessionID>"
"<xmlData><DataSet></xmlData>"
"</inDataBuf>",
END_ARGUMENTS,
BEGIN_RESULT,
"RunServiceResult=Param_RunServiceResult",
END_RESULT,
LAST);
lr_log_message("result = %s", lr_eval_string("{Param_RunServiceResult}")); --可以輸出傳回值
二、soap_request(),使用步驟如下:
1、定義SOAP REQUEST FILE。在IE中開啟Web Services的頁面,比如:http://192.168.4.112:8082/EDASer ... .asmx?op=RunService。IE中將顯示這個檔案的資訊,複製儲存為XML檔案。
2、匯入剛才定義的XML檔案。
3、匯入後自動以下代碼。
soap_request("StepName=SOAP Request",
"URL=http://192.168.4.112:8082/EDAService/ServiceEngineService.asmx",
"SOAPEnvelope="
"<?xml version=\"1.0\" encoding=\"utf-8\"?>"
"<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">"
"<soap12:Body>"
"<RunService xmlns=\"http://192.168.4.112/\">"
"<inDataBuf>"
"<serviceName>2307</serviceName>" --入參需要改成自己需要的值
"<serviceType>3</serviceType>" --入參需要改成自己需要的值
"<pageNo></pageNo>"
"<sessionID></sessionID>"
"<xmlData></xmlData>"
"</inDataBuf>"
"</RunService>"
"</soap12:Body>"
"</soap12:Envelope>",
"SOAPAction=RunService",
"ResponseParam=response",
"Snapshot=t1273722181.inf",
LAST);
4、在剛才自動產生的程式碼前,增加header資訊。需要增加的內容見步驟1裡的。“Content-Length”不需要加。本例中我們增加的代碼為:
web_add_header("POST",
"/EDAService/ServiceEngineService.asmx HTTP/1.1");
web_add_header("Host",
"192.168.4.112");
web_add_header("Content-Type",
"application/soap+xml; charset=utf-8");
這樣2種方式就介紹完了。
補充說明:
1、如果入參的字串需要使用“<”或“>”,則必須傳遞“& l t ;”或“& g t ;”(這幾個字元需要去空格)
2、如果WEB SERVICES返回的是XML檔案,則可以使用lr_xml_get_values來擷取。比如:
int NumOfValues;
NumOfValues= lr_xml_get_values("XML={response}", --response為soap_request函數的傳回值
"ValueParam=OutputParam", --定義lr_xml_get_values的傳回值
"Query=/soap:Envelope/soap:Body/HelloWorldResponse/HelloWorldResult", --XML的節點名稱,需要包含父節點的名稱,並用"/"隔開。
"SelectAll=yes", LAST);
for ( i = 0; i < NumOfValues; i++) { /* Print multiple values of OutputParam */ --輸出剛才擷取的XML的值
sprintf (buf, "{OutputParam_%d}",i+1);
lr_output_message("result = %s",lr_eval_string(buf));
re = strncmp(lr_eval_string(buf),string1,85);
lr_output_message("return : %d",re);
}
3、可以切換到TREE介面查看我們定義的函數的請求,以及伺服器的傳回值。