OpenSTA - 高效的 web 性能測試工具

jopen 12年前發布 | 23K 次閱讀 測試工具 性能測試和優化

文章出處:IBM developerWorks

在市場需求的推動下 , Web 應用如今已經從一般的網站發展成為大型電子商務、信息發布和提供各種服務的平臺 , 軟件規模不斷擴大 , 軟件復雜性不斷增加 , 但是激烈的商業競爭使軟件開發周期縮短 , 如何保證 Web 應用的正確性和可靠性越來越成為人們關注的問題。作為保證軟件質量和可靠性的重要手段 ,Web 應用軟件的測試就成為如今開發過程中的一個重要環節。本文將介紹一款開源的 Web 性能測試軟件— OpenSTA,OpenSTA 是專用于 B/S 結構的、免費的性能測試工具。它的優點除了免費、源代碼開放等優點外,還能對錄制的測試腳本進行分析,并且按指定的語法進行編輯。通過實際的應用實例證 明,OpenSTA 具有較為廣闊的應用前景。

概述

隨著 Web 應用技術的發展和 Web 應用程序的迅速普及,Web 系統的性能和服務質量顯得越來越重要。性能測試在軟件的質量保證中起著越來越重要的作用。性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載 條件來對系統的各項性能指標進行測試。性能測試是一種信息的收集和分析的過程,測試過程中通過收集的數據用來預測怎樣的負載水平將耗盡系統資源。性能測試 保證程序具有良好的性能,它考察在不同的用戶負載下,Web 對用戶請求做出的相應情況,以確保將來系統運行的安全性、可靠性和執行效率。性能測試的主要目的是為維護系統的性能找到有效地改善策略。

OpenSTA 是一個免費的、開源的的 web 性能測試工具。OpenSTA 是專用于 B/S 結構的、免費的性能測試工具。它的優點除了免費、源代碼開放等優點外,還能對錄制的測試腳本進行分析,并且按指定的語法進行編輯。軟件測試工程師在錄制完 測試腳本后,只需要了解該腳本語言的特定語法知識,就可以對測試腳本進行編輯,以便于再次執行性能測試時獲得所需要的參數,而后進行特定的性能指標分析。 OpenSTA 以最簡單的方式讓大家對性能測試的原理有較深的了解,其較為豐富的圖形化測試結果大大提高了測試報告的可閱讀性。

OpenSTA 的安裝及配置

為了能夠更為詳實的說明 OpenSTA 的應用過程,本節下面主要介紹 OpenSTA 的安裝及配置過程,使測試人員能夠更為快捷便利地使用 OpenSTA 進行性能測試的工作,能夠更加方便的應用 OpenSTA 的各項功能。

  1. 下載軟件安裝包,OpenSTA 官方網站提供了基于 windows 系統的各種安裝包,用戶可以根據需要進行下載安裝。 OpenSTA 安裝包下載地址:http://www.opensta.org/download.html
  2. 雙擊下載的安裝包進行安裝。

    圖 1. OpenSTA 安裝界面
    OpenSTA - 高效的 web 性能測試工具

  3. 按照默認安裝點擊下一步即可,系統會進行重啟。當看到 OpenSTA - 高效的 web 性能測試工具圖標時,證明已經能夠安裝成功,OpenSTA 已經啟動。

    圖 2. OpenSTA 操作界面
    OpenSTA - 高效的 web 性能測試工具

OpenSTA 測試的組成

OpenSTA 測試

OpenSTA 測試是一組用戶控制的定義,其中包括腳本、性能指標收集器還有用于運行測試的參數。測試運行會生成由圖形或者表格顯示的結果。腳本和性能指標收集器是測試 的構建模塊。可以被許多不同的測試所引用。腳本決定了測試的內容,指標收集器則定義了測試運行期間將被收集的數據。添加到測試中的腳本和性能指標收集器會 被放在測試任務組中。通過對每個測試任務組采用不同的設置來控制測試的運行以及目標 WAE 的負載水平。測試任務組的設置包括虛擬用戶的數量、所使用的主機數目和一次測試運行腳本的回放次數。性能測試的開發首先需要對結構和內容進行規劃。然后按 序創建測試所需要的腳本和性能指標收集器。

