在 VU 腳本中使用 HTTP 連接

發表于:2007-06-12來源:作者:點擊數: 標簽:ibmrationalrobotvu
學習 IBM Rational Robot VU 腳本是如何處理 HTTP 連接的。本文討論了在編輯 VU(虛擬用戶)腳本時需要牢記的一些重要的注意事項,以防止出現 HTTP 連接漏洞和避免每一個虛擬用戶占用較大的內存空間。本文還描述了如何權衡是否在 VU 腳本中保留打開的 HTTP
學習 IBM Rational Robot VU 腳本是如何處理 HTTP 連接的。本文討論了在編輯 VU(虛擬用戶)腳本時需要牢記的一些重要的注意事項,以防止出現 HTTP 連接漏洞和避免每一個虛擬用戶占用較大的內存空間。本文還描述了如何權衡是否在 VU 腳本中保留打開的 HTTP 連接。

介紹

IBM® Rational® Robot提供了兩種錄制腳本的機制:

  • GUI 模式:用于功能自動化的 SQA basic 腳本
  • VU 模式: 用于性能自動化的 VU 腳本

在這里,我們的重點是如何處理 Rational Robot VU 腳本中的HTTP連接。如果你正在錄制你的第一個 Rational Robot VU 腳本,那你非常有必要閱讀一下IBM developerWorks 上的文章,題目是 "Reading HTTP VU scripts"。





回頁首


Rational Robot VU 腳本

當你錄制客戶端或服務器的會話時,Rational Robot會產生一個虛擬用戶(VU)腳本。你要么將產生的這個腳本進行回放,要么以某種特定的方式編輯這個腳本使它更好地適應你的需求。比如,你可以為主機服務器的名字定義參數,這樣你也可以將同樣的腳本應用到若干臺主機上。在VU錄制過程中,Rational Robot監控客戶端/服務器的對話,并將原始的會話內容轉換成一系列VU指令,儲存到產生的腳本中。所有客戶端的請求都被轉換成一系列VU指令,因此,在網頁上只需點一下鼠標就可以產生數千行VU代碼。這使對它的理解以及隨后對VU腳本編輯的過程變得更加復雜。

在接下來的例子中,我們將獲得一個典型的請求/回復HTTP信息互換,然后我們將它與用Rational Robot產生的腳本聯系起來。通常情況下,一個網站有一個服務器程序來監聽TCP的80端口中(或者其它端口)來自客戶端的連接請求。比如,在你的瀏覽器中輸入 一個到 http://www.ibm.com/rational.html 頁面的請求,接下來發生在屏幕之后事件的順序如下:

  1. 瀏覽器解析這個輸入的地址。
  2. 瀏覽器向DNS尋找這個主機的IP地址(在這個例子中是www.ibm.com)。
  3. DNS回復主機的IP地址。
  4. 瀏覽器利用返回的IP地址與Web服務器的端口80構成一個TCP連接。
  5. 瀏覽器為發起一個HTTP標題(header)的請求,接下來就是URL的文檔。這個請求利用了一個get命令來向服務器請求一個回復,從而得到rational.html文件。
  6. 服務器回復時在HTTP標題中帶有HTTP代碼(如果沒有錯誤發生的話,這個代碼是 200),它后面緊跟著就是被請求的 HTML 文檔。
  7. 釋放TCP連接。
  8. 瀏覽器解析HTML并展現網頁。
  9. 對于接收到的任何一個內嵌在HTML里的請求 —— 對于靜態的內容,比如GIF、CSS 或者JS文件 ―― 瀏覽器都會建立一個新的到服務器的TCP連接,并以類似的方式重新找回文檔。

因此,網頁中的每個內嵌圖片都意味著必須有一個單獨的TCP連接,并且重復著同樣的過程。既然你明白了這個基本概念,Rational Robot 腳本中產生的冗長的VU代碼勿庸置疑是有意義的。

Rational Robot VU 腳本是由代表這些步驟的重復代碼塊組合起來的。這些代碼模塊都獨立的由客戶程序執行 HTTP getpost 請求來建立TCP連接。圖1 是被錄制 Rational Robot VU腳本的樣子:


圖1. Rational Robot VU 腳本
Rational Robot VU script




回頁首


VU 腳本如何影響 HTTP 連接

下面是這些步驟是如何與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_requesthttp_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程序的截圖。


圖2. 如果存在未關閉的HTTP連接,VU 腳本占用內存的情況
如果存在未關閉的HTTP連接,虛擬用戶腳本占用了18M的內存

圖3. 所有HTTP連接完全關閉的情況下,虛擬用戶占用內存的情況
所有HTTP連接完全關閉的情況下,虛擬用戶占用了 8M 的內存

注意: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

国产97人人超碰caoprom_尤物国产在线一区手机播放_精品国产一区二区三_色天使久久综合给合久久97