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