OpenSTA 腳本

腳本構成了 HTTP/S性能測試的內容,記錄了用戶通過瀏覽器向目標網絡應用環境(WAE)發出的請 求。腳本是通過代理服務器或者 Gateway 傳輸 HTTP/S 通信,使用 SCL(腳本控制語言)命令取代原來的 HTTP/S 命令生成的。腳本建模器根據 Web 會話期間的 HTTP/S 通信來創建腳本,使用 SCL 語言記錄了 HTTP/S 活動。當測試開始運行,該腳本就會回放所有原始請求。這意味著目標 Web 應用環境(WAE)將接收來自模擬瀏覽器用戶,或虛擬用戶的并發,異步連接和請求,就如同真實的終端用戶一樣。使用 SCL 編寫腳本,可以對內容進行控制。通過引入變量來取代腳本錄制生成的固定值,可以在指定的負荷水平上測試 Web 活動,從而使性能測試更為靈活有效。

腳本的錄制,會產生一個 .HTP 文件和一個 .ALL 文件。.HTP 文件包含了在 SCL 編寫過程中,Web 會話期間發出的所有 HTTP/S 瀏覽器請求。這個文件就是腳本,它會作為 Web 性能測試的一部分被建模和回放。而 .ALL 文件則將 WAE 響應保存在不同分類下,包括可以被用來對附屬腳本進行建模的 DOM。所有的腳本都保存在存儲庫中,可以被不同的測試所引用。

OpenSTA Gateway

Gateway 是 OpenSTA 的一個組件,它與腳本建模器直接對接,記錄 HTTP/S 通信,并創建腳本。它相當于一個代理服務器,位于客戶端瀏覽器和承載了 WAE 環境的遠程 Web 服務器之間。當你開始使用腳本建模器進行錄制,Gateway 會覆蓋瀏覽器的一些 Internet 連接設置,強迫使用代理服務器,在這里特指的就是 Gateway。Gateway 可以記錄瀏覽器和 WAE 之間的網絡活動,并產生一個 SCL 語言描述的腳本。 Gateway 將所有的瀏覽器請求存儲在 HTP 文件中,WAE 對瀏覽器請求的響應則存儲在 .ALL 文件中。.ALL 文件包含的 HTML 數據與 .HTP 文件中的內容有著直接聯系。通過對 .ALL 文件的信息進行處理,可以實現腳本的建模。

OpenSTA 腳本和 SCL

SCL 是用于控制和記錄 HTTP/S 通信的腳本控制語言。使用的 SCL 編寫腳本,給開發切合實際的性能測試提供了建模能力。當你運行一個測試的時候,為了給一個或者多個目標 WAE 環境提供足夠的負載,你可以編寫一個腳本或者一個腳本序列,來模擬成千上萬的虛擬用戶。

OpenSTA 腳本和測試運行

HTTP/S 的通信是 Web 會話期間生成的關鍵信息。對它進行捕獲,使你能夠記錄各種瀏覽器類型在不同平臺的的活動。腳本可以被編寫,然后在測試中被引用。錄制和編寫腳本后,你可以 重放腳本從而重現原始的瀏覽器命令。HTTP/S 請求并發異步運行,建立起和原始的 Web 對話一樣多的 TCP 連接,連接數目可以因為你選擇運行測試的虛擬用戶數量而成倍增加。與其它仿真技術相比,開發和執行基于 SCL 的測試消耗更少的資源。這使 OpenSTA 可以支持虛擬用戶數量較大的測試。

OpenSTA Repository

