51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 3252|回复: 3
打印 上一主题 下一主题

[求助] LoadRunner之协议选择

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-12-11 18:17:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在学习LoadRunner协议选择之前,我觉得我们有必要了解一下协议的基本概念。
首先我们知道,计算机与计算机之间的通信都离不开通信协议,接着我们来说说通信协议的概念。
通信协议是什么,通信协议实际上是一组规定和约定的集合。
说白了就是两台或者多台计算机在通信时必须约定好本次通信做什么,例如是进行文件传输,还是发送电子邮件;然后约定怎样通信,什么时间通信等。
因此,通信双方要遵从相互可以接受的协议(相同或兼容的协议)才能进行通信,如目前因特网上广泛使用的TCP/IP协议等,任何计算机连入网络后只要运行TCP/IP协议,就可访问因特网。

了解了协议的基本概念和作用之后,我们来说说LoadRunner的协议选择。
LoadRunner首先是一个测试工具,其次是一个性能测试工具,然后是该工具是一个基于协议,也就是说LoadRunner测试的对象都需要使用通信协议,
对于那些不使用通信协议仅仅进行本地处理的软件例如Microsoft Word,LoadRunner就不适用。

说到通信协议我们来熟悉一下协议的分层,按照OSI的分层模型,分层结构如下:
OSI七层模型   TCP/IP协议
应用层        应用层(Application)
表示层        应用层(Application)
会话层        应用层(Application)
传输层        传输层(Transport)
网络层        网络层(Internet)
数据链路层    网络接口层(Network)
物理层

按照TCP/IP协议的分层,分层结构如下:

TCP/IP协议        对应的服务

应用层            WWW、SMTP、FTP、Telnet、Gopher、SNMP
                 Socket、NetBIOS

传输层            TCP、UDP

网络层            IP(ARP、RARP、ICMP)

网络接口层         Ethernet、X.25、PPP、SLIP

第一个分层是由OSI制定但不实用,后一个是目前广泛使用且被业界认做既定标准的协议分层,
下文探讨的LoadRunner协议选择即按TCP/IP协议的分层模型讨论。

接着来说说LoadRunner VuGen中的协议分类,VuGen(LR8.1)中的协议分类如下表所示:
javascript:;" target=_self>
应用程序部署解决方案                      Citrix ICA

客户端/ 服务器                         DB2 CLI、DNS、Informix、MS SQL Server、ODBC、Oracle(2 层)、
                                     Sybase Ctlib、Sybase Dblib 和 Windows Sockets 协议

自定义                                C 模板、Visual Basic 模板、Java 模板、Javascript 和 VBScript 类型的脚本。

分布式组件                             适用于 COM/DCOM、Corba-Java 和 Rmi-Java 协议。

电子商务                               FTP、LDAP、Palm、PeopleSoft 8 mulit-lingual、SOAP、
                                      Web(HTTP/HTML) 和双 Web/WinSocket 协议。

Enterprise Java Bean                  EJB 测试和 Rmi-Java 协议。

ERP/CRM                               Baan、Oracle NCA、Peoplesoft-Tuxedo、SAP-Web、SAPGUI、
                                      Siebel-DB2 CLI、Siebel-MSSQL、Siebel-Web 和 Siebel-Oracle 协议

传统                                   终端仿真 (RTE)。

邮件服务                               Internet 邮件访问协议 (IMAP)、MS Exchange (MAPI)、POP3 和SMTP。

中间件                                 Jacada 和 Tuxedo (6、7)协议。

流数据                                 Media Player (MMS) 和 Real 协议。

无线                                   i-Mode、VoiceXML 和 WAP 协议。

仔细研究发现LoadRunner VuGen中的协议与文章开头所说的通信协议还是有一定的区别的,
例如像LoadRunner VuGen中的C 模板、Visual Basic 模板、Java 模板、Javascript 和
VBScript 类型的脚本均为开发语言,非通信协议,但LoadRunner即把它列在这儿,我们也就暂且认可。

了解了LoadRunner的协议类型之后,我们进入正式话题,即测试时如何选择协议。

正式测试之前,测试人员都需要预先熟悉被测对象,我们需要知道我们的被测对象是一个什么样的结构,是B/S结构还是C/S结构,
了解这个之后,我们还需要了解被测对象所使用的协议是什么,也许有的人说我们的程序使用的是TCP/IP协议,其实他的回答跟我们需要知道的差别很大,
因为我们知道,所有的通信软件都需要使用TCP/IP协议,为什么呢,因为这个协议是底层协议,所有应用层数据都必须经过这个协议封装之后才能向更底一层传输。
我们需要知道的是被测对象在应用层使用的是什么协议,就像我们使用邮件客户端发送邮件一样,我们知道使用的应用层协议是SMTP,使用邮件客户端接收邮件时使用的时POP3协议。
了解上述信息之后,我们的定位也就准确了,也就是说在LoadRunner中所说的协议基本上都是应用层协议(也有底层协议,例如 Windows Sockets),
知道这点之后,我们在询问开发人员时就避免了不少麻烦,省的开发人员告诉你我们使用的是TCP/IP协议或者其他底层协议。

