性能测试总结工作总结-基于WebService协议脚本 内置函数手动编写
LoadRunner基于WebService协议脚本
WebService协议脚本有三种生成方式,一种是直接通过LoadRunner导入URL自动解析生成;一种是使用LoadRunner内置函数手动编写;再一种是使用SoapUI工具导入xml文件方式生成脚本;最后一种比较方便、出错少。
备注:测试地址:http://192.168.100.152:8650/IMyRole/;数据库服务器用户名和密码:administrator/ grid2008;数据库用户名和密码: LibSvr/grid2008。
1.1. LR自动解析生成
1、创建WebService脚本;
图表1创建Webservice脚本


2.点击Manage Services,在弹出的对话框中点击import->选择WSDL格式是URL->输入URL,点击import;如图步骤成功的导入Services:
图表2引入WSDL请求


3.将光标定位在action中,点击Add Services Call,Operation处选择操作的接口,并对接口中参数进行参数化,点击OK,成功生成脚本;
图表3添加Service请求


3、生成的脚本:
图表4生成的WebService协议脚本


上述方法会出现问题,loadrunner在运用webservice协议中,可以直接访问和导入wsdl地址得到所需web_service_call请求,虽然请求得到了,但是loadrunner中一直报"Error:ExtractResultArgfailure: 外部组件发生异常",对于工具上的问题,在度娘中寻找资料,多次尝试,结果还是如此,于是换其他思路方法去解决。
1.2. LR内置函数手动编写
用LR中内置函数web_custom_request和soap_request手工编写,并模拟发送webservice的soap请求,如下:
注:web_custom_request和soap_request函数具体用法,请参考LR帮助说明
方法1:
web_set_max_html_param_len("999999");
web_add_header("SOAPAction","\http://tempuri.org/IFileService/DownloadFile\");
web_add_header("Content-Type","text/xml;charset=UTF-8");
web_add_header("User-Agent", "Apache-HttpClient/4.1.1 (java 1.5)");
//将请求方在Body体中。
web_custom_request("default.aspx",
"URL=http://{ip}/FileService.svc",
"Method=POST",
"Snapshot=t7.inf",
"Body=<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\" "xmlns:gta=\"http://schemas.datacontract.org/2004/07/GTA.EFM.ViewModel\"><soapenv:Header/>"
"<soapenv:Body><tem:DownloadFile><!--Optional:--><tem:request><!--Optional:--><gta:CreateTime>0001-01-01T00:00:00</gta:CreateTime><!--Optional:--><gta:Data></gta:Data><!--Optional:-->"
"<gta:FileName>123.rar</gta:FileName><!--Optional:--<gta:Guid>88FA133CCF5449FEA24F7D6AEAFD5B90</gta:Guid><!--Optional:--><gta:Length>0</gta:Length><!--Optional:-->"
"<gta:Name></gta:Name><!--Optional:--><gta:Offset>0</gta:Offset><!--Optional:--><gta:SavePath>Attach\\67a618f26eab494390aa06338e61753b</gta:SavePath>"
"</tem:request></tem:DownloadFile></soapenv:Body></soapenv:Envelope>",
LAST);
备注:运用web_custom_request发送soap协议的http请求,包头会出现警告信息,且响应值是正确的,采用soap_request较好。
方法2:
web_add_header("SOAPAction","\"http://tempuri.org/IFileService/DownloadFile\"");
web_add_header("User-Agent", "Apache-HttpClient/4.1.1 (java 1.5)");
soap_request("StepName=Welcome",
"URL=http://{ip}//FileService.svc",
"SOAPEnvelope=<soapenv:Envelope xmlns:soapenv=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\"
"xmlns:gta=\"http://schemas.datacontract.org/2004/07/GTA.EFM.ViewModel\"><soapenv:Header/>"
"<soapenv:Body><tem:DownloadFile><tem:request><gta:CreateTime>0001-01-01T00:00:00</gta:CreateTime><gta:Data></gta:Data>"
"<gta:FileName>123.rar</gta:FileName><gta:Guid>88FA133CCF5449FEA24F7D6AEAFD5B90</gta:Guid><gta:Length>0</gta:Length>"
"<gta:Name></gta:Name><gta:Offset>0</gta:Offset><gta:SavePath>Attach\\67a618f26eab494390aa06338e61753b</gta:SavePath>"
"</tem:request></tem:DownloadFile></soapenv:Body></soapenv:Envelope>",
"Snapshot=t1.inf",
"ResponseParam=response",
LAST);
1.3.借助SoapUI工具
1、运行soapUI.bat启动SoapUI工具,点击New soapUI Project,Init WSD/WADL处输入 WebService请求地址,如http://192.168.103.66/Log/LogService.svc?wsdl,默认勾选Create Request一项,点击OK生成请求。
图表5新建SoapUI Project


2、生成的请求如下,双击接口名称子节点request,在工具右侧打开请求内容,保存接口内容为xml文件,获取请求头消息如图6。
图表6请求头

图表7保存为XML文件


备注:保存文件名加后缀.xml。
3.导入SOAP请求到LoadRunner,在LoadRunner中新建WebService请求,将光标定位在Action中,点击菜单栏Import SOAP->选择图7保存的xml文件;选择后切换到图9,输入URL:http://192.168.103.66/Log/LogService.svc,点击OK生成如图10脚本。
图表8 导入xml到LR

图表9 填充请求URL


图表10 生成脚本


4. 将图6中的请求头信息,添加在脚本中;注释掉soap_request请求中的SOAPAction与请求头中SOAPAction项保留一个即可。
图表11最终脚本

性能测试总结工作总结-基于WebService协议脚本 内置函数手动编写的更多相关文章
- LoadRunner系列之—-02 基于webservice协议的接口测试(脚本实例)
Loadrunner 基于webservice协议的接口压力测试(脚本实例) 接口功能如下:请求接口,报文只有一个参数为证件号码:返回报文中,有证件号码是否能查到对应数据,查到几条数据. 思路:请求w ...
- Loadrunner11中webservice协议脚本总结
Loadrunner11中webservice协议脚本总结 简介 webservices协议是建立可交互操作的分布式应用程序的新平台,它通过一系列的标准和协议来保证程序之间的动态连接,其中最基 ...
- MySQL管理之道:性能调优、高可用与监控内置脚本
MySQL管理之道:性能调优.高可用与监控内置脚本 随书附送脚本 keepalive配置文件和脚本开源工具pssh批量管理服务器(python) 下载地址 http://files.cnblogs.c ...
- python面向对象的多态-类相关内置函数-类内置魔法函数-迭代器协议-上下文管理-04
多态 一种事物具备不同的形态 例如:水 --> 固态.液态.气态 多态:# 多个不同对象可以相应同一个对象,产生不同的结果 首先强调,多态不是一种特殊的语法,而是一种状态,特性(多个不同对象可以 ...
- day15生成器send方法,递归,匿名函数,max结合匿名工作原理,常用的内置函数
复习 ''' 1.带参装饰器 - 自定义 | wraps def wrap(info) def outer1(func): from functools import wraps @wraps(fun ...
- Java 性能分析工具 , 第 2 部分:Java 内置监控工具
引言 本文为 Java 性能分析工具系列文章第二篇,第一篇:操作系统工具.在本文中将介绍如何使用 Java 内置监控工具更加深入的了解 Java 应用程序和 JVM 本身.在 JDK 中有许多内置的工 ...
- 下载PHPDroid: 基于WebView和PHP内置HTTP服务器开发Android应用
基于Android上的PHP(比如我打包的PHPDroid),寥寥几行PHP代码,就能实现一个支持无线局域网用浏览器访问的Android手机的Shell,用于执行命令和PHP代码. 个人在 ...
- C++开发的基于TCP协议的内网聊天工具
项目相关地址 源码:https://github.com/easonjim/TCPChat bug提交:https://github.com/easonjim/TCPChat/issues
- 页面中基于JSTL标签调用函数--之${fn:}内置函数
调用这样一个头文件<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions " ...
随机推荐
- Uva11292--------------(The Dragon of Loowater)勇者斗恶龙 (排序后贪心)
---恢复内容开始--- 题目: Once upon a time, in the Kingdom of Loowater, a minor nuisance turned into a major ...
- PHP简介
PHP PHP是运行在服务器端的脚本,可以运行在UNIX.LINUX.WINDOWS.Mac OS下.PHP的特性包括:1. PHP 独特的语法混合了 C.Java.Perl 以及 PHP 自创新的语 ...
- IOCP和WSA异步协同客户端版
有些小伙伴看了之前发的WIN平台下IOCP和WSA异步协同处理SOCKET后有些疑惑,所以就画了个简易流程图+架构图发上来给小伙伴参考 简单说,WSA异步控制CONNECT,IOCP控制WSASend ...
- 02shell编程环境的搭建
02shell编程环境的搭建 [02]Shell编程 02shell编程环境的搭建 在不同的操作系统上搭建shell编程环境 Linux Windows Mac 编辑器的选择 系统环境的搭建 注: 选 ...
- 使用Jenkins可持续集成maven项目
首先下载最新的Jenkins的war包,放在tomcat的webapps的目录下,然后运行,例如: http://121.42.62.45:8080/jenkins/ 然后按照一步步的提示,下载相关的 ...
- HBase工程师线上工作经验总结----HBase常见问题及分析
阅读本文可以带着下面问题:1.HBase遇到问题,可以从几方面解决问题?2.HBase个别请求为什么很慢?你认为是什么原因?3.客户端读写请求为什么大量出错?该从哪方面来分析?4.大量服务端excep ...
- localStorage、sessionStorage在无痕模式下被禁用
在移动web开发中,经常会使用到localStorage去缓存一些数据,一般情况下,我们只需要按照下面的代码去使用就不会有 问题. if(window.localStorage){ localStor ...
- 由system.currentTimeMillis() 获得当前的时间
System类代表系统,系统级的很多属性和控制方法都放置在该类的内部.该类位于java.lang包. currentTimeMillis方法 public static long currentTim ...
- eclipse @override注解出错
在工程中新建了一个接口,定义了一个methodA,然后写一个接口类实现该方法,并加上@override注解 项目提示@override出错,必须覆盖原方法XXX,解决办法 1)项目右键-project ...
- jsoncpp初使用
一 前言 由于最近一个c++项目需要使用json这种数据格式来传输数据, so上网去寻找合适的类库,毕竟对于这种不是很新的技术, 自己造轮子有点得不偿失. 从百度上翻了翻, 基本上就boost跟jso ...