Repository 是 OpenSTA 在硬盤驅動器或網絡計算機上的一個存儲區域。其中保存了所有測試定義文件,包括腳本和性能指標收集器。另外,測試運行期間產生的所有結果文件也都存儲在這 里。Repository 的內容和結構可以通過 commander 的 Repository 窗口來查看。它位于主窗口的左側,能夠顯示存儲的所有腳本、性能指標收集器和測試。你可以從 Repository 窗口開始創建新的腳本或者打開現有腳本。

OpenSTA 腳本開發

腳本包含了測試的內容,需要進行提前的錄制。通過 OpentSTA Commander來啟動腳本建模器,進行腳本的錄制和編輯并把它添加到你的測試中。在你開始錄制腳本前,應該先選擇配置。對于不同的計算機網絡配置,OpenSTA 提供了幾種選擇。你可以選擇用來錄制腳本的瀏覽器類型以及連接方式。

腳本的錄制

  1. 打開 Commander 選擇 File->New Script->HTTP。 在 Repository 窗口中,右鍵單擊 Scripts文件夾,并選擇 New Script->HTTP。腳本將出現在 Repository 窗口,腳本的圖標上會出現一個紅色小叉,表明該文件沒有任何內容。只要你打開的腳本,錄制一個 Web 會話,腳本圖標的小叉就會消失。
  2. 右鍵單擊新腳本的圖標,選擇 Rename,輸入一個符合 OpenSTA Dataname 的唯一名稱,最多 60 個字符。
  3. 雙擊新腳本的圖標, 啟動腳本建模器。
  4. 在捕獲 / 回放工具欄點擊錄制按鈕,或者選擇 Capture->Record,來開始腳本 錄制。這個動作會啟動你所選擇的 Gateway 和 Web 瀏覽器。當錄制開始,瀏覽器的主頁 Internet 選項會被腳本建模器重寫,瀏覽器的主頁將變成一個空白的 HTML 頁面。這樣以確保你的正常主頁不會被啟動并記錄在腳本中。注意:如果沒有手動選擇遠程錄制模式,Gateway 會默認啟動本地錄制。
  5. 鍵入一個 URL,回車,或從瀏覽器的 URL 地址欄打開一個網址。然后正常的使用瀏覽器,執行一些你想記錄到腳本上的動作。當您正在錄制一個 Web 會話時,使用 Capture/Replay工具欄的添加注釋按鈕來添加注釋,同樣您也可以選擇 Capture->Insert Comments。它們可以在進行單步執行時向你提供幫助。但是添加評論的時間不會被記錄在腳本中。
  6. 當你完成所需要的瀏覽器動作后,在 Capture/Replay工具欄單擊停止按鈕或者直接關閉瀏覽器以切換回腳本建模器。當你完成腳本的錄制,腳本窗格中會顯示 SCL 格式的數據。
  7. 保存新腳本之前,需要使用語法檢查選項來對它進行編譯,以確保錄制結果的有效性。選擇 Capture->Syntax Check或在 Capture/Replay工具欄中單擊編譯按鈕。編譯結果會顯示到輸出窗格中。如果編譯失敗,則要通過重新錄制腳本或者編輯腳本的內容來解決。
  8. 編譯成功后,選擇 Capture->Replay或者點擊 Capture/Replay工具欄的回放按鈕來回放腳本以檢查已錄制的結果。
  9. 錄制完成后,在標準工具欄中點擊保存按鈕或者單擊 File->Save將腳本保存在 Repository 中。
  10. 選擇 File->Close以關閉當前腳本或者 File->Exit以退出腳本建模器。 如有未保存的腳本,在程序關閉之前會有自動提示對它們進行保存。關閉腳本建模器的同時也會關閉關聯的瀏覽器并恢復原有的瀏覽器設置。

腳本的編輯

編輯腳本,使你能夠制定切合實際的測試,提高測試的質量。腳本編輯器中有多種編輯選項,可以幫助你制定切合實際的性能測試。