了解了LoadRunner中的协议之后,我们就进入协议确定阶段,协议的确定,通常有如下几种方法:

1、通过询问开发人员获知所使用的协议,通常这是最简单也是最直接的方法;因为没有人比开发人员更清楚他们所开发的应用程序使用的什么通信协议了;

2、通过概要或详细设计手册获知所使用的协议,在没有开发人员支持的情况,通过概要设计或详细设计获知所使用的协议不失为第二简便方法;

3、通过协议分析工具捕包分析,然后确定被测对象所使用的协议。在使用协议分析工具分析协议过程当中一定要摒除底层协议,不要被底层协议所迷惑;

4、通过以往测试经验确定被测对象所使用的协议,当然通过这种方法确定的协议有一定的不准确性;

通过以上四种方法我们基本就确定了录制时应该选择什么协议,光确定协议是没有用的,最主要的是付诸行动,确定了协议之后,我们进入VuGen开始录制脚本,录制完成后看看是否生成相应脚本,如果脚本内容为空可能我们选择的协议不正确,我们可以尝试选择其他协议。

一般来说协议选择有如下原则:

B/S 结构,选择WEB(Http/Html)协议;

C/S结构,可以根据后端数据库的类型来选择,如SybaseCTLib协议用于测试后台的数据库为Sybase的应用;MS SQL Server协议用与测试后台数据库为 SQL Server的应用;对于一些没有数据库的Windows应用,可选用Windows Sockets底层协议;使用了数据库但使用的是ODBC连接的数据则选择ODBC协议;

对于有些使用纯JAVA编写的C/S结构的东东,采用JAVA,而且不能录制只能手工编写代码(工作量和难度还是有的)。同样不能录制的还包括C、VB Script、VB、VBNet User协议。

对于Windows Sockets协议来说,最适合的那些基于Socket开发的应用程序;但是由于网络通讯的底层都是基于Socket的,因此几乎所有的应用程序都能够通过Socket来录制,
哪可能有人会问,哪既然Socket都能录制下来,还要那么多协议做什么,价格还贼贵,其实最主要的原因就是Socket录制的代码可读性较差,如果Socket的脚本可读性较高的话,
实话就没有其他协议出现的必要性了。
对于邮件来说,首先要看你收邮件的途径,如果你通过WEB页面收发邮件,毫无疑问,你选择协议时就需要选择HTTP协议,如果你通过邮件客户端,像OutLook、FoxMail之类的,则需要根据操作不同选择不同的协议了,例如发邮件你可能要选择SMTP、收邮件你可能需要选择POP3
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
 楼主| 发表于 2009-12-11 18:20:37 | 只看该作者

LoadRunner的协议选择、Winsocket、C/S应用程序

很多时候一提到不是基于浏览器的应用,很多人就会想到用WinSocket协议来录制,仿佛Form窗体都可以用Winsocket 。

        从道理上讲网络通讯的底层都是基于Socket的,例如TCP、UPD等,似乎所有的程序都可以用Socket协议来录制。但是事实不是这样的,因为选择的协议决定了LoadRunner如何捕获数据包。否则会多捕获很多无用的数据。

        因此,不是所有的程序都是适合WinSocket协议的。实际上,那些基于Socket开发的应用才真正适合Socket协议来进行录制。其他的,例如基于数据库的应用,就不太时候Socket协议,甚至可能录制不到脚本。

        很多C/S程序,一定要选择合适的协议。根据作者的经验,C/S的程序多数需要手工开发很多脚本,因为录制的很多回放时候或多或少都会有些问题,但是可以参考录制的结果。
  所以测试一个程序,一定要搞清楚开发人员用了什么技术、数据流是什么协议封装的。

        附件是我们自己开发的Controller,我们自己用面向对象实现了并发测试架构(目前支持并发、迭代、thinktime、参数文件、启动时间间隔,集合点功能正在开发中)。借助我们自己开发的Agent,能很好的测试我们的C/S架构的程序。
这个工具和LoadRunner配合起来,可以完成大多数性能测试。
这个工具主要为我们测试视频播放效果而开发,呵呵。这是LoadRunner不太擅长的。

[ 本帖最后由 cutebeckyex 于 2009-12-14 10:36 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2012-11-15 09:29:12 | 只看该作者
赞一个
回复 支持 反对

使用道具 举报

  • TA的每日心情
    慵懒
    2016-4-26 12:45
  • 签到天数: 3 天

    连续签到: 2 天

    [LV.2]测试排长

    4#
    发表于 2013-12-27 09:55:55 | 只看该作者
    学习中,谢谢楼主分享!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-24 00:20 , Processed in 0.069755 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表