(八)性能測試從零開始——LoadRunner入門

 

第8章 欲善其事先利其器——VU腳本開發實戰

        VU開發腳本是我們使用LoadRunner性能測試中一個重要的步驟,這裏涉及軟件系統架構、計算機編程技巧和VU本身的功能特性。在本章,我們將結合郵件系統,介紹如何使用VU生成基於SMTP/IMAP協議的腳本。
        我們將按照如下的思路完成腳本。
        熟悉SMTP/POP3/IMAP協議規範和原語。
        使用VU錄製郵件收發操作,分析VU腳本對標準SMTP/IMAP協議的封裝與實現機理。
        使用VU Java模板用戶嵌入Java message接口,實現郵件收發,並以此介紹VU Java模板用戶的使用方法,以及Java classpath等相關設置。
8.1  郵件服務SMTP/IMAP協議介紹
        電子郵件是我們日常工作中經常使用到的一種交流方式,它是Internet應用最廣的一種服務。
8.1.1  電子郵件的工作原理
        電子郵件是Internet上最爲流行的應用之一。如同郵遞員分發投遞傳統郵件一樣,電子郵件也是異步的,也就是說,人們是在方便的時候發送和閱讀郵件的,無須預先與別人協同。與傳統郵件不同的是,電子郵件既迅速,又易於分發,而且成本低廉。另外,現代的電子郵件消息可以包含超鏈接、HTML格式文本、圖像、聲音甚至視頻數據。
        電子郵件的工作過程遵循客戶-服務器模式。每份電子郵件的發送都要涉及發送方與接收方,發送方構成客戶端,而接收方構成服務器,服務器含有衆多用戶的電子信箱。發送方通過郵件客戶程序,將編輯好的電子郵件向郵件服務器(SMTP服務器)發送。郵件服務器識別接收者的地址,並向管理該地址的郵件服務器(IMAP或POP3服務器)發送消息。郵件服務器將消息存放在接收者的電子信箱內,並告知接收者有新郵件到來。接收者通過郵件客戶程序連接到服務器後,就會看到服務器的通知,進而打開自己的電子信箱來查收郵件。
8.1.2  SMTP協議介紹
        簡單郵件傳送協議(SMTP)是Internet電子郵件系統首要的應用層協議。它使用由TCP提供的可靠的數據傳輸服務把郵件消息從發信人的郵件服務器傳送到收信人的郵件服務器。SMTP協議服務的默認端口是25。
        SMTP協議與人們用於面對面交互的禮儀之間有許多相似之處。首先,運行在發送端郵件服務器主機上的SMTP客戶,發起建立一個到運行在接收端郵件服務器主機上的SMTP服務器端口號25之間的TCP連接。如果接收郵件服務器當前不在工作,SMTP客戶就等待一段時間後再嘗試建立該連接。這個連接建立之後,SMTP客戶和服務器先執行一些應用層握手操作。就像人們在轉手東西之前往往先自我介紹那樣,SMTP客戶和服務器也在傳送信息之前先自我介紹一下。在這個SMTP握手階段,SMTP客戶向服務器分別指出發信人和收信人的電子郵件地址。彼此自我介紹完畢之後,客戶發出郵件消息。SMTP可以指望由TCP提供的可靠數據傳輸服務把該消息無錯地傳送到服務器。如果客戶還有其他郵件消息需發送到同一個服務器,它就在同一個TCP連接上重複上述過程;否則,它就指示TCP關閉該連接。
        讓我們看一個客戶(C)和服務器(S)交互的例子。前面標以“C:”的文本行是名爲Mike的客戶端發送的請求,Mike想給Rose發送一封“I love you”的電子郵件情書,前面標以“S:”的是cesoo.com服務器的迴應。以下傳輸內容在TCP連接建立之後馬上發生。