SCL 是一種簡單的腳本語言,讓你能夠控制所創建的腳本。對腳本進行編輯以準確地模擬 Web 活動,并控制目標 WAEs 在測試運行時處于指定的負載水平。在對腳本進行編輯前,首先要對腳本的結構和 SCL 語言有所了解。腳本被分為三個部分,你可以通過以下 SCL 關鍵字來定位:EnvironmentDefinitionsCode

環境段

環境段是腳本的第一部分。以關鍵字 Environment 作為起始。前面是 Gateway 記錄的當前的瀏覽器和創建日期。這部分用于定義腳本的全局屬性,包括:DescriptionModeWait


清單 1. 環境段代碼示例
               
 !Browser:IE5 
 !Date : 3/31/2012 
 Environment 
 Description ""
 Mode    HTTP 
 Wait    UNIT MILLISECONDS 
    

定義段

定義段以關鍵字 Definitions作為起始。它包含腳本中使用的所有定義,包括變量和常量的定義,以及定時器和文件定義的聲明。


清單 2. 定義段代碼示例
               
 Definitions 
 ! Standard Defines 
 Include        "RESPONSE_CODES.INC"
 Include        "GLOBAL_VARIABLES.INC"
 CHARACTER*512   USER_AGENT 
 Integer         USE_PAGE_TIMERS 
 CHARACTER*256   MESSAGE 
 Timer       T_TESTSCRIPT 
 CONSTANT    DEFAULT_HEADERS = "Host: www.baidu.com" & 
"Accept-Encoding: gzip. deflate"& 
"User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; Trident/4.0; "& 
".NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; "& 
".NET CLR 3.5.30729; InfoPath.2; .NET4.0C; .NET4.0E)"
 CONSTANT    S_cookie_1_0    = "BAIDUID=3E588F42E284D6C6D84921872F590936:FG=1"
    

RESPONSE_CODES.INC 是一個 include 文件,其中包含 HTTP / S 的響應代碼對應的常量的定義。

GLOBAL_VARIABLES.INC 用于保存測試運行過程中虛擬用戶共享的全局和腳本范圍的變量定義。

代碼段

代碼段以關鍵字 Code作為起始,由 SCL 命令組成,用來代替已錄制的 Web 活動的命令,并定義腳本的行為。


清單 3. 代碼段代碼示例
               
 PRIMARY GET URI "http://www.baidu.com/ HTTP/1.1" ON 1 & 
 HEADER DEFAULT_HEADERS & 
 ,WITH {"Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg," & 
"application/x-ms-application, application/x-ms-xbap, " & 
"application/vnd.ms-xpsdocument, application/xaml+xml, "& 
"application/vnd.ms-excel, application/vnd.ms-powerpoint, " & 
"application/msword, */*", & 
"Accept-Language: en-US,nb-NO;q=0.7,zh-CN;q=0.3", & 
"Connection: Keep-Alive", & 
"Cookie: "+S_cookie_1_0} 
 DISCONNECT FROM 1 
    

上面的這段代碼 , 就是代碼段中一次 Web 請求的 SCL 命令。其中指定了請求的地址和一些相關參數。

OpenSTA 性能指標收集器的生成

性能指標收集器的創建是測試開發過程中一個獨立的部分 , 與測試和腳本的開發相分離。創建性能指標收集器包括選收集擇性能數據的測試機以及測試運行中需要收集的數據的類型。OpenSTA 支持兩種類型的性能指標收集:NT Performance CollectorSNMP Collector

NT Performance Collector 是針對 Windows NT 或 Windows2000 測試機,收集它們在測試運行中的性能數據。SNMP Collector 則是針對運行了 SNMP(簡單網絡管理協議)代理或者 SNMP 委托代理的測試,收集其測試運行過程中的 SNMP 數據。基于性能指標收集器的測試任務組可以在測試運行過程中被監測。測試運行的信息可以與其它結果一起顯示。

