學習 IBM Rational Robot VU 腳本是如何處理 HTTP 連接的。本文討論了在編輯 VU(虛擬用戶)腳本時需要牢記的一些重要的注意事項,以防止出現 HTTP 連接漏洞和避免每一個虛擬用戶占用較大的內存空間。本文還描述了如何權衡是否在 VU 腳本中保留打開的 HTTP 連接。
IBM® Rational® Robot提供了兩種錄制腳本的機制:
在這里,我們的重點是如何處理 Rational Robot VU 腳本中的HTTP連接。如果你正在錄制你的第一個 Rational Robot VU 腳本,那你非常有必要閱讀一下IBM developerWorks 上的文章,題目是 "Reading HTTP VU scripts"。
![]() ![]() |
![]()
|
當你錄制客戶端或服務器的會話時,Rational Robot會產生一個虛擬用戶(VU)腳本。你要么將產生的這個腳本進行回放,要么以某種特定的方式編輯這個腳本使它更好地適應你的需求。比如,你可以為主機服務器的名字定義參數,這樣你也可以將同樣的腳本應用到若干臺主機上。在VU錄制過程中,Rational Robot監控客戶端/服務器的對話,并將原始的會話內容轉換成一系列VU指令,儲存到產生的腳本中。所有客戶端的請求都被轉換成一系列VU指令,因此,在網頁上只需點一下鼠標就可以產生數千行VU代碼。這使對它的理解以及隨后對VU腳本編輯的過程變得更加復雜。
在接下來的例子中,我們將獲得一個典型的請求/回復HTTP信息互換,然后我們將它與用Rational Robot產生的腳本聯系起來。通常情況下,一個網站有一個服務器程序來監聽TCP的80端口中(或者其它端口)來自客戶端的連接請求。比如,在你的瀏覽器中輸入 一個到 http://www.ibm.com/rational.html 頁面的請求,接下來發生在屏幕之后事件的順序如下:
因此,網頁中的每個內嵌圖片都意味著必須有一個單獨的TCP連接,并且重復著同樣的過程。既然你明白了這個基本概念,Rational Robot 腳本中產生的冗長的VU代碼勿庸置疑是有意義的。
Rational Robot VU 腳本是由代表這些步驟的重復代碼塊組合起來的。這些代碼模塊都獨立的由客戶程序執行 HTTP get
和 post
請求來建立TCP連接。圖1 是被錄制 Rational Robot VU腳本的樣子:
![]() ![]() |
![]()
|
下面是這些步驟是如何與Rational Robot產生的相應的VU腳本代碼語句進行關聯的:
www_ibm_com = http_request ["Rational~001"] "www.ibm.com:80"
TCP與www_ibm_com的連接是激活的,這樣打開一個從客戶機器到HTTP服務器的網絡套接字來發送http_request "Rational~001"
。
Set Server_connection = www_ibm_com;
連接是與響應變量 Server_connection 關聯在一起的。
http_header_recv ["Rational~002"] 200; /* OK */
從HTTP服務器發送的HTTP 標題被接收。
http_nrecv ["Rational~003"] 100 %%; /* 20608 bytes */
HTTP回復被接收
http_disconnect(www_ibm_com);
連接關閉.
這個被錄制的VU腳本將有很多設置服務器連接的語句,它們隨后將在腳本結束之前關閉。自動化工程師們可能選擇編輯這些腳本來定義參數,從而實現自定義的邏輯,或者增加或刪除一些無效的HTTP請求。然而,如果你編輯這些腳本,注意這些 http_request
和 http_disconnect
命令是十分重要的,這兩種命令分配和釋放客戶端或者Rational Test Agent 上的系統資源,因此你必須將它們成對使用它們,否則你的腳本可能導致連接漏洞,甚至也可能最后耗盡系統資源。那就是為什么在你每次使用一個腳本中的http_request
語句來打開HTTP連接時,需要一個相應的http_disconnect
語句來關閉這個連接,這是十分重要的。
![]() ![]() |
![]()
|
將打開的HTTP連接留在VU腳本中,會導致每個VU占用較大的內存空間,因此會消耗TestManager 和 Test Agent 機器上很大的內存。關閉每一個HTTP連接可以使內存有效被利用,也因此可以在現有的資源上執行更多的VU。圖2和圖3 ,包含了對我們使用 IBM® Rational® TestManager 和 IBM® Rational® Test Agent 負載的觀測所顯示的效果。下面是一個Rational Test Agent上由Windows Performance Monitor得到的一些關于rtsvui程序的截圖。
注意:18和8MB的數字可能會隨著不同的情況基而變化,這依賴于自動化的腳本和操作
Rational TestManager 和 Rational Test Agent 也會在同時打開的連接數量上施加一個上限,默認的上限是256。如果由于腳本編輯的不好以導致你在測試期間的任何時刻能達到這個上限,你可以看到不正常的VU終止,并且在 VU data tab 中附帶下面的信息: "Failed to connect to "9.182.230.90:80" after 100 attempts: [24.7.5.4] Maximum number of allowed open connections (256) exceeded"
如果一個HTTP服務器上打開的HTTP連接數量達到了連接上限,你很可能看到連接斷開。當然,那也將導致你的測試過早地終止。
![]() ![]() |
![]()
|
現在你已經明白了IBM Rational Robot是如何控制HTTP連接的,你也知道了在編輯VU腳本時應該注意哪些事項來避免連接中斷和斷開。觀察這些失敗的現象也可以幫助你識別你的IBM Rational Robot VU 腳本中的 HTTP 連接漏洞。
原文轉自:http://www.anti-gravitydesign.com