一、什麼是性能測試?算法
二、不一樣角色對性能測試的關注點?服務器
三、什麼是壓力測試?什麼是負載測試?區別是?網絡
四、性能測試的經常使用術語併發
********************************************************工具
一、什麼是性能測試?性能
性能測試是指被測系統,在必定的負載下運行,監控系統的各項指標,是否符合需求(指標,指的CPU,內存,事務響應時間,等)若是不符合,就發現了系統的性能瓶頸測試
********************************************************大數據
二、不一樣角色對性能測試的關注點?網站
用戶視角.net
響應時間
管理員的視角
響應時間
系統狀態相關的信息
開發的視角
響應時間
擴展性
性能瓶頸
*******************************************************
三、什麼是壓力測試?什麼是負載測試?區別是?
負載測試
模擬實際軟件系統所承受的負載條件的系統負荷,經過不斷加載(如逐漸增長模擬用戶的數量)或其它加載方式來觀察不一樣負載下系統的響應時間和數據吞吐量、系統佔用的資源(如CPU、內存)等,以檢驗系統的行爲和特性,以發現系統可能存在的性能瓶頸、內存泄漏、不能實時同步等問題。負載測試更多地體現了一種方法或一種技術。
壓力測試
是在**強負載(大數據量、大量併發用戶等)**下的測試,查看應用系統在峯值使用狀況下操做行爲,從而有效地發現系統的某項功能隱患、系統是否具備良好的容錯能力和可恢復能力。壓力測試分爲高負載下的長時間(如24小時以上)的穩定性壓力測試和極限負載狀況下致使系統崩潰的破壞性壓力測試。
壓力測試能夠被看做是負載測試的一種,即高負載下的負載測試,或者說壓力測試採用負載測試技術。經過壓力測試,能夠更快地發現內存泄漏問題,還能夠更快地發現影響系統穩定性的問題。例如,在正常負載狀況下,某些功能不能正常使用或系統出錯的機率比較低,可能一個月只出現一次,但在高負載(壓力測試)下,可能一天就出現,從而發現有缺陷的功能或其它系統問題。經過負載測試,能夠證實這一點,某個電子商務網站的訂單提交功能,在10個併發用戶時錯誤率是零,在 50個併發用戶時錯誤率是1%,而在200個併發用戶時錯誤率是20%。
負載測試是爲了發現系統的性能問題,負載測試須要經過系統性能特性或行爲來發現問題,從而爲性能改進提供幫助,從這個意義看,負載測試能夠看做性能測試的一部分。但它們二者的目的是不同的,負載測試是爲了發現缺陷,而性能測試是爲了獲取性能指標。由於性能測試過程當中,也能夠不調整負載,而是在一樣負載狀況下改變系統的結構、改變算法、改變硬件配置等等來獲得性能指標數據,從這個意義看,負載測試能夠看做是性能測試所屬的一種技術,即性能測試使用負載測試的技術、使用負載測試的工具。性能測試要得到在不一樣的負載狀況下的性能指標數據。
經過負載測試和壓力測試均可以得到系統正常工做時的極限負載或最大容量。容量測試,天然也是採用負載測試技術來實現,而在破壞性的壓力測試中,容量的肯定能夠看做是一種副產品——間接結果。
---------------------
簡單總結以下,
負載測試是經過改變系統負載方式、增長負載等來發現系統中所存在的性能問題。負載測試是一種測試方法,能夠爲性能測試、壓力測試所採用。
性能測試是爲獲取或驗證系統性能指標而進行測試。多數狀況下,性能測試會在不一樣負載狀況下進行。
壓力測試一般是在高負載狀況下來對系統的穩定性進行測試,更有效地發現系統穩定性的隱患和系統在負載峯值的條件下功能隱患等。
***************************************************************
四、性能測試的經常使用術語
負載
對被測系統不斷施加壓力,直到性能指標超過預期或某項資源使用達到飽和,以驗證系統的處理極限,爲系統性能調優提供依據;
併發
①狹義上的併發:全部用戶在同一時間點進行一樣的操做,通常指同一類型的業務場景,好比1000個用戶同時登錄系統;
②廣義上的併發:多個用戶與系統發生了交互,這些業務場景能夠是相同的也能夠是不一樣的,交叉請求和處理較多;
壓力
系統在必定飽和狀態下,例如CPU、內存等飽和狀況下,系統可以處理的會話能力,以及系統是否會出現錯誤
特色:主要目的是檢查系統處於壓力狀況下應用的性能表現,重點在於有無出錯信息產生,系統對應用的響應時間等
事務
性能測試中,事務指的是從端到端,一個完整的操做過程,好比一次登陸、一次篩選條件查詢,一次支付等;
吞吐量
指在一次性能測試過程當中網絡上傳輸的數據量的總和,也能夠這樣說在單次業務中,客戶端與服務器端進行的數據交互總量;
對交互式應用來講,吞吐量指標反映服務器承受的壓力,容量規劃的測試中,吞吐量是重點關注的指標,它可以說明系統級別的負載能力,另外,在性能調優過程當中,吞吐量指標也有重要的價值;
吞吐量和負載之間的關係:
①上升階段:吞吐量隨着負載的增長而增長,吞吐量和負載成正比;
②平穩階段:吞吐量隨着負載的增長而保持穩定,無太大變化或波動;
③降低階段:吞吐量隨着負載的增長而降低,吞吐量和負載成反比;
總結:吞吐量幹不過負載!!!
以下圖所示:
a1面積越大,說明系統的性能能力越強,a2面積越大,說明系統穩定性越好,a3面積越大,說明系統的容錯能力越好(嘖嘖,圖有點醜。。。)
吞吐率
吞吐量/傳輸時間,即單位時間內網絡上傳輸的數據量,也能夠指單位時間內處理客戶請求數量,它是衡量網絡性能的重要指標。
一般狀況下,吞吐率用「字節數/秒」來衡量,固然,也能夠用「請求數/秒」和「頁面數/秒」來衡量;
TPS
Transaction Per Second:每秒事務數,指服務器在單位時間內(秒)能夠處理的事務數量,通常以request/second爲單位;
PS:看到不少博客或性能測試人員將QPS和TPS混爲一談,我的認爲,他們是以測試結果的統計獲得該結論的;
QPS是查詢,而TPS是事務,事務是查詢的入口,也包含其餘類型的業務場景,所以QPS應該是TPS的子集!
QPS
Query Per Second:每秒查詢率,指服務器在單位時間內(秒)處理的查詢請求速率;
PS:TPS和QPS都是衡量系統處理能力的重要指標,通常和併發結合起來判斷系統的處理能力;
PV
Page View:頁面瀏覽量,一般是衡量一個頁面甚至網站流量的重要指標;
細分的話,有獨立訪問者數量、重複訪問者數量、單獨頁面訪問數量、用戶停留時間等類型;
RT/ART
Response Time/average Response Time:響應時間/平均響應時間,指一個事務花費多長時間完成;
通常來講,性能測試中平均響應時間更有表明意義。細分的話,還有最小最大響應時間,50%、90%用戶響應時間等;
Thinking Time
思考時間,在性能測試中,模擬用戶的真實操做場景。用戶操做的事務與事務之間是有必定間隔的,引入這個概念是爲了併發測試(有交叉業務場景)時,業務場景比率更符合真實業務場景;
鏈接池
鏈接池是一個進程,多個鏈接在一個進程中存儲、管理,它是共享、可複用的;
當客戶端發起請求,先檢查是否有閒置鏈接,若是有,則分配該鏈接給其使用;若是沒有,則請求進入等待隊列(等待空閒鏈接分配,這個取決於調度配置)或新建一個鏈接對象供其使用
(取決於鏈接池有多少鏈接以及容許的最大鏈接數);
每次客戶端發起請求,若是都新建鏈接,會消耗不少的資源,鏈接池的存在及其特性,減小了鏈接的創建所消耗的資源以及節省了不少鏈接建立時間,給系統提供了更好的伸縮性,也有助於
服務器性能的提高。
關於鏈接池中線程的狀態,可參考此篇博客:https://my.oschina.net/cctester/blog/991744
標準方差
各數據偏離平均數的距離(離均差)的平均數,它能反應一個數據集的離散程度。離散程度越大,數據越不可靠;
性能測試中引入這個術語,是爲了對高峯期、平緩期的系統響應時間分佈,不一樣業務場景的響應時間分佈,以及I/o數在時間段上的分佈等狀況進行分析,以判斷系統的穩定性。
資源使用率
以下圖所示,資源指標與硬件資源消耗直接相關,而系統指標則與用戶場景及需求直接相關:
資源指標:
CPU使用率:指用戶進程與系統進程消耗的CPU時間百分比,長時間狀況下,通常可接受上限不超過85%;
內存利用率:內存利用率=(1-空閒內存/總內存大小)*100%,通常至少有10%可用內存,內存使用率可接受上限爲85%;
磁盤I/O: 磁盤主要用於存取數據,所以當說到IO操做的時候,就會存在兩種相對應的操做,存數據的時候對應的是寫IO操做,取數據的時候對應的是是讀IO操做,通常使用% Disk Time
(磁盤用於讀寫操做所佔用的時間百分比)度量磁盤讀寫性能;
網絡帶寬:通常使用計數器Bytes Total/sec來度量,其表示爲發送和接收字節的速率,包括幀字符在內;判斷網絡鏈接速度是不是瓶頸,能夠用該計數器的值和目前網絡的帶寬比較;
系統指標:
併發用戶數:單位時間內與系統發生交互的用戶數;
在線用戶數:某段時間內訪問系統的用戶數,這些用戶並不必定同時向系統提交請求;
平均響應時間:系統處理事務的響應時間的平均值;事務的響應時間是從客戶端提交訪問請求到客戶端接收到服務器響應所消耗的時間;
事務成功率:性能測試中,定義事務用於度量一個或者多個業務流程的性能指標,如用戶登陸、保存訂單、提交訂單操做都可定義爲事務,單位時間內系統能夠成功完成多少個定義的事務,
在必定程度上反應了系統的處理能力,通常以事務成功率來度量;
超時錯誤率:主要指事務因爲超時或系統內部其它錯誤致使失敗佔總事務的比率;