1、什麼是性能測試
性能測試是指通過特定方式,對被測系統按照一定策略施加壓力,獲取系統響應時間、TPS(Transation Per Second)、吞吐量、資源利用率等性能指標,以期保證生產系統的性能能夠滿足用戶需求的過程。
1)負載測試(Load Testing)
通過逐步增加系統負載,測試系統性能的變化,並最終確定在滿足性能指標的情況下,系統所能承受的最大負載量的測試。
2)壓力測試(Stress Testing)
通過逐步增加系統負載,測試系統性能的變化,並最終確定在什麼負載條件下系統性能出於失效狀態,並以此來獲得系統能夠提供的最大服務級別的測試。壓力測試,是一種特定類型的負載測試。
3)疲勞強度測試
通常是採用系統穩定運行情況下能夠支持的最大併發用戶數或者日常運行用戶數,持續執行一段時間業務,通過綜合分析交易執行指標和資源監控指標來確定系統處理最大工作量強度性能的過程。疲勞強度測試可以反映出系統的性能問題,例如內存泄露等。
2、軟件的性能指標有哪些?
1)併發用戶數(最佳、最大):應用系統可支持的併發用戶數,通常反映系統的容量,即系統的處理能力情況。(最佳:對系統、用戶都最佳;最大:系統、用戶的最大容忍度)
2)響應時間:從客戶端發起一個請求開始,到客戶端接收到從服務器端返回的響應結束,這個過程所耗費的時間。包括網絡傳輸時間、web/app服務器處理時間、DB服務器處理時間,但不包括瀏覽器上的內容顯示時間。
3)吞吐量:單位時間內系統處理的客戶請求的數量,直接體現應用系統的性能承載能力。
4)TPS(Transation Per Second):應用系統每秒處理完成的交易數量。
5)HPS(Hit Per second):每秒內用戶對WEB頁面的鏈接、提交按鈕等點擊綜合。(HPS一般與TPS成正比關係,是B/S系統中非常重要的性能指標之一)
6)資源利用率:指系統在負載運行期間,數據庫服務器、應用服務器、web服務器的CPU、內存、硬盤、外置存儲,網絡帶寬的使用率。(一般,<20%爲資源空閒;20%-60%爲資源使用穩定,60%-80%爲資源使用飽和;>80%則需進行資源調整和優化)
CPU使用率:用戶進程與系統進程消耗的CPU時間百分比(一般目標:<80%)
內存利用率:iowait/iostat,內存利用率=(1-空閒內存/總內存大小)*100%(一般目標:10%-85%之間)
磁盤I/O:磁盤主要用於存/取數據。一般使用%Dist Time(磁盤用於讀寫操作所佔用的時間百分比)度量磁盤讀寫性能
網絡帶寬:一般使用計數器Bytes Total/sec(標示)來度量,
7)事務成功率:一段時間內成功的交易數在總交易數中所佔的比例
3、指標監控及分析(待補充)
1)資源指標
Linux系統,free、vmstat、sar、iostat等命令監控內存、CPU、磁盤IO等的使用情況
CPU:下面兩種情況則可判斷CPU存在瓶頸,1)CPU空閒持續爲0;2)運行隊列大於CPU核數3-4倍。(應用程序不合理、硬件資源不足、SQL語句等都可能引起CPU瓶頸)
內存:內存可用率在10%-85%之間即可接口,大於85%則存在瓶頸。(空間內存過小可能是內存不足或內存泄露引起)
性能測試 舉例:
性能測試前,明確性能目標:
系統要處理的最大併發用戶數
系統運行高峯時期,響應時間小於X秒
TPS不小於多少
服務器資源利用率不超過80%
運行7*24小時,無明顯的內存泄露現象
性能測試前,瞭解環境(測試環境):
硬件環境:瞭解被測服務器的硬件配置,用於加壓客戶端的機子配置,CPU、內存等
軟件環境:瞭解被測系統的架構,前端、中間件、服務器(指運行系統軟件服務器,如tomcat)、數據庫,以及他們的部署位置
網絡環境:找出系統性能瓶頸可以在廣域網進行,其他的都在局域網進行。