性能指標收集器

性能指標收集器是一組用戶定義的性能計數器,它們決定了一次測試運行中需要從測試機收集的性能數據的類型。將性能指標收集器添加到你的測試 中,就可以通過這些精確的性能計數器來收集你所需要的性能數據。在試運行期間,性能指標收集器被用來對生產系統的目標組件或者 Web 應用程序環境(WAEs)進行監測和性能數據的收集,以幫助你對它們的性能進行評估。性能指標收集器對測試運行期間性能數據的收集提供了靈活性。性能指標 收集器不僅僅可以對一臺測試機的一種性能指標進行計數,還可以對多個測試機的多種性能指標進行計數。

創建性能指標收集器

下面僅以 NT Performance 為例,講述的性能指標收集器的創建。

  1. 打開 Commander 通 過 File->New Collector選擇生成 NT Performance 類型的性能指標收集器。

    在 Repository 窗口中,右鍵單擊 Collectors 文件夾,并選擇 New Collector->NT Performance。創建出的新性能指標收集器將出現在 Repository 窗口。

  2. 右鍵單擊新性能指標收集器的圖標,選擇 Rename,輸入一個符合 OpenSTA Dataname 的唯一名稱,最多 60 個字符。
  3. 在 Repository 窗口中,雙擊新性能指標收集器 (NT Performance) 的圖標,從收集器窗口中打開性能指標收集器。在這個工作區內,你可以通過定義性能計數器來開發該性能指標收集器。

    注:在 Commander 中,一個打開的性能指標收集器對應收集器窗格中的一個表格。每個性能計數器占據了表格的一行。

  4. 第一次打開一個新創建的性能指標收集器時,表格中沒有定義任何的性能計數器,同時查詢編輯對話框會自動出現。你可以通過此對話框設置一個新的性能計數器。或者,可以通過 Collectors->Add Row來添加一個新性能計數器,并在查詢編輯對話框內設置名稱和計數器的頻率。

    圖 3. Edit Query 操作界面
    OpenSTA - 高效的 web 性能測試工具

  5. 在查詢編輯對話框內單擊 Browse Queries 瀏覽性能計數器,選擇收集性能數據的目標測試機,然后選擇性能計數器的類型和具體的計數器。

    圖 4. 瀏覽性能計數配置界面
    OpenSTA - 高效的 web 性能測試工具

  6. 在已經定義了一個或多個性能計數器的性能指標收集器中,通過對表的一行進行雙擊,可以打開查詢編輯對話框,對原屬性進行編輯。
  7. 使用工具欄中的加號按鈕,添加新行,定義新的性能計數器。選擇一行,并單擊工具欄中的減號按鈕刪除查詢。
  8. 當切換到不同的功能界面或者退出 Commander 時,性能指標收集器的設置會自動的保存到 Repository 中。

OpenSTA 如何進行性能測試

測試的創建

測試的創建步驟如下:

  1. 打開 Commander,選 擇 File->New Test->Tests

    或者,在 Repository 窗口中,右鍵單擊 Tests 文件夾,并選擇 New Test->Tests。測試將出現在 Repository 窗口,測試的圖標上會出現一個紅色小叉,表明該文件沒有任何內容。只要打開測試,添加一個腳本或性能指標收集器,圖標上的紅色小叉就會消失。

  2. 右鍵單擊新測試的圖標,選擇 Rename,輸入一個符合 OpenSTA Dataname 的唯一名稱,最多 60 個字符。
  3. 當切換到不同的功能界面或退出 Commander 時,性能測試會自動的保存到 Repository 中。
  4. 在 Commander 窗口雙擊測試圖標,打開測試窗格。測試窗格中的 Configuration 選項卡上顯示了一個測試列表。

    注:同一時間只能打開一個測試或者性能指標收集器。當測試被打開,Repository 窗口的測試圖標上會出現一個黃色小鎖。表示打開的測試不能被重命名或刪除。

