與並發用戶數相關的概念還包括“並發用戶數”、“系統用戶數”和“同時在線用戶數”,下面用一個實際的例子來說明它們之間的差別。
假設有一個OA系統,該系統有2000個使用用戶——這就是說,可能使用該OA系統的用戶總數是2000名,這個概念就是“系統用戶數”,該系統有一個“在線統計”功能(系統用一個全局變量記數所有已登錄的用戶),從在線統計功能中可以得到,最高峰時有500人在線(這個500就是一般所說的“同時在線人數”),那么,系統的並發用戶數是多少呢?
根據我們對業務並發用戶數的定義,這500就是整個系統使用時最大的業務並發用戶數。當然,500這個數值只是表明在最高峰時刻有500個用戶登錄了系統,並不表示實際服務器承受的壓力。因為服務器承受的壓力還與具體的用戶訪問模式相關。例如,在這500個“同時使用系統”的用戶中,考察某一個時間點,在這個時間上,假設其中40%的用戶在較有興致地看系統公告(注意:“看”這個動作是不會對服務端產生任何負擔的),20%的用戶在填寫復雜的表格(對用戶填寫的表格來說,只有在“提交”的時刻才會向服務端發送請求,填寫過程是不對服務端構成壓力的),20%部分用戶在發呆(也就是什么也沒有做),剩下的20%用戶在不停地從一個頁面跳轉到另一個頁面——在這種場景下,可以說,只有20%的用戶真正對服務器構成了壓力。因此,從上面的例子中可以看出,服務器實際承受的壓力不只取決於業務並發用戶數,還取決於用戶的業務場景。
在實際的性能測試工作中,測試人員一般比較關心的是業務並發用戶數,也就是從業務角度關注究竟應該設置多少個並發數比較合理,因此,在后面的討論中,也是主要針對業務並發用戶數進行討論,而且,為了方便,直接將業務並發用戶數稱為並發用戶數。
(1) 計算平均的並發用戶數: C = nL/T
(2) 並發用戶數峰值: C’ ≈ C+3根號C
公式(1)中,C是平均的並發用戶數;n是login session的數量;L是login session的平均長度;T指考察的時間段長度。
公式(2)則給出了並發用戶數峰值的計算方式中,其中,C’指並發用戶數的峰值,C就是公式(1)中得到的平均的並發用戶數。該公式的得出是假設用戶的login session產生符合泊松分布而估算得到的。
實例:
假設有一個OA系統,該系統有3000個用戶,平均每天大約有400個用戶要訪問該系統,對一個典型用戶來說,一天之內用戶從登錄到退出該系統的平均時間為4小時,在一天的時間內,用戶只在8小時內使用該系統。
則根據公式(1)和公式(2),可以得到:
C = 400*4/8 = 200
C’≈200+3*根號200 = 242
F=VU * R / T
其中F為吞吐量,VU表示虛擬用戶個數,R表示每個虛擬用戶發出的請求數,T表示性能測試所用的時間
R = T / TS
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
缺陷檢測有效性百分比DDE=TDFT/(TDFC+TDFT)×100%
其中:TDFT=測試過程中發現的全部缺陷(即由測試組發現的),TDFC=客戶發現的全部缺陷(在版本交付后一個標准點開始測量,如,半年以后)
缺陷排除有效性百分比DRE=(TDCT/TDFT)×100%
其中:TDCT=測試中改正的全部缺陷,TDFT=測試過程中發現的全部缺陷
測試用例設計效率百分比TDE=(TDFT/NTC)×100%
其中:TDFT=測試過程中發現的全部缺陷,NTC=運行的測試用例數
以下公式較適用於白盒測試
功能覆蓋率= 至少被執行一次的測試功能點數/ 測試功能點總數 (功能點)
需求覆蓋率= 被驗證到的需求數量 /總的需求數量 (需求)
覆蓋率= 至少被執行一次的測試用例數/ 應執行的測試用例總數 (測試用例)
語句覆蓋率= 至少被執行一次的語句數量/ 有效的程序代碼行數
判定覆蓋率= 判定結果被評價的次數 / 判定結果總數
條件覆蓋率= 條件操作數值至少被評價一次的數量 / 條件操作數值的總數
判定條件覆蓋率= 條件操作數值或判定結果至少被評價一次的數量/(條件操作數值總數+判定結果總數)
上下文判定覆蓋率= 上下文內已執行的判定分支數和/(上下文數*上下文內的判定分支總數)
基於狀態的上下文入口覆蓋率= 累加每個狀態內執行到的方法數/(狀態數*類內方法總數)
分支條件組合覆蓋率= 被評測到的分支條件組合數/分支條件組合數
路徑覆蓋率= 至少被執行一次的路徑數/程序總路徑數