測試 Web 應用程序
如果您對 IBM® Rational® Performance Tester 非常了解,那么您可以跳過此部分,如果您對它不了解,那么下面是一些介紹。Rational Performance Tester 是一個為測試 Web 應用程序設計的軟件,它的功能是在部署之前捕獲并更正性能問題。Rational Performance Tester 通過模擬并發用戶的數量,產生一系列報告,這些報告被清晰的標志出來顯示 Web 頁面的性能、URL 和事務等信息,來幫助您在部署之前查明系統的瓶頸。
高級的特性包括在每一個用戶組的行為和使用方式層面的詳細測試調度安排。Rational Performance Tester 同時還提供了一種自動化的"數據池"特性,它可以改變每一個模擬用戶使用的測試數據設置。使用一個集成了測試編輯器的瀏覽器窗口,您可以回顧在測試記錄期間訪問過的 Web 頁面。除此之外,高級測試人員可以選擇將自定義的 Java 代碼插入到性能測試中,用來執行類似于高級數據分析和請求解析的操作。
這篇文章將會介紹一些 Rational Performance Tester V7.0 的特性。為了展示新特性,我們將會記錄并執行一個簡單的測試。
核心特性
下面是 IBM Rational Performance Tester V7.0 中一些可用的特性概括介紹。它擁有很多的特性,我們將會詳細的討論其中的一些,剩余的將會概括性的介紹。這些特性在 Rational Performance Tester Help 中有概括性介紹。
Citrix Presentation Server 擴展允許您裝載運行在 Citrix Metaframe Presentation Servers 上的測試窗口應用程序。您可以使用帶有可選圖形識別技術的窗口創建和改變事件來完成這個工作,從而同步用戶輸入數據和服務器輸出數據。當您使用 Citrix 應用程序記錄一個會話前,這個應用程序的行為必須是完全可復制的。應用程序必須經常在相同目錄下以相同的順序建立窗口和 GUI 元素。鼠標或者鍵盤事件必須顯示相同的輸出結果。
由于 Citrix 性能測試和 Citrix Presentation Server 客戶端在一個非常低的層級(鼠標移動和點擊)上進行交互,所以在記錄后(例如移動測試元素,添加循環或者條件,或者插入新的序列)您對測試做的任何更改,都可以改變用戶行為仿真的環境以及引起同步超時。當您編輯測試時,需要特別注意用戶行為的環境。
除了 Citrix 之外,還有一些對 SAP 測試的支持。您可以在一個測試中使用類似于循環,條件和事務等的測試元素。您還可以在一個測試套件的選擇點中插入一項記錄。SAP 的確認點被增強為可以捕獲任何 SAP GUI 的屬性,并可以隨意的針對一個預期數值做檢查。此外,您還可以從一個 Web 接口(通過生成 SAP Web 構建)記錄和回放 SAP 應用程序。
問題分析工具做以下三件事情。他們是:
- 收集響應時間分解數據
- 收集資源監控器數據
- 為分析收集的數據提供視圖和工具,以便找出引起性能問題的原因。
您可以通過使用數據收集代理完成這個工作,這些代理存在于來自產品或者開發環境的用于捕獲跟蹤、監視或者日志數據的數據收集框架中。您還可以使用基于 Eclipse 的工具進行檢視和代碼及運行數據的分析,以及關聯數據。
性能和問題分析工具可以幫助您找到并修復代碼問題,這些問題可能引起分布式性能問題。它包含一些您熟悉的類似于 IBM® Performance Optimization Toolkit 等的工具,它們被封裝在 Rational Performance Tester 中。下面描述的一些特性(例如,資源監控和響應時間分解)在這些工具中有詳細的介紹。
資源監控數據由一序列在特定間隔期間的觀察組成。您可以實時收集數據,或者您可以從 IBM® Tivoli Enterprise™ Monitoring Server 找回這些數據。除了響應時間分解數據之外,資源監控數據為您提供了一種更加完善的系統視圖,它可以幫助您確定問題。下面是一些數據范例,您可以收集并分析它們:
- CPU 使用狀況(總體,對于單個處理器,甚至是單個進程)
- 可用內存
- 硬盤使用狀況
- TCP/IP 以及網絡吞吐量
這個特性提供了一種更加完善的系統視圖,它可以幫助您隔離問題。您可以在測試(或者代理)時使用 IBM® Tivoli® Monitoring、Windows Performance Monitor 或者 UNIX® rstatd 監視器監控系統。您既可以使用 Eclipse Test & Performance Tools Platform (TPTP)閱讀器,又可以使用 Rational Performance Tester performance 報告來觀察資源監控器數據。
響應時間分解為您顯示了系統的每一個部分在測試期間的時間所占用系統運行總時間的比重。響應時間分解視圖和一個測試或者時間表的頁面元素(URL)相關。這樣您可以在任意 HTTP 頁面元素的響應時間統計表中,察看在測試下系統每一個部分所花費的時間。您可以使用響應時間分解來做下列事情:
- 識別代碼問題
- 察看哪一個服務器上的哪一個應用程序是整個系統的瓶頸
- 進一步決定哪一個包、類或者方法引起了這個問題
為了捕獲響應時間分解數據,您必須在一個測試或者調度中啟動它,然后配置將要捕獲的數據的信息。數據收集框架(當您安裝 Rational Performance Tester 工具時您應該會看到)收集響應時間分解數據。應用程序運行時的每一個您想要收集數據的主機,必須擁有數據收集框架并且將其運行)。除此之外,您還必須配置(或者工具)每一個應用程序服務器以便使用數據收集框架。
注釋:啟動響應時間分解收集功能,讓整個性能日指標可以請求所需的內存數量,因此我們可以設定在何時何地啟動它。
期待已久的特性
下面介紹的兩個特性是我從 Rational Performance Tester 發布以來一直期待的特性。缺少 IP 混淆和對客戶端數字證書的支持,限制了我使 用Rational Performance Tester 為一些類型應用程序類型進行性能測試,F在這兩個特性已經包含在其中了。
Rational Performance Tester 現在擁有了 IP 混淆,一項我急需的特性。默認情況下,當您運行一個調度時,每一個虛擬用戶都會擁有相同的 IP 地址。但是這在真實的生活中是不存在的。對于特定類型的應用程序來說,它可以影響負載如何分布,甚至影響應用程序的詳細功能。擁有了這個特性后,您可以讓每一個虛擬用戶感受到好像只有他一人在使用主機。
要實現這個功能,您需要在主機上配置 IP 混淆,然后在調度中啟動 IP 混淆功能。當您運行調度時,多個主機的網絡流量會被顯示。IP 混淆使您可以配置一個代理,在 HTTP 測試運行期間就好像負載是來自不同的 IP 地址。
數字證書是一個文件,它綁定了一個帶識別碼的公用密鑰(一個用戶或者一個組織)?尚诺淖C書權威機構發布數字證書,它們被用來鑒別用戶和組織訪問 Web 站點,e-mail 服務器和其他安全系統的權限。一個證書存儲是一個存檔文件,它包含絕大部分數字證書,或者是由不同證書權威機構發布的證書。
使用Rational Performance Tester V7.0,您可以做:
- 建立數字證書
- 通過數據池訪問它們
- 將這些數據池與測試相關聯
它可以通過使用代理KeyTool命令行程序來建立數字證書存儲及實現。數字證書讓您針對服務器使用基于 SSL 的 HTTP 記錄和運行測試,對于應用程序來說,它需要客戶端的數字證書來驗證用戶身份。
其它特性
最后,在 V7.0 中還有一些其它新特性:
- 當您使用 Firefox 或者 Mozilla 瀏覽器記錄 HTTP 應用程序時,您不再需要配置它們。
- 目錄認證點支持預期和未預期的結果。
- 在 Help 文檔中包含了如何在測試中替換主機名稱。
- 測試執行服務文檔包含更多的范例。
- Performance Testing SDK(軟件開發工具包)在安裝過程中可以作為可選安裝項目。
建立一個性能測試腳本
讓我們察看一個性能測試的簡單的范例。您將會針對 BookPool.com 運行一個小型的負載程序(這個負載非常的。。隨著對范例的學習,您將會對新特性的細節有所了解。其余的特性將會一帶而過。
按照下列步驟建立這個測試腳本。
- 打開 Create New Test From Recording 向導。
- 選擇 HTTP Recording,如圖1所示,點擊 Next 按鈕。
圖1:Create New Test From Recording 向導 - 為腳本輸入一個名稱,如圖2所示。這個測試執行了一個簡單的查詢操作,并在購物車中添加一本書籍,在這個范例中(
bookpool
)反映了它的基本流程。
圖2:為測試輸入一個名稱 - 點擊 Finish 按鈕。
打開 Recorder,如圖3所示。這個過程可能要花費幾分鐘時間。
圖3:打開 Recorder - 如果您回到 Rational Performance Tester,如圖4所示,您可以看到 Recorder Control 正將您在記錄期間執行的行為記錄入日志。
圖4:Rational Performance Tester Recorder Control
Recorder 運行之后,Rational Performance Tester 會打開瀏覽器到 ReadMe 頁面,如圖5所示。這個頁面概要了一些性能測試的公共實踐。(注釋:這取決于您的瀏覽器默認主頁的設置。)
圖5:Firefox 中的 Rational Performance Tester ReadMe 頁面
- 這是您的測試的正式運行面板。在 Address 欄,輸入 URL www.BookPool.com 然后開始記錄測試。
- 在搜索對話框中,輸入
Software Testing
然后點擊 Search 按鈕,如圖6所示。
圖6:搜索對話框
- 當結果頁面被裝載后,點擊 Add to Basket 按鈕來還第一本書。當我建立這個測試時,第一本書的書名為How to Break Software: Functional and Security Testing of Web Applications and Web Services(順便說一下,這是一本極好的書。。如圖7所示:
圖7:還第一本書的范例
- 在 Shopping Cart 頁面加載之后,請關閉瀏覽器。關閉瀏覽器意味著 Rational Performance Tester 將停止記錄。Rational Performance Tester 將會產生您的腳本,然后再測試編輯器中打開它,如圖8所示:
圖8:Performance Test:測試編輯器
測試編輯器列出了測試的 HTTP 頁面的標題。當您展開它們時,您會在每一個頁面中看到請求和響應數據。您可以使用編輯器來檢查或者定制一個測試,這個測試會根據一個已記錄的會話自動的產生,當然如果您愿意也可以先為其編制一段測試代碼。注意在 V7.0 中的 Common Options 和 HTTP Options 都被標志在了 Test Element Details 區域,但是它們經常在同一場景下使用。您同時還會在視圖的頂部看到 Enable response time breakdown 的檢查框。
- 如果您點擊 Common Options 標簽,如圖9所示,您會看到在哪里為您的測試指定數字證書。
圖9:Common Options 標簽上的 Digital Certificates
在這篇文章中不涉及任何數字證書的設置,但是您可以察看響應時間分解。 - 為了查看它們之間的不同,請不要選擇
AddToCart
元素上的 Enable response time breakdown 選項。您需要在 Shopping Basket 頁面啟動這個選項,如圖10所示。
圖10:為 Shopping Basket 選擇 Enable response time breakdown 選項
現在您已經為建立一個調度做好了準備,下面您可以運行您的測試程序了。
建立一個調度
調度允許您在遠程聚合測試,排序測試和運行測試。一個調度可以簡單到就像一個用戶在運行一個測試,或者復雜到不同組的成百個用戶,每一個人在不同的時間運行一個不同的測試。根據您所了解的內容,我們可以定制一個調度:
- 聚合測試來模擬不同用戶的行為
- 設置測試運行的順序:順序地、隨機地或者加權順序
- 每次測試運行時設置時間
- 以確定的速率運行測試
- 在遠程終端運行一個測試,或者一組測試
在您建立了一個描述系統行為的調度后,您既可以使用正在測試的應用程序的連續構建,或者使用一個不斷增加數量的虛擬用戶來運行這個調度。
建立一個調度:
- 右鍵點擊您的項目,然后選擇 New > Performance Schedule。
- 在 Performance Schedule 向導中,輸入調度的名稱,然后點擊 Finish 按鈕,如圖11所示:
圖11:Performance Schedule 向導
- 這位一個用戶組建立了一個新的調度,如圖12所示:
圖12:New Performance Schedule
用戶組讓您使用多種特性來表達您系統上的各種類型的用戶,在邏輯順序下分組測試。圖12顯示了執行期間一組包含100%的用戶。您現在所擁有的結果可以100%產生用戶搜索,在他的購物車中添加購買項,在最后更改它們的想法,或者在另一個 Web 站點察看價錢。對于更現實的用戶來說,您可以將瀏覽人員、購買人員、店主或者查看訂單的用戶分組。您可以為每一個行為建立一個腳本。
同時,您還要注意這個視圖中擁有一連串新的標簽。在這篇文章中雖然您不會看到所有的標簽,但是您還是會看到它們中的一些。首先,將您的測試添加到用戶組。
- 右鍵點擊用戶組,然后點擊 Add > Test 按鈕。
- 在 Select Performance Tests 對話框中,選擇 AddToCart 然后點擊 OK,如圖13所示:
圖13:在調度中添加測試
在繼續之前,請快速的查看您在哪里可以找到 IP 混淆。 - 如果您點擊用戶組,您將會在 Schedule Element Details 部分下的表格中看到 IP 混淆。當您配置遠程執行路徑時,您需要設置它的 IP 混淆選項。對于這個測試來說,我們只需要選擇 Run this group on the local computer ,如圖14所示:
圖14:User Group 1 元素下的 IP 混淆 - 下一步,您需要為用戶改變開始時間。選擇 ScheduleOne 選項,調度的根節點。
- 在 Schedule Element Details 部分的 General 標簽上,選擇 Add a delay between starting each user 框體,如圖15所示:
圖15:設置用戶數量和每一個運行的用戶的延遲 - 在延遲設置中,輸入
100
milliseconds,如圖15所示。除此之外,將 Number of users 數值設置成5。注意: 請不要將用戶的數值設置成大于5或者10的數值。我想 BookPool.com 不希望遭受服務拒絕攻擊。
- 選擇 Think Time 標簽,清除 Limit think times to a maximum value 檢查欄,如圖16所示。我對認為限制思索時間并不感興趣。注意這里有幾個不同的選項,其中包含 Vary the think time by a random percentage。
圖16:設置思索時間
- 最后,選擇 Response Time Breakdown 標簽,然后同時選擇Enable collection of response time data 窗框和 AddToCart 測試用例。
- 一旦您選擇了測試,設置了選項之后,請將 Detail level 設置成 High(讓我們看看這個工具能夠做什么)。
- 由于 detail level 被設置成了 high (它可以使您慢下來),在這個測試中我們要限制它為一個用戶使用。
當您完成設置后,您的 Response Time Breakdown 標簽應該和圖17所示類似:
圖17:設置 Response Time Breakdown 選項
您的調度已經準備好可以運行。
運行您的調度
難理解的部分已經結束!按照下列步驟運行調度:
- 在 Test Navigator 中,選擇 ScheduleOne。
- 右鍵點擊調度,然后選擇 Run > Run Performance Schedule。
這個過程啟動了您的測試和報告的生成程序。您將會看到先前版本中所有的報告,不過其中添加了一些新的選項和特性。例如,報告中包含平均響應時間,并提供了時間的標準偏移量。除此之外,您現在可以為特定的時間范圍建立報告。這篇文章不會涉及所有的報告,但是我們會涉及一些有特色的響應時間分解。
- 右鍵點擊任意一個默認報告的頁面,您可以查看很多報告,如圖18所示:
圖18:右鍵點擊頁面查看報告選項
現在您有很多選項可選,它們是:- Display Response Time Breakdown Statistics
- Display Host Response Time Breakdown
- Display Page Element Responses
- 如果您選擇 Display Page Element Responses,您會看到每一個頁面元素的平均時間,如圖19所示:
圖19:Display Page Element Responses - 如果您選擇 Display Response Time Breakdown Statistics,您將會看到 Selection Wizard,如圖20所示: 您可以選擇一個單獨的元素。
圖20:運行時間分解 Selection Wizard
在這里您可以切換到其他頁面,并查看每一個 URL 詳細的響應時間。 - 選擇一個 URL 然后點擊 Finish 來查看頁面的 Methods 細節,如圖21所示:
圖21:Method-level 響應時間 - 如果您選擇 Display Host Response Time Breakdown,您會看到不同報告選項彈出,如圖22所示。這在真實測試項目中沒有任何實用價值,您可能會從您的測試中的各種服務器上收集數據(Web 服務器、應用程序服務器、數據庫服務器等等)。這樣的話,系統中正在測試的每一個服務器的 Response Time Breakdown 的數據都會顯示在報告中。
圖22:Host Response Time Breakdown 選項 - 選擇 Average Base Time (seconds) 選項。您應該會看到和圖23類似的視圖:
圖23:正常狀況下主機分解時間
這里還有其他報告選項,但是您只要運行這些報告選項就需要至少花費1周的時間。其他的報告選項請查看 Help 文檔。
下一步
這篇文章介紹了在 Rational Performance Tester V7.0 下運行負載測試的基礎知識。您也可以使用這些工具做其他類型的性能測試。當您已非常熟練掌握基本性能測試特性時,您可以嘗試使用其它的特性。
一條基本規則,如果您每次打開工具時都研究一項新的特性,那么您永遠也不能精通它們。Rational Performance Tester Help 是個很好的幫手,您還可以到 IBM® developerWorks® Web 網站查看性能測試的相關資料。我推薦您看一些深入的介紹文章,或者是瀏覽 Performance 和 VU Testing 論壇。
文章來源于領測軟件測試網 http://www.kjueaiud.com/