loadrunner & Web Services

2012-11-07  张林 

Loadrunner 9.5_webservice(SOAP)性能测试

http://blog.sina.com.cn/s/blog_7d31ef0e0100twl1.html

WebService定义:

Webservice是一种新的使用基于XML标准和协议来交换信息的WEB应用程序。是基于SOAP(简单对象访问协议)消息的应该协议,只是为WEB页面或可执行程序提供编程接口。

个人理解:就是webservice服务与客户端的数据交流是通过XML来实现,XML文件就是接口,客户端发送XML文件的请求,XML文件中有要调要后台的方法和传送的数据等信息。服务器返回结果到客户端也是XML文件,

 

注:基于Webservice构建的应该系统称之为SOA(面向服务架构),系统性能取绝于服务组件的单独性能以及接口性能。

 

名司解释

在构建和使用Web Service,主要用到以下几个关键的技术和规则:

  1.XML:描述数据的标准方法.

  2.SOAP:表示信息交换的协议.

  3.WSDL:Web服务描述语言.

4.UDDI(Universal Description, Discovery and Integration):通用描述、发现与集成,它是一种独立于平台的,基于XML语言的用于在互联网上描述商务的协议。

 

Loadrunner测试webservice测试一般步聚是:

 

(1)     选择Loadrunnerwebservice协议

(2)     导入WSDL 个人认为是让LRWebservice建立连接,如果导入成功后,在Operations栏中可以看到webservice接口提供的方法

特别注意:如果webservierasp.net开发以“*.asmx”结尾的路径。要加上“?wsdl”才能成功。如:http://192.168.0.30/securityws/SecurityWebService/SecurityWS.asmx?wsdl

总之,应该是以wsdl结尾才正常吧

 

(3)     Webservice导入LR成功后,我们可以创建两种请求中的任意一个,

第一种是:“add service call,

第二种是. Import SOAP”,

 

(4)     创建相关请求,生成代码,并参数化。

(5)     打印响应信息功能,调试代码,直到成功。

如:lr_message(lr_eval_string("Response XML is \n{response}"));

如上参见:http://blog.testsautomation.com/2009/07/web-services-testing-in-loadrunner/

 

LR WEBSERVICE性能测试

 

LRWebService虚拟用户协议中支持两种方式测试WebService,一种是通过“Add Service Call”的方式,一种是Import SOAP的方式。

Import SOAP的方式需要导入定义好的XML请求文件。

取到WebService返回的XML数据后,可以使用XPath的方式验证数据,LR提供了几个处理XML的函数:

lr_xml_get_values()  //Retrieves values of XML elements found by a query

lr_xml_set_values()  //Sets the values of XML elements found by a query

lr_xml_extract()  //Extracts XML string fragments from an XML string

lr_xml_delete()  //Deletes fragments from an XML string

lr_xml_replace()  //Replaces fragments of an XML string

lr_xml_insert()  //Inserts a new XML fragment into an XML strin

lr_xml_find()  //Verifies that XML values are returned by a query

lr_xml_transform()  //Applies Extensible Stylesheet Language (XSL) Transformation to XML data

参见:http://blog.testsautomation.com/2009/05/validating-web-service-response-with-xpath/

 

实际上,使用LR还有一种测试WebService的方式,就是采用HTTP协议,因为WebService是构建在HTTP协议之上的,因此可以WEB虚拟用户协议中的web_custom_request来构造WebService的请求。

 

Action()

{

   web_reg_save_param("Response","LB=", "RB=", LAST);

   web_add_header("SOAPAction", "SampleMethod");

   lr_start_transaction("REQ");

   web_custom_request("Sample_Request","Method=POST",

         "Mode=HTML",

         "RecContentType=text/xml",

         "EncType=text/xml; charset=utf-8",

         "URL=http://example.com:1234/sample/",

         "Body=<Envelope xmlns=\"http://example.com/sample\">\n"

               "   <Header/>\n"

               "   <Body>\n"

               "      <price><id>001</id></price>\n"

               "   </Body>\n"

               "</Envelope>",

   "LAST");

   lr_end_transaction("REQ", LR_AUTO);

   lr_output_message("Response is : %s\n", lr_eval_string("{Response}"));

   return 0;

}

 

参见:http://blog.testsautomation.com/2009/01/web-services-performance-using-loadrunner/

 

学习LR测试WebService时,如果没有现成的WebService,又懒得写或不会写,可以用Parasoft网站的WSDL来试验:

http://soatest.parasoft.com/store-01.wsdl

 

示例代码                    

1.  <books>

2.    <book>

3.        <id>123</id>

4.        <author>John Smith</author>

5.        <title>Working with Legacy code</title>

6.        <publisher>Microsoft</publisher>

7.    </book>

8.  </books>

  1. Action()
  2. {
  3.      web_add_header("SOAPAction", "\"CallMe\"");
  4.      lr_start_transaction("AUTHOR");
  5.      soap_request("StepName=Sample Soap Request",
  6.        "ExpectedResponse=ANY",
  7.        "URL=http://foo.com/api",
  8.        "SOAPEnvelope= "
  9.        "<?xml version=\"1.0\" encoding=\"utf-8\"?>"
  10.        "<soap:Envelope "
  11.        "xmlns:soap=\"http://schemas.xmlsoap.org/soap/envelope/\" >"
  12.        "<soap:Body soap:encodingStyle=\"http://schemas.xmlsoap.org/soap/encoding/\">"
  13.        "<GetBookDetails>"
  14.        "<idValue>123</idValue>"
  15.        "</GetBookDetails>"
  16.        "</soap:Body>"
  17.        "</soap:Envelope>",
  18.        "Snapshot=t765765765.inf",
  19.        "ResponseParam=Response_Xml",LAST);
  20.  
  21.  
  22.      lr_xml_get_values("XML={Response_Xml}",
  23.           "ValueParam=Author_Name",
  24.           "Query=/books/book/author",
  25.           LAST);
  26.  
  27.      lr_output_message(lr_eval_string("Author is = {Author_Name}"));
  28.  
  29.      if(strcmp(lr_eval_string("{Author_Name}"),"John Smith") == 0)
  30.      {
  31.         lr_end_transaction("AUTHOR", LR_PASS);
  32.      }
  33.      else
  34.      {
  35.         lr_end_transaction("AUTHOR", LR_FAIL);
  36.      }
  37.      return 0;
  38. }

 

引自:http://s456123123b.blog.163.com/blog/static/56323322201091853211703/


Web Services performance using LoadRunner HTTP Vuser script
http://blog.testsautomation.com/2009/01/web-services-performance-using-loadrunner/
LoadRunner如何测试WebService
http://www.cnblogs.com/mayingbao/archive/2007/11/15/960799.html
http://wenku.baidu.com/view/c273e66e25c52cc58bd6be10.html

http://www.webservicex.net/uklocation.asmx?WSDL
http://www.webxml.com.cn/WebServices/WeatherWebService.asmx?WSDL
552°/5519 人阅读/1 条评论 发表评论

黄桂梅  2012-11-09

只会做功能测试的人悄悄地飘过。。。


登录 后发表评论