qileilove

blog已经转移至github,大家请访问 http://qaseven.github.io/

精通软件性能测试与LoadRunner最佳实战 连载十四

3.13.3  Web Services脚本

  完成Web Services服务端和客户端两个小程序的编写、编译、执行后,您需要确保服务端程序是开启的,关闭已运行的客户端小程序。

  接下来,您启动LoadRunner 11.0,选择“Web Services”协议,如图13-122所示。

     

 图13-121 “样例演示-客户端”对话框              图13-122 “New Virtual User”对话框

  单击【Create】按钮,创建“Web Services”协议,在LoadRunner 脚本编辑环境单击录制红色按钮,在弹出的“Recording Wizard”对话框中单击【Import】按钮,在弹出的“Import Service”对话框中选择“URL”选项,在文本框中输入“http://localhost:5678/wsdl/IMyHello”,单击【Import】按钮,如图13-123所示。

  图13-123 “Recording Wizard-Add Services页”对话框

  稍等片刻,将出现图13-124所示界面信息,单击【下一步(N)>】按钮。

  图13-124 “Recording Wizard”对话框

  在图13-125所示对话框中输入客户端路径相关信息“C:\mytest\client\Client.exe”,工作目录为“C:\mytest\client”,(如果您的应用是基于B/S的,则选择“Record default web browser”选项并输入相应URL)单击【完成】按钮。

 此时将会在输入框下方出现“欢迎于涌同学!”字符串,如图13-126所示。

                 

 图13-125 “Recording Wizard-Specify Application页”对话框     图13-126 “样例演示-客户端”对话框

  此时将会产生如下代码:

Action()

{

web_add_header("Content-Type", "text/xml");

web_add_header("SOAPAction", "\"urn:MyHelloIntf-IMyHello#Welcome\"");

web_add_header("User-Agent", "Borland SOAP 1.2");

soap_request("StepName=Welcome", 

"URL=http://localhost:5678/soap/IMyHello", 

"SOAPEnvelope=<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\"?"

"><SOAP-ENV:Envelope xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/"

"encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "

"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:SOAP-ENV=\"http:/"

"/schemas.xmlsoap.org/soap/envelope/\"><SOAP-ENV:Body SOAP-ENV"

":encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><NS1"

":Welcome xmlns:NS1=\"urn:MyHelloIntf-IMyHello\"><name xsi:type=\"xsd"

":string\">于涌</name></NS1:Welcome></SOAP-ENV:Body></SOAP-ENV:Envelope>", 

"Snapshot=t1.inf", 

"ResponseParam=response", 

LAST);

return 0;

}

  我们最关心的内容应该是Web Services服务接口返回的内容,所以需要对脚本进行完善,脚本信息如下,黑色字体为新添加内容。

Action()

{

web_add_header("Content-Type", "text/xml");

web_add_header("SOAPAction", "\"urn:MyHelloIntf-IMyHello#Welcome\"");

web_add_header("User-Agent", "Borland SOAP 1.2");

soap_request("StepName=Welcome", 

"URL=http://localhost:5678/soap/IMyHello", 

"SOAPEnvelope=<?xml version=\"1.0\" encoding=\"GBK\" standalone=\"no\"?"

"><SOAP-ENV:Envelope xmlns:SOAP-ENC=\"http://schemas.xmlsoap.org/soap/"

"encoding/\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" "

"xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:SOAP-ENV=\"http:/"

"/schemas.xmlsoap.org/soap/envelope/\"><SOAP-ENV:Body SOAP-ENV"

":encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\"><NS1"

":Welcome xmlns:NS1=\"urn:MyHelloIntf-IMyHello\"><name xsi:type=\"xsd"

":string\">于涌</name></NS1:Welcome></SOAP-ENV:Body></SOAP-ENV:Envelope>", 

"Snapshot=t1.inf", 

"ResponseParam=response", 

LAST);

     lr_save_string(lr_eval_string("{response}"), "XML_Input_Param"); 

     lr_xml_get_values("XML={XML_Input_Param}",

          "ValueParam=OutputParam",

          "Query=/*/*/*/return",

          LAST );

     lr_output_message(lr_eval_string("返回结果 = {OutputParam}"));

return 0;

}

  脚本的执行信息如下:

