loadrunner socket协议问题归纳(6)
首先让我们先看一下loadrunner- winsock 函数 一览表:
lrs_accept_connection 接受侦听套接字连接
lrs_close_socket 关闭打开的套接字
lrs_create_socket 初始化套接字
lrs_disable_socket 禁用套接字操作
lrs_exclude_socket 重播期间排除套接字
lrs_get_socket_attrib 获取套接字属性
lrs_get_socket_handler 获取指定套接字的套接字处理程序
lrs_length_receive 接收来自指定长度的缓冲区的数据
lrs_receive 接收来自套接字的数据
lrs_receive_ex 接收来自数据报或流套接字的数据(具有特定长度)
lrs_send 将数据发送到数据报上或流套接字中
lrs_set_receive_option 设置套接字接收选项
lrs_set_socket_handler 设置特定套接字的套接字处理程序
lrs_set_socket_options 设置套接字选项
缓冲区函数
lrs_free_buffer 释放分配给缓冲区的内存
lrs_get_buffer_by_name 从数据文件中获取缓冲区及其大小
lrs_get_last_received_buffer 获取套接字上接收到的最后的缓冲区及其大小
lrs_get_last_received_buffer_size 获取套接字上接收到的最后一个缓冲区的大小
lrs_get_received_buffer 获取最后接收到的缓冲区或其一部分
lrs_get_static_buffer 获取静态缓冲区或其一部分
lrs_get_user_buffer 获取套接字的用户数据的内容
lrs_get_user_buffer_size 获取套接字的用户数据的大小
lrs_set_send_buffer 指定要在套接字上发送的缓冲区
环境函数
lrs_cleanup 终止 Windows 套接字 DLL 的使用
lrs_startup 初始化 Windows 套接字 DLL
关联语句函数
lrs_save_param 将静态或接收到的缓冲区(或缓冲区部分)保存到参数中
lrs_save_param_ex 将用户、静态或接收到的缓冲区(或缓冲区部分)保存到参数中
lrs_save_searched_string 在静态或接收到的缓冲区中搜索出现的字符串,将出现字符串的缓冲区部分保存到参数中
转换函数
lrs_ascii_to_ebcdic 将缓冲区数据从 ASCII 格式转换成 EBCDIC 格式
lrs_decimal_to_hex_string 将十进制整数转换为十六进制字符串
lrs_ebcdic_to_ascii 将缓冲区数据从 EBCDIC 格式转换成ASCII 格式
lrs_hex_string_to_int 将十六进制字符串转换为整数
超时函数
lrs_set_accept_timeout 为接受套接字设置超时
lrs_set_connect_timeout 为连接到套接字设置超时
lrs_set_recv_timeout 为接收套接字上的初始预期数据设置超时
lrs_set_recv_timeout 为建立连接后接收套接字上的预期数据设置超时
lrs_set_send_timeout 为发送套接字数据设置超时
录制会话之后,通过 VuGen 的内置编辑器可以查看录制的代码。您可以在脚本中滚动,查看应用程序生成的函数,并检查传输的数据。在主窗口中查看脚本时,可以看到VuGen 录制活动的顺序。在典型的会话期间,将录制下列函数顺序:
lrs_startup 初始化 WinSock DLL
lrs_create_socket 初始化套接字
lrs_send 在数据报上或者向流套接字发送数据
lrs_receive 接收来自数据报或流套接字的数据
lrs_disable_socket 禁用套接字操作
lrs_close_socket 关闭打开的套接字
lrs_cleanup 终止 WinSock DLL 的使用
VuGen 在 Windows 上使用 Windows 套接字协议支持应用程序的录制和重播;而在UNIX 平台上仅支持重播。
--------------------------------------------------------------------------------------------------------------------
那如何用LoadRunner使用winsock协议测试性能呢?
如何来测试使用windows sockets协议的性能呢?可以使用loadrunner来测试。步骤如下
首先、我们需要获得传送的数据包的内容,可以通过抓包工具来获取(如sniffer)。也可以直接向开发人员索取。要理解数据包中每位数据的含义,如哪些是启始位,哪些是正文,哪些是校验,哪些是结束等。并统计数据包大小。
第二步、我们开始编写脚本,
1、我们初始化Windows Sockets DLL:lrs_startup(version)。
2、然后建立socket连接:lrs_create_socket。
3、然后再把数据放在一个buffer中传送到目标服务器:lrs_send,数据包内容放在data.ws中。这样,一个发送就完成了。
4、然后我们再来接受服务器端给我们的返回数据:lrs_receive。
5、别忘记来个lrs_close_socket来关闭socket,做事有始有终嘛。
简单吧,复杂的流程就是相互组合。最后不要忘记在一些关键点前后加上transaction,以方便得到关键点的性能。
第三步、我们开始执行,与其他协议一样,把得到的结果进行分析。
下面这段是zee写得关于手写winsock脚本。转载过来学习下
对winsock脚本来说,手写脚本不是首选。为了理解如何建立脚本和Buffers,你需要知道服务器发送出来的协议
的细节。
为了自动产生脚本,需要录制一个客户端的应用。
如果你对服务器使用的协议非常的了解,那么也许你可以建立一个Data.ws文件和连贯的actions。但是这个过程
一定是单调而乏味的。你要有一些winsock脚本方面的经验。
为了看一个winsock脚本的例子,先试着录制一个简单的WEB应用(比如一个访问某站点首页的动作)。它会生成一
个简单的winsock脚本和buffer内容的格式。
为了建立LoadRunner的winsock脚本,录制一个客户端应用更可取。这样可以让LoadRunner从windows socket通
信中看到客户端和服务器的底层通信。LoadRunner使用wsock32.dll库录制socket通信,这个库包括windows
socket的API。
为了手写LoadRunner的winsock脚本,需要非常熟悉使用的协议。录制一个简单的浏览器的操作可以看到低于HTT
P协议通信的脚本。
下面是一个简单的例子:
以前的例子中未能接触到socket协议,但这也是一个较为多用的协议,也是必须要学习掌握的。
此次例子采用本地及时通讯软件飞秋来做学习。
通过我下面录制的脚本来说明:
/********************************************************************* #include "lrs.h" Action() //这是第一步initializes a socket //取得缓冲区数据 lr_end_transaction("send", LR_AUTO); } return 0; |
下面我们来看buf中发送的数据,数据都会保存在data.ws文件中:
发送的明文内容:lihongtao,但是可以看出,这里显示的都是密文,应该是按格式转换了编码。
;WSRData 2 1
send buf1 371
"1_lbt4_0#128#0016D3B50AA3#0#0#0:1246963533:Administrator:LND7DEMO:4194592:"
"20002:21b56c1d54100180afb94c84050a7f371f1010472b26092920ea2629699a74b2cbfe"
"242eb74b16e66e6fe90c4610ccb110ce400851e68e16c51470a91120dfcdf324444e647444"
"864e823810539413ed0b6b29a8ed46d2f95839047dbe4555b141afb80f5cf9c06e8af0aa90"
"afe852dbfedab05ee91932a95f6faef8207907fb:5f4c457c52738bfdfaf28c9303d292c6"
"\x00\x00"
recv buf2 87
"1_lbt4_0#131#001109AB80C9#0#0#0:1246475216:Administrator:MM-7QL3Z0JYUJN6:3"
"3:1246963533"
"\x00"
-1
loadrunner socket协议问题归纳(6)的更多相关文章
- loadrunner socket协议问题归纳(3)
摘要:通过实例讲解loadrunner中的socket协议性能测试的一种测试方法,如何不依赖loadrunner既定规则,自行控制收发数据包 关键词:Loadrunner,socket,自行控制,收发 ...
- loadrunner socket协议问题归纳(0)
一.概述 Loadrunner拥有极为丰富的工具箱,供予我们制造出各种奇妙魔法的能力.其中就有此次要讨论的socket套接字操作. 二.socket概述 soc ...
- loadrunner socket协议问题归纳(1)
前段时间测了loadrunner直接发送报文到socket上的性能测试.在此,稍微回顾整理下. 与socket通讯,有两种方式,一种是建立长连接,建立后,不停的发送,接收.另外一种是建立短连接,建立连 ...
- loadrunner socket协议问题归纳(2)
编写步骤 1.建立与服务端的连接 rc=lrs_create_socket(“socket0”,”TCP”,”LocalHost=0”,”RemoteHost=127.0.0.1:8808”,LrsL ...
- loadrunner socket协议问题归纳(5)
获取服务器的返回值,可以用web_reg_save_param函数,该参数最好放到: 语法: int web_reg_save_param(const char *ParamName, <lis ...
- loadrunner socket协议问题归纳(4)---buffer接收变长和定长的数据
测试场景:聊天系统 用户登录后,要先向服务器发送用户名,然后可以发送聊天信息,同时也可以接受聊天信息. 如果接受的字符为定长时,可以设定接受长度.recv buf2 66 #include " ...
- Loadrunner socket协议lrs_receive函数接收到返回数据包 仍然等待服务器返回--解决
前段时间在使用loadrunner socket协议发送数据包到到服务器,使用lrs_receive接收服务器应答数据包,已经接收到数据包,但LR仍然在等待服务器端返回,而且日志打印显示每次接收返回都 ...
- LoadRunner编写Socket协议脚本方法
本文主要介绍使用LoadRunner手工编写Windows Socket协议测试脚本的方法. 通过LoadRunner编写Windows Socket协议测试脚本,总体说来,比较简单.就像把大象放进冰 ...
- Loadrunner 中socket协议RecvBuffer接收到数据长度为空
socket通讯,有两种方式,一种是建立长连接(TCP),建立后,不停的发送,接收.另外一种是建立短连接(UDP),建立连接,发送报文,接收响应,关闭连接.两种方式 server的开销不同. 今天出现 ...
随机推荐
- JNDI数据源(在Tomcat下配置JNDI多数据源实例)
一,添加数据库驱动包加入classpath. 这里我用到了oracle和mysql.所以由两个jar包:ojdbc14.jar和mysql-connector-java-5.1.13-bin.jar. ...
- 20181031noip模拟赛T1
思路: 我们会发现不合法的位置只有两种情况 要么在前半边,要么在后半边 那么,我们将序列劈两次 使两次的长度分别为: (n为偶数时要特判一下,因为根本不可能) (n/2),(n/2+1) (n/2+1 ...
- My SQL常用操作汇总
写这篇随笔的目的是我发现了在上一篇关于My SQL的随笔中存在一些不严谨的代码问题,在这里再次简单的总结一下并加以改进,以代码为主. # !每行命令必须以分号(;)结尾 先通过命令行进入数据库客户端 ...
- Docker 学习:制作一个dockerfile
dockerfile, 主要是四部分组成:基础镜像信息.维护者信息.镜像操作指令.容器启动执行指令. step 1: 按照语法,如下写一个centos操作系统的nignx镜像. 然后记得:wq保存和退 ...
- jQuery笔记: 基本概念与jQuery核心
目录 初识jQuery 为什么要使用jQuery? 如何使用jQuery? jQuery与js加载模式不同 jQuery入口函数的四种写法 jQuery的访问符冲突问题 jQuery核心函数和jQue ...
- Angularjs中的超时处理
关键代码: // 定义一个定时器, 设置5s为请求超时时间 var timer = $timeout(function () { console.log('登录超时!'); // 模拟提示信息 },5 ...
- JavaWeb开发使用jsp还是html做前端页面
一.概述 刚开始学习Javaweb开发的小伙伴都有一个疑惑:用jsp开发前端还是用HTML开发前端呢? 这个疑惑的来源主要是:刚接触完前端但又不深入学习js,接着学习jsp,发现老师们都一直用着jsp ...
- 使同一个server上不同port的django应用可在同一个浏览器上打开
如果我们有两个django应用site1和site2同时跑在同一个server的不同端口,同时我们在同一个浏览器的不同tab登录.那么这时就出出现这种情况,当我们登录site2时就会将site1上登录 ...
- Spring框架中用到的设计模式(转)
主要参考这篇文章 http://blog.didispace.com/spring-design-partern/
- bat脚本,winscp,shell加mysql存储过程实现mysql单条数据迁移
起因 公司有个任务,需要迁移mysql中的单条数据.从公司的dev环境到staging环境,dev环境的mysql安装在windows server 2012 R2下,stage是aws的服务器不能直 ...