添加腳本到測試

添加腳本到測試的步驟如下:

  1. 打開測試窗格,并選擇測試窗格中的 Configuration 選項卡。
  2. 在 Repository 窗口雙擊展開 Scripts文件夾 . 左鍵點擊一個腳本,然后,將其拖放到測試窗格中的 Task列,結果如圖 5 所示:

    圖 5. 添加腳本到測試
    OpenSTA - 高效的 web 性能測試工具

    注:選定的腳本會成為新任務組的第一個任務,你也可以在同一行添加其它的腳本。

添加性能指標收集器到測試

添加性能指標收集器到測試的步驟如下:

  1. 打開測試窗格,并選擇測試窗格中的 Configuration 選項卡。
  2. 在 Repository 窗口雙擊展開 Collectors文件夾 . 左鍵點擊一個腳本,然后,將其拖放到測試窗格中的 Task列,結果如圖 6 所示:

    圖 6. 添加性能指標收集器到測試
    OpenSTA - 高效的 web 性能測試工具

    注:選定性能指標收集器會成為新任務組的第一個任務,一個基于收集器的任務組只能包含一個任務。

編輯任務組調度設置

  1. 打開測試窗格,并選擇測試窗格中的 Configuration 選項卡。
  2. 點擊任務組中的 Start 單元格,初始的默認設置是 Immediately,表示測試運行時立即啟動。
  3. 在 start 的屬性欄里,展開下拉框并選擇 Start Task Group選項:
  • Scheduled:任務組從你設置開始,一定時間后啟動,使用天數和時間文本框輸入一個時間段。
  • Immediately:測試運行時,立即啟動任務組。
  • Delayed:任務組從任務開始運行開始,一定時間后啟動,使用天數和時間文本框輸入一個時間段。
  1. 在 start 的屬性欄里,展開下拉框并選擇 Stop Task Group選項:
  • Manually:該工作組將持續運行,直到單擊“停止”按鈕,激活測試運行期間的工作小組,在狀態列。
  • After fixed time:工作組在運行指定的時長后結束。使用時間文本框輸入一個時間段。
  • On Completion:工作組在運行指定迭代次數后結束。使用迭代次數文本框輸入一個時間段。

運行性能測試

運行測試,可以模擬真實終端用戶的 Web 活動,從被測的系統組件收集性能數據。產生的測試結果可以用來幫助評估目標 Web 應用程序環境(WAEs)的性能。

  1. 運行測試前,點擊工具欄的編譯按鈕或選擇 Test-> Compile Test來編譯當前測試。如果測試編譯成功,會出現一個提示信息,點擊 OK 信息關閉對話框。
  2. 如果與性測試前還沒有編譯過測試,點擊工具欄的運行測試按鈕也可以直接編譯并運行。編譯好的測試會按照任務組的設置被分發到各個測試機上運行。
  3. 使用工具欄的停止按鈕停止測試,或用中斷按鈕中斷測試。

    注:停止測試將保存所有測試結果,而中斷測試將清除所有測試結果。

  4. 當你運行一個測試,一個帶有時間戳的測試結果文件夾會自動的創建到 Repository 中。點擊測試窗格中的 Results 選項卡,點擊測試結果文件夾選擇要在結果窗口顯示的測試運行期間收集的性能數據。

    圖 7. 性能測試結果圖
    OpenSTA - 高效的 web 性能測試工具

總結

本文介紹了一款開源的 Web 性能測試軟件— OpenSTA,OpenSTA 是專用于 B/S 結構的、免費的性能測試工具。它的優點除了免費、源代碼開放等優點外,還能對錄制的測試腳本進行分析,并且按指定的語法進行編輯。本文列舉了實例以說明其 使用方法,實踐證明 OpenSTA 為性能測試提供了便捷的方式,具有較為廣泛的應用前景,是一款非常好的性能測試工具。

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!