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 \n{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=\"\n'<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>
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;
}

Loadrunner 9.5_webservice(SOAP)性能测试的更多相关文章

  1. LoadRunner调用Java程序—性能测试-转载

    LoadRunner调用Java程序—性能测试   为了充分利用LoadRunner的场景控制和分析器,帮助我们更好地控制脚本加载过程,从而展现更直观有效的场景分析图表.本次将重点讨论LoadRunn ...

  2. 自行控制loadrunner的socket协议性能测试 (转)

    一前言 二任务的提出 三实现方案讨论 四技术要点讲解 如何开始录制一个最简单的收发数据包脚本 写日志文件 一行一行读数据包文件 字符串转换为十六进制数据包 发送自己定义的数据包 接收数据包到自定义缓冲 ...

  3. LoadRunner在移动端性能测试的应用

    摘选自 <精通移动app测试实战:技术.工具和案例>新书上市 如果大家之前做过性能测试,我相信一定会应用过大名鼎鼎的性能测试工具-LoadRunner.目前LoadRunner的最新版本为 ...

  4. LoadRunner(一)——性能测试基础及性能指标概述

    参考学习感谢:<精通软件性能测试与LoadRunner实战> 一.典型的性能测试场景 某个产品要发布了,需要对全市的用户做集中培训.通常在进行培训的时候,老师讲解完成一个业务以后,被培训用 ...

  5. 如何使用loadrunner进行web网站性能测试

    loadrunner压力测试原理 本质就是在loadrunner上模拟多个用户同时按固定行为访问web站点.其中固定行为在loadrunner中是通过录制脚本定义的,多个用户同时访问的策略是在load ...

  6. LoadRunner调用Java程序—性能测试

    为了充分利用LoadRunner的场景控制和分析器,帮助我们更好地控制脚本加载过程,从而展现更直观有效的场景分析图表.本次将重点讨论LoadRunner如何调用Java测试代码,完成压力测试. 通常我 ...

  7. Loadrunner进行HTTPS协议性能测试

    1.最简单办法就是在脚本前面加上:web_set_sockets_option("SSL_VERSION","TLS"),一般能解决HTTPS协议的请求问题,无 ...

  8. webService(SOAP)性能测试脚本

    本文以天气预报的webService为基础进行学习   webService地址:http://www.webxml.com.cn/WebServices/WeatherWebService.asmx ...

  9. LoadRunner安装包(性能测试工具分享)

    今天在测试课指导老师朱香元的指导下,开始了测试软件的安装,下面我分享一下整个安装流程,最后我会附带安装包的 第一步:链接:http://pan.baidu.com/s/1pXqk2 密码:csjk , ...

随机推荐

  1. vim打造简易C语言编辑器(在用2016.7.10)

    vim和C语言都需要长期的学习,才能够精通,我制作了这个简单的笔记,主要的作用是,不要在重复的,反复的找同一样东西了,积累是成功的关键. 1. 安装pathogen插件管理器. 在官网下载pathog ...

  2. IIS启用GZIP压缩js、css无效的原因及解决方法

    IIS启用GZIP压缩之后,原以为可以压缩所有文件了,包括html.CSS.JS.图片这些文件,但是当我检查的时候,发现并不是这样的,压缩的只有html文件,而CSS.JS并没有压缩 在卡卡网的网站速 ...

  3. C# winform 多线程异步操作线程启动暂停与恢复

    /// <summary> /// 线程控制模块 /// </summary> private ManualResetEvent manualResetEvent = new ...

  4. vue2.0的ajax

    Vue 原本有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource 目前主流的 Vue 项目,都选择 axios ...

  5. 文件io之——open/close

    一个进程默认打开三个文件描述符: STDIN_FILENO 0STDOUT_FILENO 1STDERR_FILENO 2 man 2 open可查看详情: open函数可以打开或者创建一个文件: # ...

  6. vsftpd配置文件丢失

    deeplinux 卸载vsftpd重装,配置文件/etc/vsftpd.conf不能自动安装,解决办法如下: apt-get remove vsftpd --purge apt-get instal ...

  7. pionter指针小结

    第七章.指针和函数的关系 可以把一个指针声明成为一个指向函数的指针. intfun1(char*,int); int(*pfun1)(char*,int); pfun1=fun1; .... .... ...

  8. 一款基于jquery滑动后固定于顶部的导航

    之前已为大家介绍了好多css3实现的导航菜单.今天分享一款基于jquery滑动后固定于顶部的导航.这款导航的特点是初始位于顶部下面一百个像素,当鼠标滚动时到下方,导航一直处于顶部.效果图如下: 在线预 ...

  9. wp中的动画

    动画目标:必须是依赖属性.可以用于Double,Color,Point,Object类型.对应的动画类后面加Animation,下面代码演示旋转360°. <Button Content=&qu ...

  10. 【WPF】使用Popup控件做浮窗/提示框

    需求:当鼠标移入某个区域时,弹出一个浮窗,以便用户进行下一步操作. 效果如下图: 当鼠标移入左上角的[多选显示]框内,出现下面的浮窗(悬浮在原UI之上).当在浮窗外点击鼠标左键时,隐藏该浮窗. 由于该 ...