S:220 cesoo.com
C:HELO
S:250 Hello Mike,pleased to meet you
C:MAIL FROM: [email protected]
S:250 [email protected] ... Sender OK
C:RCPT TO: [email protected]
S:250 [email protected] OK
C:DATA
S:354 Enter mail,end with "." on a line by its self
C: I love you, Rose
C: .
S:250 Message accepted for delivery
C:QUIT
S:221 cesoo.com closing connection
        覺得難以置信麼?這不是在寫言情小說,而確確實實是客戶端和郵件服務器通過SMTP協議在網絡上交互的內容,網絡協議就這麼簡單。客戶總共發出了5個命令,分別爲:HELO、MAIL FROM、RCPT TO、DATA和QUIT。這些命令又叫做原語,可理解爲應用協議層上最原始最小的命令顆粒。服務器給每個客戶端的命令發回應答,其中每個響應都由返回碼和一些英語解釋構成。這裏需要指出的是,SMTP使用持久連接,也就是說,如果客戶端有多個郵件消息需發送到同一個郵件服務器,那麼所有這些消息可以在同一個TCP連接中發送。對於其中的每一個消息,客戶端以一個新的“HELO”命令開始整個消息發送過程,但是QUIT命令要等到所有消息都發送完之後才發出。
8.1.3  POP3協議介紹
        大家一聽這個POP,讀起來有點像中文中的泡泡,其實這是一個英文術語的縮寫。POP的全稱是 Post Office Protocol,即郵局協議,用於電子郵件的接收,它使用TCP的110端口。現在常用的是第三版,所以簡稱爲 POP3。POP3仍採用Client/Server工作模式,Client被稱爲客戶端,一般我們日常使用電腦都是作爲客戶端,而Server(服務器)則是POP3的郵件服務器。舉個形象的例子:Server(服務器)是許多小信箱的集合,就像我們所居住樓房的信箱結構,而客戶端就好比是一個人拿着鑰匙去信箱開鎖取信,一樣的道理。
        POP3和上面的SMTP協議一樣,其實現也是一個客戶端與服務器的對話過程。
        當我們單擊了電子郵件軟件中的收取按鈕後,電子郵件軟件首先會調用DNS協議對POP服務器進行解析IP地址,當IP地址被解析出來後,郵件程序便開始使用TCP協議連接郵件服務器的110端口,因爲POP服務器是比較忙的,所以在這個過程中我們相對要等比較長的時間。當郵件程序成功地連上POP服務器後,其先會使用USER命令將郵箱的賬號傳給POP服務器,然後再使用PASS命令將郵箱的賬號傳給服務器。當完成這一認證過程後,郵件程序使用STAT命令請求服務器返回郵箱的統計資料,比如郵件總數和郵件大小等,然後LIST命令便會列出服務器裏郵件數量。接下來郵件程序就會使用RETR命令接收郵件,接收一封后便使用DELE命令將郵件服務器中的郵件置爲刪除狀態。當使用QUIT命令時,郵件服務器便會將置爲刪除標誌的郵件給刪了。通俗地講,郵件程序從服務器接收郵件,其實就是一個對話過程,POP協議就是用在電子郵件中的一門語言。
8.1.4  IMAP協議介紹
        用戶使用POP3把郵件消息下載到本地機之後,就可以把它們移動到本地創建的文件夾中。用戶然後可以刪除郵件,移動郵件,按發信人名字或消息主題搜索郵件等。然而,所有這些郵件操作都是在本機上完成的。這對於遊動的用戶卻構成了問題,遊動用戶更願意在遠程郵件服務器主機上維護郵件夾,這樣從任何主機都可以訪問它,使用POP3是不可能做到這一點的。
        這時IMAP協議就應運而生了,同樣也是郵件接收協議,但是IMAP卻比POP3複雜得多,因爲IMAP提供的特性比POP3多出不少。IMAP被設計成允許用戶像對待本地郵箱那樣操縱遠程郵箱。具體地說,IMAP使得收信人能夠在自己的郵件服務器主機中創建並維護多個存放郵件的文件夾。他們可以把郵件存入文件夾,也可以將郵件從一個文件夾轉移到另一個文件夾,還可以在這些遠程郵件夾中搜索匹配特定準則的郵件消息。IMAP的實現比POP3的實現複雜得多,原因之一就是IMAP服務器必須爲每個用戶維護一個文件夾層次結構。某個用戶使用不同的客戶端相繼訪問自己的IMAP服務器時,這個IMAP服務器爲該用戶維護並同步相應的狀態。POP3服務器則相反,一旦用戶退出當前的POP3會話,它們就不再爲用戶維護狀態信息了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章