MILY: 宋體; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman'">在學(xué)習LoadRunner協(xié)議選擇之前,我覺(jué)得我們有必要了解一下協(xié)議的基本概念。首先我們知道,計算機與計算機之間的通信都離不開(kāi)通信協(xié)議,接著(zhù)我們來(lái)說(shuō)說(shuō)通信協(xié)議的概念。通信協(xié)議是什么,通信協(xié)議實(shí)際上是一組規定和約定的集合。說(shuō)白了就是兩臺或者多臺計算機在通信時(shí)必須約定好本次通信做什么,例如是進(jìn)行文件傳輸,還是發(fā)送電子郵件;然后約定怎樣通信,什么時(shí)間通信等。因此,通信雙方要遵從相互可以接受的協(xié)議(相同或兼容的協(xié)議)才能進(jìn)行通信,如目前因特網(wǎng)上廣泛使用的TCP/IP協(xié)議等,任何計算機連入網(wǎng)絡(luò )后只要運行TCP/IP協(xié)議,就可訪(fǎng)問(wèn)因特網(wǎng)。
了解了協(xié)議的基本概念和作用之后,我們來(lái)說(shuō)說(shuō)LoadRunner的協(xié)議選擇。LoadRunner首先是一個(gè)測試工具,其次是一個(gè)性能測試工具,然后是該工具是一個(gè)基于協(xié)議,也就是說(shuō)LoadRunner測試的對象都需要使用通信協(xié)議,對于那些不使用通信協(xié)議僅僅進(jìn)行本地處理的軟件例如Microsoft Word,LoadRunner就不適用。
說(shuō)到通信協(xié)議我們來(lái)熟悉一下協(xié)議的分層,按照OSI的分層模型,分層結構如下:
OSI七層模型 |
TCP/IP協(xié)議 |
應用層 |
應用層(Application) |
表示層 | |
會(huì )話(huà)層 | |
傳輸層 |
傳輸層(Transport) |
網(wǎng)絡(luò )層 |
網(wǎng)絡(luò )層(Internet) |
數據鏈路層 |
網(wǎng)絡(luò )接口層(Network) |
物理層 |
|
按照TCP/IP協(xié)議的分層,分層結構如下:
TCP/IP協(xié)議 |
對應的服務(wù) |
應用層 |
WWW、SMTP、FTP、Telnet、Gopher、SNMP |
Socket、NetBIOS | |
傳輸層 |
TCP、UDP |
網(wǎng)絡(luò )層 |
IP(ARP、RARP、ICMP) |
網(wǎng)絡(luò )接口層 |
Ethernet、X.25、PPP、SLIP |
第一個(gè)分層是由OSI制定但不實(shí)用,后一個(gè)是目前廣泛使用且被業(yè)界認做既定標準的協(xié)議分層,下文探討的LoadRunner協(xié)議選擇即按TCP/IP協(xié)議的分層模型討論。
接著(zhù)來(lái)說(shuō)說(shuō)LoadRunner VuGen中的協(xié)議分類(lèi),VuGen(LR8.1)中的協(xié)議分類(lèi)如下表所示:
Citrix | |
客戶(hù)端/ 服務(wù)器 |
DB2 CLI、DNS、Informix、MS SQL Server、ODBC、Oracle(2 層)、Sybase Ctlib、Sybase Dblib 和 Windows Sockets 協(xié)議 |
自定義 |
C 模板、Visual Basic 模板、Java 模板、Javascript 和 VBScript 類(lèi)型的腳本。 |
分布式組件 |
適用于 COM/DCOM、Corba-Java 和 Rmi-Java 協(xié)議。 |
電子商務(wù) |
FTP、LDAP、Palm、PeopleSoft 8 mulit-lingual、SOAP、Web(HTTP/HTML) 和雙 Web/WinSocket 協(xié)議。 |
|
EJB 測試和 Rmi-Java 協(xié)議。 |
ERP/CRM |
Baan、Oracle NCA、Peoplesoft-Tuxedo、SAP-Web、SAPGUI、Siebel-DB2 CLI、Siebel-MSSQL、Siebel-Web 和 Siebel-Oracle 協(xié)議 |
傳統 |
終端仿真 (RTE)。 |
郵件服務(wù) |
Internet 郵件訪(fǎng)問(wèn)協(xié)議 (IMAP)、MS Exchange (MAPI)、POP3 和SMTP。 |
Jacada 和 Tuxedo (6、7)協(xié)議。 | |
流數據 |
Media Player (MMS) 和 Real 協(xié)議。 |
無(wú)線(xiàn) |
i-Mode、VoiceXML 和 WAP 協(xié)議。 |
仔細研究發(fā)現LoadRunner VuGen中的協(xié)議與文章開(kāi)頭所說(shuō)的通信協(xié)議還是有一定的區別的,例如像LoadRunner VuGen中的C 模板、Visual Basic 模板、Java 模板、Javascript 和 VBScript 類(lèi)型的腳本均為開(kāi)發(fā)語(yǔ)言,非通信協(xié)議,但LoadRunner即把它列在這兒,我們也就暫且認可。
了解了LoadRunner的協(xié)議類(lèi)型之后,我們進(jìn)入正式話(huà)題,即測試時(shí)如何選擇協(xié)議。
正式測試之前,測試人員都需要預先熟悉被測對象,我們需要知道我們的被測對象是一個(gè)什么樣的結構,是B/S結構還是C/S結構,了解這個(gè)之后,我們還需要了解被測對象所使用的協(xié)議是什么,也許有的人說(shuō)我們的程序使用的是TCP/IP協(xié)議,其實(shí)他的回答跟我們需要知道的差別很大,因為我們知道,所有的通信軟件都需要使用TCP/IP協(xié)議,為什么呢,因為這個(gè)協(xié)議是底層協(xié)議,所有應用層數據都必須經(jīng)過(guò)這個(gè)協(xié)議封裝之后才能向更底一層傳輸。我們需要知道的是被測對象在應用層使用的是什么協(xié)議,就像我們使用郵件客戶(hù)端發(fā)送郵件一樣,我們知道使用的應用層協(xié)議是SMTP,使用郵件客戶(hù)端接收郵件時(shí)使用的時(shí)POP3協(xié)議。了解上述信息之后,我們的定位也就準確了,也就是說(shuō)在LoadRunner中所說(shuō)的協(xié)議基本上都是應用層協(xié)議(也有底層協(xié)議,例如 Windows Sockets),知道這點(diǎn)之后,我們在詢(xún)問(wèn)開(kāi)發(fā)人員時(shí)就避免了不少麻煩,省的開(kāi)發(fā)人員告訴你我們使用的是TCP/IP協(xié)議或者其他底層協(xié)議。
了解了LoadRunner中的協(xié)議之后,我們就進(jìn)入協(xié)議確定階段,協(xié)議的確定,通常有如下幾種方法:
1、通過(guò)詢(xún)問(wèn)開(kāi)發(fā)人員獲知所使用的協(xié)議,通常這是最簡(jiǎn)單也是最直接的方法;因為沒(méi)有人比開(kāi)發(fā)人員更清楚他們所開(kāi)發(fā)的應用程序使用的什么通信協(xié)議了;
2、通過(guò)概要或詳細設計手冊獲知所使用的協(xié)議,在沒(méi)有開(kāi)發(fā)人員支持的情況,通過(guò)概要設計或詳細設計獲知所使用的協(xié)議不失為第二簡(jiǎn)便方法;
3、通過(guò)協(xié)議分析工具捕包分析,然后確定被測對象所使用的協(xié)議。在使用協(xié)議分析工具分析協(xié)議過(guò)程當中一定要摒除底層協(xié)議,不要被底層協(xié)議所迷惑;
4、通過(guò)以往測試經(jīng)驗確定被測對象所使用的協(xié)議,當然通過(guò)這種方法確定的協(xié)議有一定的不準確性;
通過(guò)以上四種方法我們基本就確定了錄制時(shí)應該選擇什么協(xié)議,光確定協(xié)議是沒(méi)有用的,最主要的是付諸行動(dòng),確定了協(xié)議之后,我們進(jìn)入VuGen開(kāi)始錄制腳本,錄制完成后看看是否生成相應腳本,如果腳本內容為空可能我們選擇的協(xié)議不正確,我們可以嘗試選擇其他協(xié)議。
一般來(lái)說(shuō)協(xié)議選擇有如下原則:
B/S 結構,選擇WEB(Http/Html)協(xié)議;
C/S結構,可以根據后端數據庫的類(lèi)型來(lái)選擇,如SybaseCTLib協(xié)議用于測試后臺的數據庫為Sybase的應用;MS SQL Server協(xié)議用與測試后臺數據庫為 SQL Server的應用;對于一些沒(méi)有數據庫的Windows應用,可選用Windows Sockets底層協(xié)議;使用了數據庫但使用的是ODBC連接的數據則選擇ODBC協(xié)議;
對于有些使用純JAVA編寫(xiě)的C/S結構的東東,采用JAVA,而且不能錄制只能手工編寫(xiě)代碼(工作量和難度還是有的)。同樣不能錄制的還包括C、VB Script、VB、VBNet User協(xié)議。
對于Windows Sockets協(xié)議來(lái)說(shuō),最適合的那些基于Socket開(kāi)發(fā)的應用程序;但是由于網(wǎng)絡(luò )通訊的底層都是基于Socket的,因此幾乎所有的應用程序都能夠通過(guò)Socket來(lái)錄制,哪可能有人會(huì )問(wèn),哪既然Socket都能錄制下來(lái),還要那么多協(xié)議做什么,價(jià)格還賊貴,其實(shí)最主要的原因就是Socket錄制的代碼可讀性較差,如果Socket的腳本可讀性較高的話(huà),實(shí)話(huà)就沒(méi)有其他協(xié)議出現的必要性了。
文章來(lái)源于領(lǐng)測軟件測試網(wǎng) http://kjueaiud.com/