軟件性能測試的基本概念和計算公式
一、軟件性能的關注點
對一個軟件做性能測試時需要關注那些性能呢?
我們想想在軟件設計、部署、使用、維護中一共有哪些角色的參與,然后再考慮這些角色各自關注的性能點是什么,作為一個軟件性能測試工程師,我們又該關注什么?
首先,開發軟件的目的是為了讓用戶使用,我們先站在用戶的角度分析一下,用戶需要關注哪些性能。
對于用戶來說,當點擊一個按鈕、鏈接或發出一條指令開始,到系統把結果已用戶感知的形式展現出來為止,這個過程所消耗的時間是用戶對這個軟件性能的直觀印象。也就是我們所說的響應時間,當相應時間較小時,用戶體驗是很好的,當然用戶體驗的響應時間包括個人主觀因素和客觀響應時間,在設計軟件時,我們就需要考慮到如何更好地結合這兩部分達到用戶最佳的體驗。如:用戶在大數據量查詢時,我們可以將先提取出來的數據展示給用戶,在用戶看的過程中繼續進行數據檢索,這時用戶并不知道我們后臺在做什么。
用戶關注的是用戶操作的相應時間。
其次,我們站在管理員的角度考慮需要關注的性能點。
1、 相應時間
2、 服務器資源使用情況是否合理
3、 應用服務器和數據庫資源使用是否合理
4、 系統能否實現擴展
5、 系統最多支持多少用戶訪問、系統最大業務處理量是多少
6、 系統性能可能存在的瓶頸在哪里
7、 更換那些設備可以提高性能
8、 系統能否支持7×24小時的業務訪問
再次,站在開發(設計)人員角度去考慮。
1、 架構設計是否合理
2、 數據庫設計是否合理
3、 代碼是否存在性能方面的問題
4、 系統中是否有不合理的內存使用方式
5、 系統中是否存在不合理的線程同步方式
6、 系統中是否存在不合理的資源競爭
那么站在性能測試工程師的角度,我們要關注什么呢?
一句話,我們要關注以上所有的性能點。
二、軟件性能的幾個主要術語
1、響應時間:對請求作出響應所需要的時間
網絡傳輸時間:N1+N2+N3+N4
應用服務器處理時間:A1+A3
數據庫服務器處理時間:A2
響應時間=N1+N2+N3+N4+A1+A3+A2
2、并發用戶數的計算公式
系統用戶數:系統額定的用戶數量,如一個OA系統,可能使用該系統的用戶總數是5000個,那么這個數量,就是系統用戶數。
同時在線用戶數:在一定的時間范圍內,最大的同時在線用戶數量。
同時在線用戶數=每秒請求數RPS(吞吐量)+并發連接數+平均用戶思考時間
平均并發用戶數的計算:C=nL / T
其中C是平均的并發用戶數,n是平均每天訪問用戶數(login session),L是一天內用戶從登錄到退出的平均時間(login session的平均時間),T是考察時間長度(一天內多長時間有用戶使用系統)
并發用戶數峰值計算:C^約等于C + 3*根號C
其中C^是并發用戶峰值,C是平均并發用戶數,該公式遵循泊松分布理論。
3、吞吐量的計算公式
指單位時間內系統處理用戶的請求數
從業務角度看,吞吐量可以用:請求數/秒、頁面數/秒、人數/天或處理業務數/小時等單位來衡量
從網絡角度看,吞吐量可以用:字節/秒來衡量
對于交互式應用來說,吞吐量指標反映的是服務器承受的壓力,他能夠說明系統的負載能力
以不同方式表達的吞吐量可以說明不同層次的問題,例如,以字節數/秒方式可以表示數要受網絡基礎設施、服務器架構、應用服務器制約等方面的瓶頸;已請求數/秒的方式表示主要是受應用服務器和應用代碼的制約體現出的瓶頸。
當沒有遇到性能瓶頸的時候,吞吐量與虛擬用戶數之間存在一定的聯系,可以采用以下公式計算:F=VU * R /
其中F為吞吐量,VU表示虛擬用戶個數,R表示每個虛擬用戶發出的請求數,T表示性能測試所用的時間
4、性能計數器
是描述服務器或操作系統性能的一些數據指標,如使用內存數、進程時間,在性能測試中發揮著“監控和分析”的作用,尤其是在分析統統可擴展性、進行新能瓶頸定位時有著非常關鍵的作用。
資源利用率:指系統各種資源的使用情況,如cpu占用率為68%,內存占用率為55%,一般使用“資源實際使用/總的資源可用量”形成資源利用率。
5、思考時間的計算公式
Think Time,從業務角度來看,這個時間指用戶進行操作時每個請求之間的時間間隔,而在做新能測試時,為了模擬這樣的時間間隔,引入了思考時間這個概念,來更加真實的模擬用戶的操作。
在吞吐量這個公式中F=VU * R / T說明吞吐量F是VU數量、每個用戶發出的請求數R和時間T的函數,而其中的R又可以用時間T和用戶思考時間TS來計算:R = T / TS
下面給出一個計算思考時間的一般步驟:
A、首先計算出系統的并發用戶數
C=nL / T F=R×C
B、統計出系統平均的吞吐量
F=VU * R / T R×C = VU * R / T
C、統計出平均每個用戶發出的請求數量
R=u*C*T/VU
D、根據公式計算出思考時間
TS=T/R
針對一個web性能測試常見的指標
1、注冊用戶數
? ? ? ? 注冊用戶數指軟件中已經注冊的用戶,這些用戶是系統的潛在用戶,隨時都有可能上線。這個指標的意義在于讓測試工程師了解系統數據中的數據總量和系統最大可能有多少用戶同時在線。
2、在線用戶數
? ? ? ? ? 在線用戶數是指某一時刻已經登錄系統的用戶數量。在線用戶數只是統計了登錄系統的用戶數量,這些用戶不一定都對系統進行操作,對服務器產生壓力。
3、并發用戶數
? ? ? ? 不同于在線用戶數,并發用戶數是指某一時刻向服務器發送請求的在線用戶數,他是衡量服務器并發容量和同步協調能力的重要指標,從這個含義上講,我們可能會如下兩種理解:
? ?同一時刻向服務器發送相同或者不同請求的用戶數,也就是說,既可以包括對某一業務的相同請求,也可以包括對多個業務的不同請求
? 同一時刻向服務器發送相同請求的用戶數,僅限于某一業務的相同請求
4、請求的相應時間
? ? ? ? ? 相應時間就是用戶感受軟件系統為其服務所消耗的時間。對于web系統,請求的相應時間指的是從客戶端發起的一個請求時間,到客戶端接收到從服務器返回的相應結束。
(1)在3秒之內,頁面給予用戶相應所有顯示,可認為是very nice(非常好)
(2)在3-5秒之內,頁面給予用戶相應所有顯示,可認為是Not bad(還不錯)
(3)在5-10秒之內,頁面給予用戶相應所有提示,可認為是accept reluctantly(勉強接受)
(4)超過10秒后就有點讓人不耐煩, 用戶可能會對網頁說Bye Bye(再見)
5、事務的相應時間
? ? ? ?事務可能由一系列請求組成,事務的響應時間主要是針對用戶而言,屬于宏觀上的概念,是為了向用戶說明業務響應時間而提出的.例如:跨行取款事務的響應時間就是由一系列的請求組成的.事務響應時間是直接衡量系統性能的參數.
6、每秒點擊數
? ? ? ? ?每秒點擊數是指每秒鐘像web服務器提交的HTTP請求數,它是衡量服務器處理能力的一個常用指標。需要注意的是,這里的相應時間并非鼠標的一次單擊操作,因為在一次單擊操作中,客戶端可能向服務器發出多個HTTP請求,切勿混淆。
7、吞吐率
? ? ? ? ?吞吐率通常指單位時間內從服務器返回的字節數,也可以單位時間內客戶提交的請求數。吞吐率是大型web系統衡量自身負載能力的一個重要指標,一般來說,吞吐率越大,單位時間內處理的數據就越多,系統的負載能力也強。吞吐率yu很多因素有關,服務器的硬件配置,網絡的寬帶及拓撲結構,軟件的技術架構等。
8、業務成功率
? ? ? ? ?指多用戶對某一業務發起操作的成功率。例如,測試網絡訂票系統的并發處理性能,在早上8:00——8:30半小時的高峰里,要求能支持10萬比訂票業務,其中成功率不少于98%。也就是說系統允許200筆訂票業務超時或者因其他原因導致未能訂票成功。
9、TPS
? ? ? ? ? TPS表示服務器每秒處理的事務數,他是衡量系統處理能力的一個非常重要的指標,在性能測試中,通過檢測不同用戶的TPS,可以估算出系統處理能力的拐點。
10、資源利用率
????????指的是對不同的系統資源的使用程度,例如服務器的CPU利用率,磁盤利用率等.資源利用率是分析系統性能指標進而改善性能的主要依據,因此是WEB性能測試工作的重點.
????????資源利用率主要針對WEB服務器、操作系統、數據庫務器,網絡等,是測試和分析瓶頸的主要參考.在WEB性能測試中,更根據需要采集相應的參數進行分析。
Web服務器指標
指標 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??說明
Requests Per Second(Avg Rps) ? ? ? ? ? ? ? ? ? ?平均每秒鐘響應次數=總請求時間 / 秒數
Avg time to last byte per terstion (mstes) ? ? ?平均每秒業務腳本的迭代次數 ,有人會把上面那個混淆
Successful Rounds ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?成功的請求
Failed Requests ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 失敗的請求
Successful Hits ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 成功的點擊次數
Failed Hits ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 失敗的點擊次數
Hits Per Second ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每秒點擊次數
Successful Hits Per Second ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每秒成功的點擊次數
Failed Hits Per Second ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每秒失敗的點擊次數
Attempted Connections ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 嘗試鏈接數
數據庫服務器性能指標
指標 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?說明
User 0 Connections ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用戶連接數,也就是數據庫的連接數量
Number of deadlocks ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?數據庫死鎖
Butter Cache hit ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數據庫Cache的命中情況
系統的瓶頸定義
性能項 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??命令 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指標
CPU限制 ? ? ? ? ? ? ? ? ? ? ? ? ? ? vmstat ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當%user+%sys超過80%時
磁盤I/O限制 ? ? ? ? ? ? ? ? ? ? ? ?Vmstat ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當%iowait超過40%(AIX4.3.3或更高版本)時
應用磁盤限制 ? ? ? ? ? ? ? ? ? ? Iostat ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當%tm_act超過70%時
虛存空間少 ? ? ? ? ? ? ? ? ? ? ? ? Lsps,-a ? ? ? ? ? ? ? ? ? ? ? ? ?當分頁空間的活動率超過70%時
換頁限制 ? ? ? ? ? ? ? ? ? ? ? ? ? ?Iostat, stat ? ? ? ? ? ? ? ? ? ? ? ? 虛存邏輯卷%tm_act超過I/O(iostat)的30%,激活的虛存率超過CPU數量(vmstat)的10倍時
系統失效 ? ? ? ? ? ? ? ? ? ? ? ? ? ?Vmstat, sar ? ? ? ? ? ? ? ? ? ? ? 頁交換增大、CPU等待并運行隊列
穩定系統的資源狀態
性能項 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??資源 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??評價
CPU占用率? ? ? ? ? ? ? ? ? ? ?70%?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??好
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 85%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 差
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 90%+?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 很差
磁盤I/0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <30%?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??好
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<40%?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??差
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<50%+?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 很差
網絡 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <30% 帶寬 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 好
運行隊列 ? ? ? ? ? ? ? ? ? ? ? ? ? <2*CPU數量 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?好
內存 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?沒有頁交換? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?好
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????每個CPU每秒10個頁交換 ? ? ? ? ? ? 差
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?更多的頁交換 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?很差
通俗理解:
日訪問量
常用頁面最大并發數
同時在線人數
訪問相應時間
網站測試標準
性能測試通過標準?
1、所有計劃的測試已經完成。?
2、所有計劃收集的性能數據已經獲得。?
3、所有性能瓶頸得到改善并達到設計要求。?
性能測試用例(可能寫的不太好,大概是這個意思)