效能測試工具之的 web 動態請求模擬度對比測評分析報告
1. 概述
在《虛擬使用者的 web 靜態請求模擬度對比測評分析報告》報告中,我們瞭解到無論被測物件的請求模型是什麼樣的,Jmeter 工具的虛擬使用者請求的併發模型都是序列的,LoadRunner11 工具的虛擬使用者請求模型都兩個兩個併發的,而對於 LoadRunner12 版本就具有了有很高的是相似度。
本文在《虛擬使用者的 web 靜態請求模擬度對比測評分析報告》一文字的基本上進一步比較 WEB 動態請求模擬度。WEB 的 http 請求分為靜態請求和動態請求,所謂動態請求,就是由瀏覽器執行相關程式碼而動態產生的 http 請求,如:javaScript
2. 概述
在《虛擬使用者的 web 靜態請求模擬度對比測評分析報告》報告中,我們瞭解到無論被測物件的請求模型是什麼樣的,Jmeter 工具的虛擬使用者請求的併發模型都是序列的,LoadRunner11 工具的虛擬使用者請求模型都兩個兩個併發的,而對於 LoadRunner12 版本就具有了有很高的是相似度。
本文在《虛擬使用者的 web 靜態請求模擬度對比測評分析報告》一文字的基本上進一步比較 WEB 動態請求模擬度。WEB 的 http 請求分為靜態請求和動態請求,所謂動態請求,就是由瀏覽器執行相關程式碼而動態產生的 http 請求,如:javaScript
圖 1-01
在 T1 時刻,只有虛擬使用者 1 在執行,在 T2 時刻有虛擬使用者 1-3 在執行。使用者 1、使用者 2、使用者 3 之間的並行關係是虛擬使用者併發模型。一般的效能測試工具的場景配置的就是虛擬使用者併發模型,即虛擬使用者之間的,而虛擬使用者請求併發模型是在製作指令碼的時候確定的。
虛擬使用者請求的併發模型與瀏覽器的相似程度越高,我們就認為虛擬使用者請求模擬度越高。虛擬使用者請求模擬度的高低,對效能測試工具的測試結果影響非常的大具大。
3. 瀏覽器的請示併發模型
開啟瀏覽器,在位址列輸入 URL 地址,瀏覽器就會顯示我們平時看到的圖形介面。瀏覽器與 WEB 服務端之間的互動,如下圖所示。
瀏覽器與 WEB 伺服器之間是協議通訊互動,而與使用者之間是圖形介面,在瀏覽器內部對協議通訊的內容作了相應的圖形轉換,使普通的使用者能夠看懂。如下所示的一個頁面,圖形介面顯示的是一個使用者登入介面,要求輸入帳號、密碼、驗證碼,還提從了一個登入按鈕。對於通訊層面,卻有 7 個請求。
注:開啟瀏覽器按 F12 鍵,並切換到 Network 或網路 頁籤,即可看到瀏覽器與 WEB 伺服器之間的互動。上圖的時間線,就是瀏覽器與 web 服務端之間請求的併發模型。對於效能測試工具的虛擬使用者請求併發模型要與瀏覽器相一致。
4. 測試環境
4.1.測試環境配置
4.2.測試工具
4.3.測試環境組網
圖 4-3-01
4.4.被測試物件
圖 4-4-01
5. HTTP 請求模擬度對比
5.1.測試思路
步驟 1:Loadrunner、kylinPET 具錄製同一個網頁
步驟 2:建立測試計劃,各自執行指令碼一次,執行的過程通過(wireShark 抓包)
步驟 3:通過對 wireShark 網路抓包結果分析 HTTP 請求的順序,然後和瀏覽器產生的請求併發模型對比。
注:kylinPET 工具能夠記錄錄製和執行過程中的 HTTP 請求順序,但 loadrunner 無此功能需要通過抓包分析。
5.2.對比基線
5.3.Microsoft Edge 瀏覽器的請求併發模型
使用 Edge 瀏覽器單獨方問題 Web 伺服器並記錄併發請求模型,如下所示,通過開啟主頁輸入使用者名稱稱、密碼、驗證碼登入後,瀏覽器記錄的請求併發模型。
使用者操作時間是使用者在輸入帳號、密碼、驗證碼以及點選登入按鈕時花費的介面操作時間。
在以上請求中,最後 6 個請求為動態請求,其餘為靜態請求。後續的請求併發模型比較,我們重點關注後面的動態請求。
注:上圖中時長為 0 的請求,通過 wireshark 抓包看,沒有相應的請求包。
5.4.KylinPET 模擬度分析
5.4.1.kylinPET 指令碼錄製:Edge 瀏覽器代理錄製
通過瀏覽器模型進行指令碼錄製獲得如下的指令碼
5.4.2. 執行效能測試任務
5.4.3. 測試結果分析
kylinPET 的效能測試計劃執行獲得使用者登入事務時間與預期時間相符(預期時間在 2 秒-3 秒之間),同時它的 HTTP 請求瀑布圖與瀏覽器單獨訪問 URL 得到的請求併發模型相一致。
5.5.LoadRuner12 模擬度分析
5.5.1.指令碼錄製:基於 HTML 的指令碼
5.5.2.執行測試計劃
下圖是任務執行通過 wireShark 抓包繪製得到請求併發模型圖(loadRunner 本身不提供虛擬使用者請求併發模型圖)
5.5.3.測試結果分析
1、 使用者登入事務時間為 12 秒,遠超事務的實際時間
2、 通過抓包分並繪製請求瀑布模型分析看,使用者登入事務的 6 個動態請求 loadrunner 處理為序列模式(實際為並行),導致事務時間拉長。(併發請求時事務時間取決於最大請求的時間,序列時間事務時間為所有請求時間的累加值)
5.HTTP 請求模擬度對比總結
KylinPET 可以正確處理 web 的動態請求模型,並獲得正確的事務時間。LoadRunner 在處理 web 動態請求時,把並行請求錯誤的處理為序列,導致事務時間拉長,獲得錯誤事務時間,如果同樣我們在使用 loadRuner 測試系統的壓力測試時,相同樣的的線上虛擬使用者數,對系統的壓力就會小 6 倍,導致測試不準,得出錯誤的系統允許最大線上使用者數。