51testing 2008-4-18 17:32
使用LoadRunner录制脚本时如何选择合适的协议?(08-04-18)(获奖名单已公布)
很多人使用loadrunner录制脚本时都得不到理想的结果,出现这种情况大多是由于录制脚本时选择了不当的协议。那我们在录制脚本前如何选择合适的通信协议呢?用单协议还是双协议?欢迎大家讨论交流!
[color=#0000ff]感谢会员wangyong3552128提供此精彩问题!如果你也有问题想提出来和大家一起讨论,[/color][url=http://bbs.51testing.com/thread-111420-1-1.html][color=red]请点击此处>>[/color][/url]
[color=#0000ff]说不定下期讨论的问题就是由你提出的哦,请快快参与吧![/color]
[color=#0000ff][/color]
[color=#0000ff][/color]
非常感谢各位会员积极参与,截止至4月25日17:30分,从该贴所有评论中选出部分作出精彩评论的会员予以奖励。礼品和积分将在下周内送出。特别感谢会员wangyong3552128参与获奖名单的评选!
[color=#0000ff][/color]
[color=#0000ff][/color]
[color=#0000ff][/color]
[color=#0000ff][/color]
[table=371][tr][td=4,1,371][align=center][font=宋体][size=2][color=#ff0000]获奖名单[/color][/size][/font][/align][/td][/tr][tr][td][align=center][font=宋体][size=2][color=#0000ff]奖项[/color][/size][/font][/align][/td][td][align=center][font=宋体][size=2][color=#0000ff]获奖名单[/color][/size][/font][/align][/td][td][align=center][font=宋体][size=2][color=#0000ff]奖励[/color][/size][/font][/align][/td][td][align=center][font=宋体][size=2][color=#0000ff]答案链接[/color][/size][/font][/align][/td][/tr][tr][td][align=center][font=宋体][size=2][color=#000000]一等奖[/color][/size][/font][/align][/td][td][align=center][font=宋体][size=2][color=#000000]huior[/color][/size][/font][/align][/td][td][align=center][font=宋体][size=2][color=#000000]当当购物卡50元[/color][/size][/font][/align][/td][td][font=宋体][size=2][color=#000000][url=http://bbs.51testing.com/viewthread.php?tid=112337&page=1#pid952830][align=center][font=宋体][size=2][color=#000000]16#[/color][/size][/font][/align][align=center][/url][/color][/size][/font] [/align][/td][/tr][tr][td=1,2][align=center][font=宋体][size=2][color=#000000]二等奖[/color][/size][/font][/align][/td][td][align=center][font=宋体][size=2][color=#000000]anhuibing[/color][/size][/font][/align][/td][td=1,2][align=center][font=宋体][size=2][color=#000000]300论坛积分[/color][/size][/font][/align][/td][td][font=宋体][size=2][color=#000000][url=http://bbs.51testing.com/viewthread.php?tid=112337&page=1#pid951751][align=center][font=宋体][size=2][color=#000000]13#[/color][/size][/font][/align][align=center][/url][/color][/size][/font] [/align][/td][/tr][tr][td][align=center][font=宋体][size=2][color=#000000]godn_1981[/color][/size][/font][/align][/td][td][font=宋体][size=2][color=#000000][url=http://bbs.51testing.com/viewthread.php?tid=112337&page=2#pid954699][align=center][font=宋体][size=2][color=#000000]21#[/color][/size][/font][/align][align=center][/url][/color][/size][/font] [/align][/td][/tr][tr][td=1,3][align=center][font=宋体][size=2][color=#000000]三等奖[/color][/size][/font][/align][/td][td][align=center][font=宋体][size=2][color=#000000]magic_zhu[/color][/size][/font][/align][/td][td=1,3][align=center][size=2][color=#000000][font=宋体]100论坛积分
[/font][/color][/size][/align][/td][td][font=宋体][size=2][color=#000000][url=http://bbs.51testing.com/viewthread.php?tid=112337&page=1#pid950052][align=center][font=宋体][size=2][color=#000000]3#[/color][/size][/font][/align][align=center][/url][/color][/size][/font] [/align][/td][/tr][tr][td][align=center][font=宋体][size=2][color=#000000]sweetxmy[/color][/size][/font][/align][/td][td][font=宋体][size=2][color=#000000][url=http://bbs.51testing.com/viewthread.php?tid=112337&page=1#pid950130][align=center][font=宋体][size=2][color=#000000]4#[/color][/size][/font][/align][align=center][/url][/color][/size][/font] [/align][/td][/tr][tr][td][align=center][font=宋体][size=2][color=#000000]fengyun32[/color][/size][/font][/align][/td][td][font=宋体][size=2][color=#000000][url=http://bbs.51testing.com/viewthread.php?tid=112337&page=1#pid951687][align=center][font=宋体][size=2][color=#000000]12#[/color][/size][/font][/align][align=center][/url][/color][/size][/font] [/align][/td][/tr][/table]
guoyan12345 2008-4-20 16:18
对于WEB应用来说,采用的是HTTP/HTTPS协议;对于数据库的应用来说采用的是数据库本身的协议;对于SOCKET应用来说采用的是SOCKET协议。当然也有选择多个协议的时候,总之选择何种协议取决于应用和客户之间的通信协议。
magic_zhu 2008-4-20 18:12
对于常见的应用软件,可以根据软件的结构来选择协议:
B/S 结构,选择WEB(Http/Html)协议
C/S结构,可以根据后端数据库的类型来选择,如SybaseCTLib协议用于测试后台的数据库为Sybase的应用;MS SQL Server协议用与测试后台数据库为 SQL Server的应用;对于一些没有数据库的Windows应用,可选用Windows Sockets底层协议。
总之,真确选择协议,就要熟悉被测试应用的技术架构。以下列出一些LoadRounner支持的协议:
一般应用:C Vuser、VB Vuser、VB Script Vuser、JAVA Vuser、JavaScript Vuser
电子商务:WEB(Http/Html)、FTP、LDAP、Palm、Web/WinsocketDual Protocol
客户端/服务器:MS SQL Server、ODBC、Oracle、DB2、Sybase CTlib、Sybase DBlib、Domain Name Resolution(DNS)、Windows Socket
分布式组件:COM/DCOM、Corba-Java、Rmi_Java
EJB:EJB、Rmi_Java
ERP/CRP:Oracle NCA、SAP-Web、SAPGUI、SAPGUI/SAP-Web Dual Protocol、PropleSoft_Tuxedo、Siebel Web、Siebel-DB2 CLI、Sieble-MSSQL、Sieble Oracle
遗留系统:Terminal Emulation (RTE)
Mail 服务:Internet Messaging(IMAP)、MS Exchange(MAPI)、POP3、SMTP
中间件:Jacada、Tuxedo 6、Tuxedo 7
无线系统:i-mode、voiceXML、WAP
应用部署软件:Citrix_ICA
流:Media Plays(MMS)、Real
sweetxmy 2008-4-20 20:42
转一段对于loadrunner协议选择的经典解答
协议是数据在网络中传输的结构模式。协议不同,其数据报文的结构也有所不同。
协议是有层次的,一般我们从ip层开始,往上有TCP协议层,UDP协议层,而TCP和UDP协议层上又有http协议层,ftp协议层,smtp协议层等我们在lr中看到的这些应用层的协议。
其实这些高层协议都是对底层协议进行的进一步封装。举个简单例子,本来IP协议的数据报文是无序,不是可靠传输的,在其数据报文外面增加了报文序号,报文状态等数据段就构成了TCP协议层。
所以我们很多网络应用,没有找到合适的协议,就用winsock来录制,那是肯定没有问题的。因为几乎所有的网络传输中都是基于tcp协议或udp协议的,而socket正是这一级上的概念。但是由于socket协议级别太低,你录下来的东西是很难理解的,都是socket,port,data之类的东西。所以,我们尽量用高层协议来录制,我们就能看懂了。
话要再说回来,解决一下具体的问题。我们看到一个软件体系架构,应该怎样选择录制协议呢?
说到这里,我要说一下自己对lr录制机理的理解(我没有接触l过r内核,只是凭猜测和推断)。在录制时,lr应该会对你从本机发出去的数据进行截包,并拆包。因为我们知道协议的不同就是体现在数据包的结构不同,lr应该通过对包结构的分析,判断是不是它支持的协议,对包数据的分析,来获取用户发送的东西。
比如你用ftp的协议去录制一个访问网页的IE操作,那肯定是无所收获的。因为lr没有在网络截获到ftp协议格式的包,都是http协议格式的包,它不认,当然就是一个录制为空的结果了。
现在我们弄懂了这个事情,就知道该如何选择协议了。看见很多人关心lr是不是支持mysql协议。我认为要寻找的答案的思路是这样的:
1。首先弄清mysql协议和其他数据库协议的关系,看能不能用其它数据库协议录制。但其实oracle的cs协议是oracle独有自己开发的协议,sqlserver也是一样,而mysql又与这几大产品又不是隶属关系,其脚本录制的可能性很小。
2。mysql协议的底层是基于什么协议的,如果直接构建在tcp协议上,lr又不支持mysql协议,那只能考虑用低一点的协议录录看,即socket。如果mysql协议是构建在odbc协议上的,那么就可能用lr的odbc api来写。
lucky_snow 2008-4-21 10:39
只用过针对WEB应用的HTTP/HTML协议:loveliness:
Ego 2008-4-21 10:49
LR中协议 是要根据 服务器和客户端 之间的 通信是采用什么协议来选择的.....:loveliness:
wangyong3552128 2008-4-21 11:25
发现有很多人在进行性能测试前,甚至不知道自己所测试的项目用的什么协议,大多数朋友只知道B/S结构的用WEB(Http/Html)协议,C/S结构的用Windows Sockets协议或者加数据库协议,可能大家和我一样用的最多的是WEB(Http/Html)协议吧。见到B/S结构的系统就用WEB(Http/Html)协议,万一研发人员在我们所测试的B/S系统的某个模块中的一个小功能用了别的协议呢,那么我们录制的脚本在回放时一定出现错误,白浪费录制脚本时花的时间。
追寻浮华 2008-4-21 11:28
我来说说,大家都常讨论这个问题,4楼的 我也很详细的看了。我还是个菜鸟,对socket的不会啊。
我有个现实点的问题想提,就是数据库的相关的。
以前都是用web/http的录制bs结构的东西,
那么我加上sqlserver ,开了一个多协议脚本,但是录制出来的东西,我没发现和单web协议的有什么区别。
谁能说说sqlserver脚本,主要录制了什么呢?
wangyong3552128 2008-4-21 11:38
楼上的,你单独用sqlserver协议试试。
贱王之王 2008-4-21 12:26
socket&数据库的基本都还不会,学习各帖子,大家积极发言啊
xushouwu 2008-4-21 14:16
我也是刚学习用loadrunner录制脚本,来这里向大家学习学习:)
fengyun32 2008-4-22 14:55
转载:
很多时候一提到不是基于浏览器的应用,很多人就会想到用WinSocket协议来录制,仿佛Form窗体都可以用Winsocket 。
从道理上讲网络通讯的底层都是基于Socket的,例如TCP、UPD等,似乎所有的程序都可以用Socket协议来录制。但是事实不是这样的,因为选择的协议决定了LoadRunner如何捕获数据包。否则会多捕获很多无用的数据。
因此,不是所有的程序都是适合WinSocket协议的。实际上,那些基于Socket开发的应用才真正适合Socket协议来进行录制。其他的,例如基于数据库的应用,就不太时候Socket协议,甚至可能录制不到脚本。
很多C/S程序,一定要选择合适的协议。根据作者的经验,C/S的程序多数需要手工开发很多脚本,因为录制的很多回放时候或多或少都会有些问题,但是可以参考录制的结果。
所以测试一个程序,一定要搞清楚开发人员用了什么技术、数据流是什么协议封装的
转载二:
转一段对于loadrunner协议选择的经典解答
协议是数据在网络中传输的结构模式。协议不同,其数据报文的结构也有所不同。
协议是有层次的,一般我们从ip层开始,往上有TCP协议层,UDP协议层,而TCP和UDP协议层上又有http协议层,ftp协议层,smtp协议层等我们在lr中看到的这些应用层的协议。
其实这些高层协议都是对底层协议进行的进一步封装。举个简单例子,本来IP协议的数据报文是无序,不是可靠传输的,在其数据报文外面增加了报文序号,报文状态等数据段就构成了TCP协议层。
所以我们很多网络应用,没有找到合适的协议,就用winsock来录制,那是肯定没有问题的。因为几乎所有的网络传输中都是基于tcp协议或udp协议的,而socket正是这一级上的概念。但是由于socket协议级别太低,你录下来的东西是很难理解的,都是socket,port,data之类的东西。所以,我们尽量用高层协议来录制,我们就能看懂了。
话要再说回来,解决一下具体的问题。我们看到一个软件体系架构,应该怎样选择录制协议呢?
说到这里,我要说一下自己对lr录制机理的理解(我没有接触l过r内核,只是凭猜测和推断)。在录制时,lr应该会对你从本机发出去的数据进行截包,并拆包。因为我们知道协议的不同就是体现在数据包的结构不同,lr应该通过对包结构的分析,判断是不是它支持的协议,对包数据的分析,来获取用户发送的东西。
比如你用ftp的协议去录制一个访问网页的IE操作,那肯定是无所收获的。因为lr没有在网络截获到ftp协议格式的包,都是http协议格式的包,它不认,当然就是一个录制为空的结果了。
现在我们弄懂了这个事情,就知道该如何选择协议了。看见很多人关心lr是不是支持mysql协议。我认为要寻找的答案的思路是这样的:
1。首先弄清mysql协议和其他数据库协议的关系,看能不能用其它数据库协议录制。但其实oracle的cs协议是oracle独有自己开发的协议,sqlserver也是一样,而mysql又与这几大产品又不是隶属关系,其脚本录制的可能性很小。
2。mysql协议的底层是基于什么协议的,如果直接构建在tcp协议上,lr又不支持mysql协议,那只能考虑用低一点的协议录录看,即socket。如果mysql协议是构建在odbc协议上的,那么就可能用lr的odbc api来写。
[[i] 本帖最后由 fengyun32 于 2008-4-22 14:56 编辑 [/i]]
anhuibing 2008-4-22 15:33
理论上来说我们在对一个系统做性能测试以前,要先和开发人员了解一下他们在开发过程中都用了些什么技术,数据流是用什么协议封装的,还要了解我们要测试的系统的网络结构,服务器的配置等问题;还有就是要知道系统客户端和第一服务器间的协议,这中间就涉及到一个中间件的问题。另外我们要知道协议的选择直接关系到LR会捕获到什么样的数据包。这些是进行性能测试的基础。
下面说几个测试的原则(都是自己遇到过的,呵呵,没遇到过的就不知道了):
1、一般情况下b/s构架的只要 选择http协议就可以了,如果有中间件的则选择中间件服务器的协议 ;
2、一般不是基于浏览器的,我们在测试的过程中都会选择WinSocket协议来录制,理论上来讲我们这样选择是正确的,但我们要知道在录制的时候所选择的协议就决定了LR如何捕获数据包,如果我们选择错误了,将会捕获到一些无用的数据包。cs结构是比较复杂的,在这里我要提醒大家,一定要搞清楚cs是client-database还是client-server-database结构的,只有这样我们才能够决定是选择WinSocket协议还是sql协议,或者说选择多个协议;当然协议的选择也是一个探索的过程,只要能够得到我们想要的结果,那就是正确的。还有一点,我们在做性能测试的时候应该是有测试重点的,呵呵。
3、关于单协议和双协议,我只知道IE6内核的浏览器在录制脚本的时候要选择单协议,而IE7内核的浏览器在录制脚本的时候要使用双协议。
[[i] 本帖最后由 anhuibing 于 2008-4-22 15:35 编辑 [/i]]
jjjwxl 2008-4-22 15:43
回复 1# 的帖子
学习中
zlyhello 2008-4-23 11:18
阅过。
huior 2008-4-23 11:21
我的回答,请看
[url]http://www.51testing.com/?10851/action_viewspace_itemid_80681.html[/url]
若有不敬,还望海涵
rongner 2008-4-23 15:09
终于找到这个了
这问题,找了好久。终于看到了,受教。:D
godn_1981 2008-4-24 09:24
怎么这么少人来回答?
奇怪? 这个问题这么不受欢迎?难道是很难回答,还是大家用LR比较少,不熟悉?大家积极回答阿,不能老是被那几个人拿奖呀~~~~:lol :lol
huior 2008-4-24 10:03
回复 18# 的帖子
大家可能都在忙,上周的问题参与的人也很少。
最近可能招聘的人特别多,昨天就接到两个电话。
祝大家步步高升!
tengmy 2008-4-24 11:37
转
LR支持的协议和应用非常广泛,很少有人能用完这么多协议,我们就常见的大多数人用的加以讨论:
B/S系统:选择Web(Http/Html),
C/S系统:根据C/S结构所用到的后台数据库来选择不同的协议,如果后台数据库是Sybase,则采用sybaseCTlib协议,如果是Sql server,则使用MS Sql server的协议,至于oracle 数据库系统,当然就使用oracle 2-tier协议。
对于没有数据库的c/s(ftp, SMTP)这些可以选择windows sockets协议。
至于其他的ERP,EJB(需要ejbdetector.jar),选择相应的协议即可.
godn_1981 2008-4-24 13:27
如何选择协议?
这个问题吧,问的非常好,应该是大家都比较关心的问题。当年我也一直未这个问题很困惑。
我想在回答这个问题之前,先搞清楚什么是协议,为什么要选择协议。这就需要我们对通信机理有一些的了解。
首先,什么是协议?
协议无非就是一个约定,关于数据包发送的格式的约定,就是说如果大家都这样发送,那么通信就能够成功,如果大家都各按各的来,那么就没办法进行通信了。
那么接下来就是LR录制时的工作原理了,LR的录制和WR不一样,它不关心你的对象识别什么的,不关心你的什么窗口之类的,LR有一个Agent进程,来专门监控客户端和服务器之间的通信,然后用自己的函数进行录制。所以说,LR录制的时候关心的是通信,是客户端和服务器之间的数据包。说到这里,大家就比较清楚了,为什么有的时候不能录制呢?因为,协议不认识阿,导致LR截获的数据包不能解析,所以录制下来是空的。
到这里我们再来看,那我们怎么样选择协议呢?当然原则就是说,你数据包的通信协议能被LR识别。
过去流行的一种说法是,只要B/s结构的都是选择http协议,如果不是b/s那么肯定是socket,其实这种说法是比较肤浅或者比较片面的,我觉得要真正理解这个问题,必须搞清楚你所测系统的数据流采用的什么协议包装的。这个我个人觉得,最好是能去向开发人员多了解,多学习。(说到这里,我想顺便建议一点:测试人员向开发人员学习是个好习惯,多学一点底层的东西,或者对程序架构,数据流向,内部结构分析多了解一点,对自己的测试很有帮助,对自己的成长也是有帮助的),另外,个人觉得,作为一个测试人员需要多了解一些网络方面的专业知识,最好学习一些网络分析工具譬如说Sniffer等,这对测试很有帮助。
说了这么多,似乎跑题了?还是回到正题,如何选择协议。
我下面给大家推荐一些建议值,是我在某本测试专业书籍上看到了,给大家贴上来,仅供参考。我还是说,具体问题具体分析,选择协议不是一个教条的事情,而是需要研究探索并尝试。
协议选择参考:
应用类型 协议选择
1. Web网站 HTTP/HTML
2. FTP服务器 FTP
3. 邮件服务器 IMAP,POP3,SMTP
4. C/S (第一种)客户端以ADO,OLEDB方法连接后台数据库 MS SQL Server,Oracle,Sybase,DB2,Infrmix
C/S (第二种)客户端以ODBC方法连接后台数据库 ODBC
C/S (第三种)没有后台数据库 Socket
5. ERP系统 SAP Peoplesoft
6.分布式组件 COM/DACOM EJB
7.无线应用 WAP PALM
总之,只有充分了解被测系统的应用类型和技术架构,才能做出正确的选择。
wangyong3552128 2008-4-24 15:11
111
11
CHOUYUNHAT 2008-4-24 15:42
我的应用程序是C#写的,本质上是C/S结构,但有一个WebService中间层。Client端必须要通过WebService访问Server,SQL操作全在这个Web上。Client端得到Web返回的结果。请有谁知道用什么协议比较好?理由是什么?
akitt 2008-4-24 15:42
弱弱的问下
什么是:分布式组件 COM/DACOM EJB
lovemiya 2008-4-25 16:28
本人转载了一片文章,希望可以回答这个问题!
[img]http://images.blogcn.com//2008/4/25/4/agule,20080425163651794.jpg[/img]
[img]http://images.blogcn.com//2008/4/25/4/agule,20080425163650543.jpg[/img]
[[i] 本帖最后由 lovemiya 于 2008-4-25 16:52 编辑 [/i]]
xuliya04 2008-4-26 16:03
loadrunner来测试p2p流媒体点播系统
[b]size=5]我想问问,如果我想用loadrunner来测试p2p流媒体点播系统,是用java开发的,那我应该用什么协议阿?如能指导,感恩不尽/![/size][/b]
wangyong3552128 2008-4-28 09:41
从《软件评测师教程》中选取的
从《软件评测师教程》中选取的。
wangyong3552128 2008-4-28 09:44
回复 23# 的帖子
使用Web Service协议试试。
wangyjacky 2008-5-5 09:29
这个问题对我们初学者受益匪浅啊,极顶:victory:
cary12 2008-5-5 10:54
ding yi xia
shallwe.show 2008-5-7 17:50
来 顶一下 我终于知道我的脚本为什么 不能用了 感谢下 先
whkwzyc 2008-5-15 15:37
我要测试c/s结构的应用程序,数据库是ms sql server,可是选择MS SQL SERVER协议时,录制到的事件总为0,只有选择windows sockets时才能录制到事件。请问,这是什么原因?
hucm2008 2008-5-21 15:10
谢谢
在这里我学到了很多:)
24766504 2008-6-2 22:59
[quote]原帖由 [i]CHOUYUNHAT[/i] 于 2008-4-24 15:42 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=954925&ptid=112337][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
我的应用程序是C#写的,本质上是C/S结构,但有一个WebService中间层。Client端必须要通过WebService访问Server,SQL操作全在这个Web上。Client端得到Web返回的结果。请有谁知道用什么协议比较好?理由是什么? [/quote]
我也正在弄一个相似的项目,以ESRI产品为平台,ORACLE数据库,DELPHE开发语言,WEBSERVICES为发布服务器,录制脚本时不知道用什么协议我就一个一个的试,最后用WEBSERVICES和HTTP录制的脚本都可以成功运行.用WEBSERVICES录的脚本结构比较清晰,但我还没找到关联的方法,如不关联则脚本无实际用途.所以明天还得继续尝试
vxiaoqiangs 2008-6-4 14:26
唉,没用过LR,LZ有没有LR的下载网址推荐个,下回去自己研究研究!
huihuike 2008-6-4 23:59
需要加强学习
jasonxu 2008-6-10 20:41
[quote]原帖由 [i]tengmy[/i] 于 2008-4-24 11:37 发表 [url=http://bbs.51testing.com/redirect.php?goto=findpost&pid=954601&ptid=112337][img]http://bbs.51testing.com/images/common/back.gif[/img][/url]
LR支持的协议和应用非常广泛,很少有人能用完这么多协议,我们就常见的大多数人用的加以讨论:
B/S系统:选择Web(Http/Html),
C/S系统:根据C/S结构所用到的后台数据库来选择不同的协议,如果后台数据库是Sybase,则 ... [/quote]
MSSQL用ODBC也可以
页:
[1]