Virtual User Script started at : 2012-11-11 14:56:30

Starting action vuser_init.

Ending action vuser_init.

Running Vuser...

Starting iteration 1.

Starting action Action.

Action.c(4): Warning -26593: The header being added may cause unpredictable results when

 applied to all ensuing URLs. It is added anyway   [MsgId: MWAR-26593]

Action.c(4): web_add_header("Content-Type") highest severity level was "warning"   [MsgId: MMSG-26391]

Action.c(6): web_add_header("SOAPAction") was successful   [MsgId: MMSG-26392]

Action.c(8): web_add_header("User-Agent") was successful   [MsgId: MMSG-26392]

Action.c(10): SOAP request "Welcome" started

Action.c(10): SOAP request "Welcome" was successful

Action.c(26): "lr_xml_get_values" succeeded, 1 match processed

Action.c(31): 返回结果 = 欢迎于涌同学!

Ending action Action.

Ending iteration 1.

Ending Vuser...

Starting action vuser_end.

Ending action vuser_end.

Vuser Terminated.

  也许有的读者会说:“我想先看看服务端返回的信息,这可不可以呢?”。“当然没问题”,您只需要在脚本中加入“lr_output_message("%s",lr_eval_string("{response}")); ”(lr_xml_get_values()函数在前面已经介绍过,其在进行该协议类型脚本关联时非常重要,请读者朋友务必掌握),执行脚本时就会打印出响应的相关数据信息,如图13-127所示。

  图13-127  WebServices相关脚本及执行结果

  为了让大家对返回的内容看得更加清楚,这里我将其拷贝出来,放置到my.xml文件中,其内容如图13-128所示。

  图13-128  服务返回的XML相关信息

  从图13-128您会看到有一串乱码,凭直觉这应该是“欢迎于涌同学!”,那么直觉对不对呢?您可以在脚本中加入以下两行代码,如图13-129所示。

  图13-129  转码及输出函数

  其输出结果果真为“欢迎于涌同学!”。图13-129 中使用“lr_convert_string_encoding()”的函数就是将UTF8编码转码为系统语言编码的函数,经过转码后信息显示正确了。也许有的读者会问:“系统返回的xml响应信息有些显得十分混乱,有没有什么方法直接能看出其层次关系呢?”您可以借助树视图,单击“Tree”按钮,将出现图13-130所示界面信息,是不是一目了然了呢!这也方便了您应用lr_xml_get_values()函数时填写“Query”部分内容。

图13-130  WebServices响应结果树视图

 【重要提示】

  (1)从上面Web Services程序编写和脚本应用中,相信大家对该协议的应用已经有了非常清晰的认识,我们给大家演示的是基于C/S的小程序,在实际工作中您测试的应用可能是基于B/S的,它们在实际应用上并没有大的区别,所以请读者朋友们举一反三。

  (2)也许您也会像我一样,在机器上安装有杀毒软件,如果您应用本书此客户端和服务器端小程序时,有可能您的杀毒软件会对其产生干扰,如:将小程序自动删除、运行小程序没反应等情况,此时应暂时关闭杀毒软件,确保小应用可以正常运行。

(未完待续)

版权声明:51Testing软件测试网及相关内容提供者拥有51testing.com内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像。51testing软件测试网欢迎与业内同行进行有益的合作和交流,如果有任何有关内容方面的合作事宜,请联系我们。

相关链接:

精通软件性能测试与LoadRunner最佳实战 连载十三

posted on 2013-07-25 10:50 顺其自然EVO 阅读(769) 评论(0)  编辑  收藏 所属分类: loadrunner


只有注册用户登录后才能发表评论。


网站导航:
 
<2013年7月>
30123456
78910111213
14151617181920
21222324252627
28293031123
45678910

导航

统计

常用链接

留言簿(55)

随笔分类

随笔档案

文章分类

文章档案

搜索

最新评论

阅读排行榜

评论排行榜