性能(néng)測試相關概念
性能(néng)測試是通過(guò)自動化的測試工具模拟多種(zhǒng)正常、峰值以及異常負載條件來對(duì)系統的各項性能(néng)指标進(jìn)行測試。
系統的性能(néng)是一個很大的概念,覆蓋面(miàn)非常廣泛,包括執行效率、資源占用、系統穩定性、安全性、兼容性、可靠性、可擴展性等,性能(néng)測試就(jiù)是描述測試對(duì)象與性能(néng)相關的特征并對(duì)其進(jìn)行評價而實施的一類測試。
性能(néng)測試是一個統稱,它其實包含多種(zhǒng)類型,主要有負載測試、壓力測試、并發(fā)測試、容量測試等,每種(zhǒng)測試類型都(dōu)有其側重點。
1.負載測試
負載測試是指逐步增加系統負載,測試系統性能(néng)的變化,并最終确定在滿足系統性能(néng)指标的情況下,系統所能(néng)夠承受的最大負載量。負載測試類似于舉重運動,通過(guò)不斷給運動員增加重量,确定運動員身體狀況保持正常的情況下所能(néng)舉起(qǐ)的最大重量。
對(duì)于負載測試來說(shuō),前提是滿足性能(néng)指标要求。例如一個軟件系統的響應時(shí)間要求不超過(guò)2s,則在這(zhè)個前提下,不斷增加用戶訪問量,當訪問量超過(guò)1萬人時(shí),系統的響應時(shí)間就(jiù)會(huì)變慢,超過(guò)2s,從而可以确定系統響應時(shí)間不超過(guò)2s的前提下最大負載量是1萬人。
2.壓力測試
壓力測試也叫(jiào)強度測試,它是指逐步給系統增加壓力,測試系統的性能(néng)變化,使系統某些資源達到飽和或系統崩潰的邊緣,從而确定系統所能(néng)承受的最大壓力。
壓力測試與負載測試是有區别的,負載測試是在保持性能(néng)指标要求的前提下測試系統能(néng)夠承受的最大負載,而壓力測試則是使系統性能(néng)達到極限的狀态。
例如軟件系統正常的響應時(shí)間爲2s,負載測試确定訪問量超過(guò)1萬時(shí)響應時(shí)間變慢。壓力測試則繼續增加用戶訪問量觀察系統的性能(néng)變化,當用戶增加到2萬時(shí)系統響應時(shí)間爲3s,當用戶增加到3萬時(shí)響應時(shí)間爲4s,當用戶增加到4萬時(shí),系統崩潰無法響應。由此确定系統能(néng)承受的最大訪問量爲4萬。
壓力測試可以揭露那些隻有在高負載條件下才會(huì)出現的Bug(缺陷),如同步問題、内存洩漏等。
3.并發(fā)測試
并發(fā)測試是指通過(guò)模拟用戶并發(fā)訪問,測試多用戶并發(fā)訪問同一個應用、同一個模塊或者數據記錄時(shí)是否存在死鎖或其他性能(néng)問題。并發(fā)測試一般沒(méi)有标準,隻是測試并發(fā)時(shí)會(huì)不會(huì)出現意外情況,幾乎所有的性能(néng)測試都(dōu)會(huì)涉及一些并發(fā)測試,例如多個用戶同時(shí)訪問某一條件數據,多個用戶同時(shí)在更新數據,那麼(me)數據庫可能(néng)就(jiù)會(huì)出現訪問錯誤、寫人錯誤等異常情況。
4.可靠性測試
可靠性測試是指給系統加載一定的業務壓力,使其持續運行一段時(shí)間(如7×24h),測試系統在這(zhè)種(zhǒng)條件下是否能(néng)夠穩定運行。例如可以進(jìn)行使CPU保持70%~90%利用率的壓力,連續對(duì)系統加壓7×24小時(shí)的測試,然後(hòu)根據結果分析是否穩定可靠。
5.容量測試
容量測試驗證被測對(duì)象承受超額數據容量時(shí),正确處理業務請求的能(néng)力。容量測試是面(miàn)向(xiàng)數據的,并且它的目的是顯示系統可以處理目标内确定的數據容量,如并發(fā)用廣數、數據庫記錄、存儲文件數等。
容量測試是指在一定的軟硬件及網絡環境下,測試系統所能(néng)支持的最大用戶數、最大存儲量等。容量測試通常與數據庫、系統資源(如CPU、内存、磁盤等)有關,用于規劃將(jiāng)來需求增長(cháng)(如用戶增長(cháng)、業務量增加等)時(shí),對(duì)數據庫和系統資源的優化。
針對(duì)上述負載測試、壓力測試、容量測試舉個例子
例:一個人背X斤
負載測試:200斤情況下,是否能(néng)堅持5分鍾。
壓力測試:200,300,400... 斤情況下,他的表現,什麼(me)時(shí)候失敗,失敗之後(hòu)什麼(me)表現,重新扛200是否正常。
容量測試:在堅持5分鍾的情況下,他一次最多能(néng)扛多少斤。
常見術語有:響應時(shí)間、并發(fā)用戶數、吞吐量、吞吐率、點擊率、資源使用率、性能(néng)計數器等。
1、響應時(shí)間 RT
響應時(shí)間是指用戶從客戶端發(fā)送請求到所有的請求都(dōu)從服務器返回客戶所經(jīng)曆的時(shí)間。
概念:響應時(shí)間是指客戶端/系統從發(fā)出請求開(kāi)始,到接收到全部響應數據所有的時(shí)間。
注意:是從請求發(fā)送開(kāi)始到接收到全部響應數據,強調全部。
誤區:很多時(shí)候,用戶會(huì)將(jiāng)發(fā)送請求到接收到響應數據視爲響應時(shí)間。
2、并發(fā)用戶數
關于用戶并發(fā)的數量,有兩(liǎng)種(zhǒng)常見的錯誤觀點。
一種(zhǒng)錯誤觀點是把并發(fā)用戶數量理解爲使用系統的全部用戶的數量,理由是這(zhè)些用戶可能(néng)同時(shí)使用系統;
還(hái)有一種(zhǒng)比較接近正确的觀點是把在線用戶數量理解爲并發(fā)用戶數量 。
實際上在線用戶也不一定會(huì)和其他用戶發(fā)生并發(fā),例如正在浏網頁信息的用戶,對(duì)服務器沒(méi)有任何影響。并發(fā)主要針對(duì)Web服務器而言,是否并發(fā)的關鍵是看用戶的操作是否對(duì)服務器産生影響。
因此用戶并發(fā)數量的正确理解是,在同一時(shí)刻與服務器進(jìn)行交互的在線用戶數量,這(zhè)些用戶的最大特征是和服務器發(fā)生了交互。
-----此段引用《Web性能(néng)測試實戰》一書。
《Web性能(néng)測試實戰》
在工作中,對(duì)于并發(fā)用戶這(zhè)個概念的理解經(jīng)常會(huì)出現以下兩(liǎng)種(zhǒng)誤區:
一是認爲系統所有的用戶都(dōu)是并發(fā)用戶;
二是認爲所有在線的用戶都(dōu)是并發(fā)用戶。
系統使用中所有的用戶是指所有可能(néng)用到該系統的用戶,但這(zhè)并不是并發(fā)用戶數。
在線用戶指當前正在使用系統的用戶,但在線用戶不一定是并發(fā)用戶,因爲在線用戶不一定就(jiù)與系統進(jìn)行了數據交互。
3、吞吐量
在性能(néng)測試過(guò)程中,吞吐量是指單位時(shí)間内服務器處理客戶請求的數量,吞吐量通常使用請求數/秒來衡量,直接體現服務器的承載能(néng)力。
吞吐量作爲性能(néng)測試過(guò)程中主要的指标之一,它與虛拟用戶數之間存在一定的聯系。
但在實際測試過(guò)程中,測試前吞吐量是不知道(dào)的,必須通過(guò)不斷添加虛拟用戶來不斷地測試,才能(néng)找到吞吐量的拐點,即服務器實際吞吐量的值。
4、吞吐率
吞吐率(Throughout)是指單位時(shí)間内從服務器返回的字節數,也可以指單位時(shí)間内服務器處理客戶提交的請求數。它是衡量網絡性能(néng)的一個重要指标。吞吐率=吞吐量/測試時(shí)間,通常情況下吞吐量的值越大,吞吐率的值也越大,那麼(me)系統的負載能(néng)力越強。
TPS(Transaction Per Second)表示服務器每秒處理的事(shì)務數,它是衡量系統處理能(néng)力的重要指标。
5、點擊率
點擊率(Hit Per Second)是指每秒鍾用戶向(xiàng)服務器提交的 HTTP 數量。用戶每點擊一次,服務器端就(jiù)要對(duì)用戶提交的請求進(jìn)行一次處理,從事(shì)務的角度來說(shuō),如果把每次點擊作爲提交事(shì)務來對(duì)待,那麼(me)點擊率與 TPS 的概念是等同的。對(duì)于 Web 系統來說(shuō),點擊率是服務器處理的最小單位,點擊率的值越大,說(shuō)明服務器端所能(néng)承受的壓力越大。因此通常情況下,Web 服務器都(dōu)具有防刷新的機制,因爲客戶每刷新一次系統就(jiù)要響應一次點擊,如果不對(duì)服務器進(jìn)行防刷新處理,當用戶不停地單擊刷新按鈕,此時(shí)服務器將(jiāng)承受著(zhe)巨大的壓力。
需要注意的是,單擊一次并不代表客戶端隻向(xiàng)服務器端發(fā)送一個 HTTP 請求,客戶每單擊一次,都(dōu)可能(néng)會(huì)向(xiàng)服務器端發(fā)出多個 HTTP 請求。點擊率越高,說(shuō)明客戶端提交的請求數越多,正常情況下并發(fā)的虛拟用戶數越多,客戶端提交的請求數越多。
6、資源使用率
資源使用率是指服務器系統不同硬件資源被使用的程度,主要包括 CPU 使用率、内存使用率、磁盤使用率、網絡等。資源使用率=資源實際使用量/總的可用資源量。資源利用率表現當前服務器資源使用的情況,它是分析服務器出現瓶頸和對(duì)服務器進(jìn)行調優的主要依據,在配置調優測試的過(guò)程中,通過(guò)比較配置調優前後(hòu)系統資源的使用率來判斷調優的效果。
7、性能(néng)計數器
系統性能(néng)包括兩(liǎng)部分:時(shí)間和空間。空間指的是系統硬件資源的使用情況,性能(néng)測試工具是如何來監控硬件資源(如 CPU、内存、磁盤)的使用情況呢? 性能(néng)測試工具并沒(méi)有現成(chéng)的指标可以直接監控這(zhè)些硬件資源使用的情況,依靠的是不同硬件資源所對(duì)應的計數器來監控。
性能(néng)計數器(Counter)是描述服務器或操作系統硬件使用情況的一系列數據指标。當然數據庫、Web 服務器和應用服務器也存在對(duì)應的計數器,但其他歸根到底都(dōu)是在消耗服務器的硬件資源。通過(guò)添加計數器來觀察系統資源的使用情況。監控不同的對(duì)象有著(zhe)不同的計數器,主要包括操作系統性能(néng)計數器、數據庫計數器、應用服務器計數器等。
計數器在性能(néng)測試過(guò)程中發(fā)揮著(zhe)監控和分析的關鍵作用,尤其是在分析系統的可擴展性和對(duì)性能(néng)瓶頸進(jìn)行定位時(shí),計數器的阈值起(qǐ)著(zhe)非常重要的作用。必須注意的是,一般情況下,單一的性能(néng)計數器隻能(néng)體現系統性能(néng)的某一個方面(miàn),在性能(néng)測試過(guò)程中分析測試結果時(shí),必須基于多個不同的計數器進(jìn)行分析。
在性能(néng)測試中常用資源利用率進(jìn)行橫向(xiàng)對(duì)比。如在進(jìn)行性能(néng)測試時(shí)發(fā)現,某個資源的使用率很高,幾乎達到 100%,假設該資源是 CPU,而其他資源的使用率又比較低,此時(shí)可以很清楚地知道(dào),CPU 是系統性能(néng)的瓶頸。
8、思考時(shí)間
概念:思考時(shí)間是指用戶在操作時(shí),每個請求之間的時(shí)間間隙。
對(duì)于交互系統來說(shuō),不可能(néng)持續不斷的發(fā)送請求,一般情況下,用戶在向(xiàng)服務端發(fā)送一個請求後(hòu),會(huì)等待一段時(shí)間發(fā)下一個請求,在性能(néng)測試過(guò)程中使用思考時(shí)間來描述。
這(zhè)個時(shí)間,在腳本中,兩(liǎng)個請求之間的時(shí)間間隔就(jiù)是思考時(shí)間,也成(chéng)爲休眠時(shí)間。
掃二維碼用手機看
更多資訊