zoukankan      html  css  js  c++  java
  • Loadrunner 9.5_webservice(SOAP)性能测试

    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)     选择Loadrunner的webservice协议
    (2)     导入WSDL。 个人认为是让LR同Webservice建立连接,如果导入成功后,在Operations栏中可以看到webservice接口提供的方法
    特别注意:如果webservier是asp.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 {response}"));
    如上参见:http://blog.testsautomation.com/2009/07/web-services-testing-in-loadrunner/
     
    LR WEBSERVICE性能测试
     
    LR在WebService虚拟用户协议中支持两种方式测试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"> "
                   "   <Header/> "
                   "   <Body> "
                   "      <price><id>001</id></price> "
                   "   </Body> "
                   "</Envelope>",
       "LAST");
       lr_end_transaction("REQ", LR_AUTO);
       lr_output_message("Response is : %s ", 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>
    Action()
    {
         web_add_header("SOAPAction", ""CallMe"");
         lr_start_transaction("AUTHOR");
         soap_request("StepName=Sample Soap Request",
           "ExpectedResponse=ANY",
           "URL=http://foo.com/api",
           "SOAPEnvelope= "
           "<?xml version="1.0" encoding="utf-8"?>"
           "<soap:Envelope "
           "xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" >"
           "<soap:Body soap:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">"
           "<GetBookDetails>"
           "<idValue>123</idValue>"
           "</GetBookDetails>"
           "</soap:Body>"
           "</soap:Envelope>",
           "Snapshot=t765765765.inf",
           "ResponseParam=Response_Xml",LAST);
     
     
         lr_xml_get_values("XML={Response_Xml}",
              "ValueParam=Author_Name",
              "Query=/books/book/author",
              LAST);
     
         lr_output_message(lr_eval_string("Author is = {Author_Name}"));
     
         if(strcmp(lr_eval_string("{Author_Name}"),"John Smith") == 0)
         {
            lr_end_transaction("AUTHOR", LR_PASS);
         }
         else
         {
            lr_end_transaction("AUTHOR", LR_FAIL);
         }
         return 0;
    }

  • 相关阅读:
    webpack小知识点
    什么叫做webpack模块
    vue插槽的使用
    如何使用在 React Router v4 中以编程的方式进行导航
    react小知识点集合
    vue小知识点
    react更好的实现操作
    HTTP 协议 Host 请求头的作用
    包管理工具安装问题
    对象的方法
  • 原文地址:https://www.cnblogs.com/shengs/p/4112179.html
Copyright © 2011-2022 走看看