性能測試簡介
軟件系統的性能包括很多方面,有執行效率,資源占用,系統穩定性,安全性,兼容性,可靠性,可擴展性等。這些都是可以衡量一個軟件系統性能好壞的指標。而性能測試是指通過自動化測試工具去模擬多種正常,峰值及異常負載條件來對系統的各項性能指標進行測試。與功能測試相比,性能測試有更高的技術復雜性。
性能測試方法和目的
通過模擬生產運行的業務壓力量和使用場景組合,測試系統的性能是否滿足生產性能要求。驗證系統所具有的能力。
性能測試分類
1.負載測試(Load test)
通過在被測試系統上不斷施加壓力,直到系統性能指標達到極限。找到系統處理能力的極限。
2.壓力測試
測試系統在一定飽和狀態下,系統能夠快速處理的會話能力,以及系統是否會出現錯誤。檢查系統處於壓力下系統應用的表現。
3.並發測試
通過模擬多用戶並發訪問,測試多用戶並發訪問同一個系統應用模塊或者數據記錄時是否存在死鎖或者其他性能問題。可以發現系統中可能隱藏的的並發訪問時會出現的問題,比如訂單號重復,數據錯誤等等。
4.配置測試
通過對被測試系統的軟硬件環境的調整,了解各種不同對系統的性能影響的程度,從而找到系統各項資源的最優配置。可以了解各種不同因素對系統性能影響的程度。
5.可靠性測試(穩定性測試)
給系統加載一定業務壓力的情況下,是系統運行一段時間,以此來檢測系統運行是否穩定。可以驗證系統是否支持長期穩定的運行。
上面各種測試分類也是密切相關的,各種測試方法之間也有一定的包含。
性能指標
1. 平均響應時間(TTLB,Time to laster byte):平均每個請求從發送到接受響應的時間。
2. 合理的平均響應時間
2/5/10原則
解釋:
在2秒內客戶能得倒響應被用戶認為是“非常有吸引力的”用戶體驗。在5秒只內響應客戶被認為是“不錯的”用戶體驗,在10秒之內響應給客戶被認為是“糟糕”的用戶體驗。
如果超過10秒還沒得倒響應那么被認為請求是失敗的。
系統資源類的性能指標
1.CPU
CPU的占用率
2.內存
內存的占用率,交換換頁數等。
3.I/O
讀寫請求數,讀寫量等。跟數據庫相關。
4.帶寬
進出站等帶寬占用率。用戶的訪問量會增加帶寬的使用,帶寬合理的使用率會降低企業的成本。
5. PV:訪問一個URL,產生一個PV(Page View,頁面訪問量),每日每個網站的總PV量是形容一個 網站規模的重要指標。
6. UV:作為一個獨立的用戶,訪問站點的所有頁面均算作一個UV(Unique Visitor,用戶訪問)。
7. TPS:Transactions Per Second,每秒事務數。
為什么要進行性能測試
1.能夠有效評估系統的性能指標,用於系統的性能評估。
2.能夠識別系統的性能瓶頸,協助性能調優。
3.能夠指導突發流量承載方案的制定,指導資源的規划。
4.能夠用於系統運維成本的預算,根據參照進行資源的配置。
常見性能測試工具
AB(Apache Bench), wrk ,http_load , Web Bench ,Siege,Apache JMeter,Loadrunner
性能測試工具對比
1. AB 和 JMeter同是Apache下的兩款開源的壓測工具,AB是在命令行下輕量級的測試工具,AB使用簡單一行命令,不需要運行工具,而JMeter功能更強大,並且帶有GUI界面,操作更復雜。
2. JMeter支持分布式壓測,而AB不支持。
3. 使用方法上,AB是用ab這個命令以及ab命令后面所跟的參數,下面這種
ab -c 10 -n 100 http:
//localhost/test.php
JMeter在Window上運行有界面,在Linux環境中也可以用命令運行。
4. AB只支持HTTP協議,JMeter支持HTTP,JDBC,FTP等協議。
JMeter介紹及安裝
Apache JMeter是一款純java編寫負載功能測試和性能測試開源工具軟件,體積小,功能強大,使用方便,是一個比較輕量級的測試工具,上手比較簡單。
官網地址: http://jmeter.apache.org/
JMeter安裝環境要求:
1. 安裝JDK並且配置環境變量JAVA_HOME。
2. JMeter2.11版本 需要JDK1.6以上的版本支持。
我的電腦是Mac系統,所以命令 brew install jmeter 直接安裝,時間會有點長。
安裝完畢后輸入jmeter命令直接打開JMeter界面。
JMeter組成
1. 取樣器:進行腳本邏輯控制。可以用取樣器來控制業務流程,比如選擇請求的協議,何時去請求等去模擬用戶的操作行為。
2. 線程組:場景設置。包含用戶訪問的數量及並發。
3. 監視器:監控我們的腳本運行,獲取性能指標數據(吞吐量,TPS等參數)。