使用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界面查看我们定义的函数的请求,以及服务器的返回值。