LoadRunner下WebService测试的若干问题
- 格式:doc
- 大小:596.50 KB
- 文档页数:13
LoadRunner下WebService测试的若干问题
前提条件:
LR8.0官方下载,7.8的license
Windows2000简体中文版
一.测试的录制方法:
(板栗在《webservices压力测试总结》已经讲过这一部分,已经了解的朋友可以不看1这一部分)
1)选择协议
2)下载WSDL
用IE或者其他浏览器下载WSDL,这里以/uklocation.asmx?WSDL为例子,保存到本地为WSDL格式。在下面的File中选择该WSDL文件。 MSN:hxxzb@
3)选择WSDL
下一步,在方法中选择GetUKLocationByTown,点击>>,加入到右边
MSN:hxxzb@
4)输入参数
点击下一步,点击左边的Town,在右边输入London,然后下一步 MSN:hxxzb@
5)设置代理
点击Run-Time Settings,选择代理服务器的获取方式,点击下一步, MSN:hxxzb@ MSN:hxxzb@
6)运行教本
然后脚本自动开始运行,录制的位置是vuser_init方法中,并且运行的结果有错误。
错误是server returned an incorrectly formatted SOAP response,后面讲错误解决的方法和可能的原因。
注意:在LR7.8FP1中错误信息不一样,好像是什么xBase编码类似的错误。
7)录制总结:
到这里,教本的录制已经结束了,和LR7.8FP1的WebService相比,流程有了一定的变化,而且功能好像变弱了(这个是从官方网上下载的,用的7.8的license),在7.8中有可以选择录制协议为SOAP方式还是WebService的,8.0里却没有。
而且没有有录制到的位置,7.8FP1中忘记有没有了。
二.server returned an incorrectly formatted SOAP
response问题的解决
1)修改运行设置
在运行设置中,选择LOG,然后勾上扩展日志,并且选中下面的三个选项
2)运行教本,查看日志
查看脚本就可以发现,其实结果已经正常返回,但是在SOAP响应的头部,有一个可疑的部分,,可疑是因为我用另外一个例子实验过,服务器端返回的encoding为UTF-8的方式,不是zh_cn的方式。
把整个的SOAP的响应保存到一个XML文件中,用IE打开,IE报告:System does not
support the specified encoding,修改之后,IE可以打开该文件。
这下问题找到了,是因为LR自动增加的这个xml头部导致了错误的出现
3)问题的解决
但是为什么LR会增加这样的xml的声明呢,因为我的操作系统是中文的,所以我怀疑和这个有关,试验1)英文操作系统2)改变区域设置
我改变了区域的设置,改成英语(美国),需要重新启动机器,再运行脚本,错误没有了,运行正常结束。
但是这样很不方便,我的操作系统的其他的软件显示都是乱码。
在使用LR7.8FP1时,FP1会自动汉化我的LR,所以切换到美国区域后问题也能解决,但是连LR里都是乱码,没法使用。此路不通啊!!!
在LR的帮助里我又乱找一通,突然发现,有用SOAP_REQUEST的方式直接发送请求的,于是打算试试。下面的代码直接贴到刚才的VG的actin中了:
web_add_header("SOAPAction",
"\"urn:GoogleSearchAction\""); soap_request("google", "StepName=google",
"URL=/search/beta2",
"SOAPEnvelope= "
""
"
"xmlns:soap=\"/soap/envelope/\" "
"xmlns:soapenc=\""
"/soap/encoding/\" "
"xmlns:tns=\"urn:GoogleSearch\" "
"xmlns:types=\"urn:GoogleSearch/encodedTypes\" "
"xmlns:xsi=\""
"/2001/XMLSchema-instance\" "
"xmlns:xsd=\""
"/2001/XMLSchema\">"
"
"/soap/encoding/\">"
""
""
"j1bV/rJGA3o10po6iUtemzqHHbb4eH79"
""
"LoadRunner"
"0"
"
"xsd:int\">10"
"false"
""
""
"false"
""
""
""
""
""
"",
"Snapshot=t1.inf",
"ResponseParam=result",
LAST); MSN:hxxzb@
又出现错误了,郁闷!!
Error: Unexpected function argument (google)?????
于是删掉第一个参数google,试试..嘿嘿,成功了!
4)总结:
为什么这样就可以成功了,我想应该是SOAP_REQUEST这个方法,在取到SOAP的响应之后,没有做一次XML的解析,而WEBSERVICE_CALL则有这样的一个解析!!运气好啊,如果都有,只好改用乱码操作系统了!!
根本原因就是LR非要自作聪明,增加那样一个XML的头部(就是
encoding="zh_cn"?>东东),导致出现这样的问题。
问题解决了,可是SOAP的协议在LR 8.0下怎么录制呢,呵呵,手工加入,我用的WS是Axis下的,所以,有SOAPMonitor,哈哈,贴过来改改就好了。。。
5)XP下面的疑问
在XP下面,用WEBSERVICE_CALL,我也尝试修改了操作系统的区域,但是XP不需要重启,我正高兴呢,可是发现编码的错误还有??难道??同事的机器,我就不折腾了。
三.LR使用中的其他问题
1)脚本在Controller只运行了一个循环就停止
原因:未知啊。脚本有错误吧
现象:在VG中检查日志,
Starting iteration 1.和Ending iteration 1.也应该是匹配的,如果缺少后者,需要通过下面两种方法来解决。
解决的方法:(2优先于1)
1)生成一个新的教本,在上面一点一点加入原来的教本,我测试的程序的action有11个,我就一个一个的创建action,注意先不要修改action的名字,然后把内容复制过来,运行。
2)RuntimeSetting中设置:Continue on error需要选中,在一般的情况下,是有帮助的。
2)LR中例子
Lr所带的帮助中的一些例子,如果测试的数据中出现了xml的头部(就是
version="1.0" encoding="utf-8"?>类似的东东),如果测试不通过,可以去掉试试。而且有的例子的第一个参数中也需要加上“StepName=”,下面是LR7.8中的一个例子,第一个参数需要修改成“StepName=UkLocation”
#include "as_web.h" web_service_call( "UkLocation",
"URL=/uklocation.asmx",
"SOAPMethod=GetUKLocationByTown",
"SOAPMethodNamespace=",
"SOAPMethodStyle=document",
"SOAPAction=/GetUKLocationByTown",
"WSDL=/uklocation.asmx?WSDL",
"Snapshot=t1.inf",
BEGIN_ARGUMENTS,
"Town=London",
END_ARGUMENTS,
BEGIN_RESULT,
"GetUKLocationByTownResult=Result",
END_RESULT,
LAST);
3)参数的问题
如果使用的参数,例如上面的例子中的London为一个XML串,如果运行出现错误,那么可以试试去掉 XML的头部。呵呵,好像遇到过,不过现在好像又没有这样的问题了,可以不理会这一条。