取得領先
VMware 提供培訓和認證,以加速您的進步。
瞭解更多Web Flow 應用程式的負載測試與其他 Web 應用程式的負載測試類似——我們將使用負載測試工具來模擬不斷增加的併發客戶端訪問,以便捕獲重要的效能統計資訊。
對於 Web Flow,負載測試將有幾個重要的考慮因素
Apache JMeter 是一種開源效能測試工具,可以滿足這兩個考慮因素。
對於 1),我們在每個執行 Web Flow 功能的測試組的根目錄中新增一個 HTTP Cookie Manager 元素。 Cookie Manager 確保每個模擬的客戶端請求都可以擁有自己的 cookie,獨立於其他客戶端請求,從而允許 servlet 容器透過 jsessionid cookie 跟蹤獨立的 HTTP 會話。
對於 2),我們在啟動流的 HTTP 請求元素之後立即新增一個正則表示式提取器。 提取器的目的是解析 HTTP 響應,使用我們提供的正則表示式找到一些文字,並將該文字作為變數提供給後續 HTTP 請求元素使用。 以下是正則表示式提取器的示例配置
引用名稱:flowExecutionKey 正則表示式:name="_flowExecutionKey" value="(.*)" 模板:$1$ 匹配編號:0
透過上述配置,我們現在可以將變數 ${flowExecutionKey} 嵌入到作為同一流會話一部分的後續 HTTP 請求元素中。
現在讓我們用它來對 Web Flow 進行負載測試。 為了適當地執行具有代表性的 Web Flow 功能,我建立了一個示例 web flow 應用程式,用於模擬一個 6 步購物車流程,收集使用者輸入的送貨地址、送貨選項、信用卡、賬單地址、訂單確認,以及最後的訂單摘要。 此流程中的各個步驟包括資料繫結和驗證、檢視狀態、操作狀態、決策狀態和子流程狀態——我們希望在典型的 Web Flow 應用程式中找到這些內容。 但是,該應用程式使用存根而不是實際的資料庫訪問程式碼,以避免將此類數字包含在總體統計資訊中。 我們希望在此測試中僅關注 Web Flow。
在構建應用程式並建立 JMeter 指令碼後,我添加了一個聚合報告元素來記錄不同負載級別的測試的效能統計資訊。
使用我的 Lenovo T60 雙核筆記型電腦,執行 Ubuntu 和 Apache Tomcat 5.5 版作為 servlet 容器,配置為最多 150 個併發連線,我觀察到以下結果
使用者 | 90% | 最大值 | 請求/秒 | KB/秒 | 總請求數 |
20 | 102 | 596 | 351 | 380 | 18000 |
60 | 372 | 5942 | 338 | 366 | 18000 |
80 | 463 | 10287 | 336 | 364 | 18000 |
100 | 550 | 11144 | 315 | 342 | 18000 |
150 | 687 | 20691 | 306 | 332 | 18000 |
真正的負載測試應該在真實的硬體上進行,並基於真實的用例。 這是無可替代的。 但是,我們可以從以上數字中得出某些結論。
以上數字表明,即使併發使用者數量顯著增加,在執行核心 Web Flow 功能時,吞吐量仍然保持穩定。 90% 的使用者的響應時間仍然小於一秒。 最差的響應時間隨著負載的增加而增加,但這並不奇怪,因為用於測試的硬體不足。
使用上述技術,您可以對自己的 Web Flow 應用程式進行負載測試。