概念
性能測試是經過自動化的測試工具模擬多種正常、峯值以及異常負載條件來對系統的各項性能指標進行測試。
簡單的來講就是選擇適合本身系統業務邏輯的方式,用最低的成本、最快的時間來作出最有價值的事情。web
分類
根據不一樣的測試目的,在具體的測試執行中又有所側重和區分,詳細可分爲:壓力測試、容量測試、極限測試、基準測試數據庫
- 壓力測試:評估系統處於或超過預期負載時系統的運行狀況。壓力測試的關注點在於系統在峯值負載或超出最大載荷狀況下的處理能力。在壓力級別逐漸增長時,系統性能應該按照預期緩慢降低,可是不該該崩潰。壓力測試還能夠發現系統崩潰的臨界點,從而發現系統中的薄弱環節。
- 容量測試:肯定系統可處理同時在線的最大用戶數,使系統承受超額的數據容量來發現它是否可以正確處理。
- 極限測試:在過量用戶下的負載測試。
- 基準測試:比較新的或未知測試對象與已知參照標準(如現有軟件或評測標準)的性能。
指標
Web服務器指標指標:服務器
- Avg Rps: 平均每秒鐘響應次數=總請求時間 / 秒數
- Avg time to last byte per terstion (mstes):平均每秒業務腳本的迭代次數,有人會把這二者混淆
- Successful Rounds:成功的請求
- Failed Rounds :失敗的請求
- Successful Hits :成功的點擊次數
- Failed Hits :失敗的點擊次數
- Hits Per Second :每秒點擊次數
- Successful Hits Per Second :每秒成功的點擊次數
- Failed Hits Per Second :每秒失敗的點擊次數
- Attempted Connections :嘗試連接數
CS結構程序,因爲通常軟件後臺一般爲數據庫,因此咱們更注重數據庫的測試指標:網絡
- User 0 Connections :用戶鏈接數,也就是數據庫的鏈接數量
- Number of deadlocks:數據庫死鎖
- Buffer Cache hit :數據庫Cache的命中狀況
原則
- 對於不一樣的系統,性能關注點是有所區別的,應該具體問題具體分析。
- 狀況許可時,應使用幾種測試工具或手段分別獨立進行測試,並將結果相互印證,避免單一工具或測試手段自身缺陷影響結果的準確性。
- 瞭解「有限的資源,無限的需求」。
- 儘量在開始前明確調優工做的終止標準。
- 調優過程當中應仔細進行記錄,保留每一步的操做內容及結果,以便比較分析。
工具
- Web Bench:是一個簡單的web或者web代理服務的基準測試工具。(它)使用fork()模擬多個客戶端而且能夠發起HTTP/0/9-HTTP/1.1的請求
- Apache JMeter:是一個專門爲運行和服務器裝載測試而設計的、100%的純Java桌面運行程序。原先它是爲Web/HTTP測試而設計的,可是它已經擴展以支持各類各樣的測試模塊。它和用於HTTP和SQL數據庫(使用JDBC)的模塊一塊兒運送。它能夠用來測試靜止資料庫或者活動資料庫中的服務器的運行狀況,能夠用來模擬對服務器或者網絡系統加以重負荷以測試它的抵抗力,或者用來分析不一樣負荷類型下的全部運行狀況。它也提供了一個可替換的界面用來定製數據顯示,測試同步及測試的建立和執行。
- Web Polygraph:是一個用於測試WEB性能的工具,這個工具是不少公司的標準測試工具,包括微軟在分析其軟件性能的時候,也是使用這個工具作爲基準工具的。
- LoadRunner: 是一種預測系統行爲和性能的工業標準級負載測試工具。經過以模擬上千萬用戶實施併發負載及實時性能監測的方式來確認和查找問題,LoadRunner 可以對整個企業架構進行測試。經過使用LoadRunner , 企業能最大限度地縮短測試時間, 優化性能和加速應用系統的發佈週期。企業的網絡應用環境都必須支持大量用戶,網絡體系架構中含各種應用環境且由不一樣供應商提供軟件和硬件產品。難以預知的用戶負載和越來越複雜的應用環境使公司時時擔憂會發生用戶響應速度過慢, 系統崩潰等問題。這些都不可避免地致使公司收益的損失。Mercury Interactive 的 LoadRunner 能讓企業保護本身的收入來源, 無需購置額外硬件而最大限度地利用現有的IT 資源, 並確保終端用戶在應用系統的各個環節中對其測試應用的質量, 可靠性和可擴展性都有良好的評價。LoadRunner 是一種適用於各類體系架構的自動負載測試工具, 它能預測系統行爲並優化系統性能。LoadRunner 的測試對象是整個企業的系統, 它經過模擬實際用戶的操做行爲和實行實時性能監測, 來幫助您更快的查找和發現問題。此外,LoadRunner 能支持廣範的協議和技術, 爲您的特殊環境提供特殊的解決方案。
步驟
因爲工程和項目的不一樣,所選用的度量,評估方法也有不一樣之處。不過對於性能測試有一些通用的步驟。架構
- 分析系統
- 建立測試模型,一般是從生產環境中的數據中統計。
- 測試方案
- 制定評估標準
- 選則相關技術和工具
- 設計性能測試場景,也就是測試用例
- 輸出報告
- 運行測試,分析調優