天天看點

記一次性能測試實踐

1.測試對象

  這次測了一些http接口和幾個網頁。

  2.測試政策

  2.1 基準測試:單個調用各接口循環100次計算平均響應時間

  2.2 性能測試:單個接口調用以50并發使用者數為機關,逐漸加壓直到預估的實際負載300并發使用者,觀察測試名額變化

  2.3 壓力測試:單個接口調用以50并發使用者數為機關,逐漸加壓直到錯誤率過高或伺服器資源使用率過高,觀察測試名額變化

  2.4 負載測試:預估實際負載為300并發使用者數,在此基礎上持續測試5分鐘左右,觀察測試名額是否達标

  2.5 穩定性測試:預估實際負載為300并發使用者數,在此基礎上持續測試60分鐘左右,觀察測試名額是否達标,重點觀察錯誤率

  2.6 疲勞性測試:預估實際負載為300并發使用者數,在此基礎上持續測試240分鐘左右,觀察測試名額是否達标,重點觀察錯誤率

  2.7 組合測試:對2.2-2.5的測試采用不同接口同時調用(即系統不同子產品同時測試)

  2.8 其他:以不同ip位址加壓,測試伺服器負載均衡效果。

  以上,本次隻做了2.2、2.3、2.4、2.8

  3.測試名額

  測響應時間、錯誤率;同時專人監控伺服器硬體資源使用狀況、監控tomcat應用伺服器等。

  計算和監控吞吐量(測試工具自動計算測試執行過程中的吞吐量(每秒鐘處理請求數),同時伺服器監控軟體業監控到了測試執行時伺服器的吞吐量)

  本次實際測試得到吞吐量距離預估有較大差距;錯誤率超出預期;且測試資料準備有一定問題。

  4.測試工具

  本次選用jmeter,因為便宜且靈活。

  需設定語言為英文,預設中文翻譯不完整。

  5.測試腳本編寫、調試

  5.1 提前對接口、網頁進行錄制。每個待測接口、網頁需要加斷言。 斷言多采用jquery斷言和regular expression斷言

  5.2 重點在測試資料的準備。

  5.3 采用了本地web應用提供資料,jmeter擷取這些資料,再發送給伺服器的方法(這次發現這個本地應用生成的資料在較高并發時有重複,導緻了不必要的錯誤率)

  5.4 測試結果監聽器: assertion results, summary report, aggregate report, result tree, result table

  5.5 測試接口調用時,可用網頁、資料庫等其他方法确認接口調用成功。觀察接口調用是否生效,是否和網頁同樣效果。

  6.測試執行

  6.1 一台電腦加壓300-600并發使用者。如果需要更多則需要增加電腦。

  6.2 以不同ip位址加壓,測試伺服器負載均衡效果。

  6.3 機房測試,排除internet網絡延遲問題

  6.4 資料備份和還原,排除性能測試對資料的改變

  6.5 生産環境測試(系統未上線),排除測試環境的影響

  7.測試報告

  7.1 截取了jmeter監聽器的結果,可以截取伺服器監控的截圖

  8.調優

  本次測試結果不理想,伺服器因硬體強大,幾乎無負載,但應用本身有java出錯。并發現接口調用結果未正确影響網頁的bug。

  後續需要等開發修複、優化之後再次測試