用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;
}
我们会发现第二种情况的脚本使用“”把请求中的“{”、“[”进行了处理,而“””则用“\”来进行了转义处理,处理后脚本中的内容都被识别,并变为了蓝色字体显示。