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。
後續需要等開發修複、優化之後再次測試