在學習LoadRunner協議選擇之前,我覺得我們有必要瞭解一下協議的基本概念。首先我們知道,電腦與電腦之間的通訊都離不開通訊協定,接著我們來說說通訊協定的概念。通訊協定是什麼,通訊協定實際上是一組規定和約定的集合。說白了就是兩台或者多台電腦在通訊時必須約定好本次通訊做什麼,例如是進行檔案傳輸,還是寄送電子郵件;然後約定怎樣通訊,什麼時間通訊等。因此,通訊雙方要遵從相互可以接受的協議(相同或相容的協議)才能進行通訊,如目前網際網路上廣泛使用的TCP/IP協議等,任何電腦連入網路後只要運行TCP/IP協議,就可訪問網際網路。
瞭解了協議的基本概念和作用之後,我們來說說LoadRunner的協議選擇。LoadRunner首先是一個測試載入器,其次是一個效能測試工具,然後是該工具是一個基於協議,也就是說LoadRunner測試的對象都需要使用通訊協定,對於那些不使用通訊協定僅僅進行本地處理的軟體例如Microsoft Word,LoadRunner就不適用。
說到通訊協定我們來熟悉一下協議的分層,按照OSI的分層模型,分層結構如下:
按照TCP/IP協議的分層,分層結構如下:
第一個分層是由OSI制定但不實用,後一個是目前廣泛使用且被業界認做既定標準的協議分層,下文探討的LoadRunner協議選擇即按TCP/IP協議的分層模型討論。
接著來說說LoadRunnerVuGen中的協議分類,VuGen(LR8.1)中的協議分類如下表所示:
仔細研究發現LoadRunner VuGen中的協議與文章開頭所說的通訊協定還是有一定的區別的,例如像LoadRunner VuGen中的C模板、Visual Basic模板、Java模板、Javascript.和VBScript.類型的指令碼均為開發語言,非通訊協定,但LoadRunner即把它列在這兒,我們也就暫且認可。
瞭解了LoadRunner中的協議之後,我們就進入協議確定階段,協議的確定,通常有如下幾種方法:
1、通過詢問開發人員獲知所使用的協議,通常這是最簡單也是最直接的方法;因為沒有人比開發人員更清楚他們所開發的應用程式使用的什麼通訊協定了;
2、通過概要或詳細設計手冊獲知所使用的協議,在沒有開發人員支援的情況,通過概要設計或詳細設計獲知所使用的協議不失為第二簡便方法;
3、通過協議分析工具捕包分析,然後確定被測對象所使用的協議。在使用協議分析工具分析協議過程當中一定要摒除底層協議,不要被底層協議所迷惑;
4、通過以往測試經驗確定被測對象所使用的協議,當然通過這種方法確定的協議有一定的不準確性;
通過以上四種方法我們基本就確定了錄製時應該選擇什麼協議,光確定協議是沒有用的,最主要的是付諸行動,確定了協議之後,我們進入VuGen開始錄製指令碼,錄製完成後看看是否產生相應指令碼,如果指令碼內容為空白可能我們選擇的協議不正確,我們可以嘗試選擇其他協議。
一般來說協議選擇有如下原則:
B/S結構,選擇WEB(Http/Html)協議;
C/S結構,可以根據後端資料庫的類型來選擇,如SybaseCTLib協議用於測試背景資料庫為Sybase的應用;MSSQLServer協議用與測試後台資料庫為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。
Telnet、SSH選擇RTE協議(SSH不知道是不是,有待考證)。