LoadRunner首先是一个测试工具,其次是一个性能测试工具,然后是该工具是一个基于协议,也就是说LoadRunner测试的对象都需要使用通信协议,对于那些不使用通信协议仅仅进行本地处理的软件例如Microsoft Word,LoadRunner就不适用。说到通信协议我们来熟悉一下协议的分层,按照OSI的分层模型,分层结构如下:
按照TCP/IP协议的分层,分层结构如下:
TCP/IP目前广泛使用且被业界认作既定标准的协议分层, LoadRunner协议选择即按TCP/IP协议的分层模型讨论。
LoadRunner VuGen中的协议与文章开头所说的通信协议还是有一定的区别的,例如像LoadRunner VuGen中的C 模板、Visual Basic 模板、Java 模板、Javascript 和VBScript 类型的脚本均为开发语言,非通信协议。
一般来说协议选择有如下原则:
1. 最简单的方法,向应用团队或供应商查询,特别是软件架构师和开发人员。他们应该能够提供这些信息。
2. 使用WireShark网络分析器来探测应用程序运行时的通信情况。更多的使用细节可以在供应商的网站上找到。在你开始捕获流量后,你应该能在协议栏下看到协议的内容。
3. 使用netstat -a来确定协议和端口号。例如,协议是TCP,端口号是80,它可能意味着HTTP。需要注意的是,netstat -a只显示IP、IPv6、ICMP、ICMPv6、TCP、TCPv6、UDP或UDPv6中的协议(/?help获取更多信息),这意味着你可能需要根据协议(TCP)和端口号来猜测协议的内容。
4. 使用Winsock协议,通过数据文件确定协议。Winsock在套接字层面上捕获所有任何类型的流量并将其写入数据文件。从数据文件中,你会发现协议的签名,如HTTP请求和响应在HTTP的背景下。
例如:
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来录制,很多时候一提到不是基于浏览器的应用,很多人就会想到用WinSocket协议来录制,仿佛Form窗体都可以用Winsocket 。
从道理上讲网络通讯的底层都是基于Socket的,例如TCP、UPD等,似乎所有的程序都可以用Socket协议来录制。但是事实不是这样的,因为选择的协议决定了LoadRunner如何捕获数据包。否则会多捕获很多无用的数据。
因此,不是所有的程序都是适合WinSocket协议的。实际上,那些基于Socket开发的应用才真正适合Socket协议来进行录制。其他的,例如基于数据库的应用,就不太适用Socket协议,甚至可能录制不到脚本。
很多C/S程序,一定要选择合适的协议。根据经验,C/S的程序多数需要手工开发很多脚本,因为录制的很多回放时候或多或少都会有些问题,但是可以参考录制的结果。
所以测试一个程序,一定要搞清楚开发人员用了什么技术、数据流是什么协议封装的。
关于苏州华克斯信息科技有限公司
专业的测试及安全产品服务提供商
Fortify | Webinspect | AppScan | SonarQube | 极狐GitLab
LoadRunner | UFT(QTP) | ALM(QC)
Micro Focus 铂金合作伙伴
SonarQube中国总代理
极狐GitLab铂金级合伙伴
HCL中国合作伙伴