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