軟件性能測試的基本概念和計(jì)算公式
一坏瞄、軟件性能的關(guān)注點(diǎn)
對一個(gè)軟件做性能測試時(shí)需要關(guān)注那些性能呢猜旬?
我們想想在軟件設(shè)計(jì)脆栋、部署、使用洒擦、維護(hù)中一共有哪些角色的參與,然后再考慮這些角色各自關(guān)注的性能點(diǎn)是什么怕膛,作為一個(gè)軟件性能測試工程師熟嫩,我們又該關(guān)注什么?
首先褐捻,開發(fā)軟件的目的是為了讓用戶使用掸茅,我們先站在用戶的角度分析一下,用戶需要關(guān)注哪些性能柠逞。
對于用戶來說昧狮,當(dāng)點(diǎn)擊一個(gè)按鈕、鏈接或發(fā)出一條指令開始板壮,到系統(tǒng)把結(jié)果已用戶感知的形式展現(xiàn)出來為止逗鸣,這個(gè)過程所消耗的時(shí)間是用戶對這個(gè)軟件性能的直觀印象。也就是我們所說的響應(yīng)時(shí)間,當(dāng)相應(yīng)時(shí)間較小時(shí)撒璧,用戶體驗(yàn)是很好的透葛,當(dāng)然用戶體驗(yàn)的響應(yīng)時(shí)間包括個(gè)人主觀因素和客觀響應(yīng)時(shí)間,在設(shè)計(jì)軟件時(shí)卿樱,我們就需要考慮到如何更好地結(jié)合這兩部分達(dá)到用戶最佳的體驗(yàn)僚害。如:用戶在大數(shù)據(jù)量查詢時(shí),我們可以將先提取出來的數(shù)據(jù)展示給用戶繁调,在用戶看的過程中繼續(xù)進(jìn)行數(shù)據(jù)檢索萨蚕,這時(shí)用戶并不知道我們后臺在做什么。
用戶關(guān)注的是用戶操作的相應(yīng)時(shí)間蹄胰。
其次门岔,我們站在管理員的角度考慮需要關(guān)注的性能點(diǎn)。
1烤送、 相應(yīng)時(shí)間
2寒随、 服務(wù)器資源使用情況是否合理
3、 應(yīng)用服務(wù)器和數(shù)據(jù)庫資源使用是否合理
4帮坚、 系統(tǒng)能否實(shí)現(xiàn)擴(kuò)展
5妻往、 系統(tǒng)最多支持多少用戶訪問、系統(tǒng)最大業(yè)務(wù)處理量是多少
6试和、 系統(tǒng)性能可能存在的瓶頸在哪里
7讯泣、 更換那些設(shè)備可以提高性能
8、 系統(tǒng)能否支持7×24小時(shí)的業(yè)務(wù)訪問
再次阅悍,站在開發(fā)(設(shè)計(jì))人員角度去考慮好渠。
1、 架構(gòu)設(shè)計(jì)是否合理
2节视、 數(shù)據(jù)庫設(shè)計(jì)是否合理
3拳锚、 代碼是否存在性能方面的問題
4、 系統(tǒng)中是否有不合理的內(nèi)存使用方式
5寻行、 系統(tǒng)中是否存在不合理的線程同步方式
6霍掺、 系統(tǒng)中是否存在不合理的資源競爭
那么站在性能測試工程師的角度,我們要關(guān)注什么呢拌蜘?
一句話杆烁,我們要關(guān)注以上所有的性能點(diǎn)。
二简卧、軟件性能的幾個(gè)主要術(shù)語
1兔魂、響應(yīng)時(shí)間:對請求作出響應(yīng)所需要的時(shí)間
網(wǎng)絡(luò)傳輸時(shí)間:N1+N2+N3+N4
應(yīng)用服務(wù)器處理時(shí)間:A1+A3
數(shù)據(jù)庫服務(wù)器處理時(shí)間:A2
響應(yīng)時(shí)間=N1+N2+N3+N4+A1+A3+A2
2、并發(fā)用戶數(shù)的計(jì)算公式
系統(tǒng)用戶數(shù):系統(tǒng)額定的用戶數(shù)量举娩,如一個(gè)OA系統(tǒng)析校,可能使用該系統(tǒng)的用戶總數(shù)是5000個(gè)构罗,那么這個(gè)數(shù)量,就是系統(tǒng)用戶數(shù)勺良。
同時(shí)在線用戶數(shù):在一定的時(shí)間范圍內(nèi)绰播,最大的同時(shí)在線用戶數(shù)量。
同時(shí)在線用戶數(shù)=每秒請求數(shù)RPS(吞吐量)+并發(fā)連接數(shù)+平均用戶思考時(shí)間
平均并發(fā)用戶數(shù)的計(jì)算:C=nL / T
其中C是平均的并發(fā)用戶數(shù)尚困,n是平均每天訪問用戶數(shù)(login session)蠢箩,L是一天內(nèi)用戶從登錄到退出的平均時(shí)間(login session的平均時(shí)間),T是考察時(shí)間長度(一天內(nèi)多長時(shí)間有用戶使用系統(tǒng))
并發(fā)用戶數(shù)峰值計(jì)算:C^約等于C + 3*根號C
其中C^是并發(fā)用戶峰值事甜,C是平均并發(fā)用戶數(shù)谬泌,該公式遵循泊松分布理論。
3逻谦、吞吐量的計(jì)算公式
指單位時(shí)間內(nèi)系統(tǒng)處理用戶的請求數(shù)
從業(yè)務(wù)角度看掌实,吞吐量可以用:請求數(shù)/秒、頁面數(shù)/秒邦马、人數(shù)/天或處理業(yè)務(wù)數(shù)/小時(shí)等單位來衡量
從網(wǎng)絡(luò)角度看贱鼻,吞吐量可以用:字節(jié)/秒來衡量
對于交互式應(yīng)用來說,吞吐量指標(biāo)反映的是服務(wù)器承受的壓力滋将,他能夠說明系統(tǒng)的負(fù)載能力
以不同方式表達(dá)的吞吐量可以說明不同層次的問題邻悬,例如,以字節(jié)數(shù)/秒方式可以表示數(shù)要受網(wǎng)絡(luò)基礎(chǔ)設(shè)施随闽、服務(wù)器架構(gòu)父丰、應(yīng)用服務(wù)器制約等方面的瓶頸;已請求數(shù)/秒的方式表示主要是受應(yīng)用服務(wù)器和應(yīng)用代碼的制約體現(xiàn)出的瓶頸掘宪。
當(dāng)沒有遇到性能瓶頸的時(shí)候蛾扇,吞吐量與虛擬用戶數(shù)之間存在一定的聯(lián)系,可以采用以下公式計(jì)算:F=VU * R /
其中F為吞吐量魏滚,VU表示虛擬用戶個(gè)數(shù)镀首,R表示每個(gè)虛擬用戶發(fā)出的請求數(shù),T表示性能測試所用的時(shí)間
4栏赴、性能計(jì)數(shù)器
是描述服務(wù)器或操作系統(tǒng)性能的一些數(shù)據(jù)指標(biāo)蘑斧,如使用內(nèi)存數(shù)、進(jìn)程時(shí)間须眷,在性能測試中發(fā)揮著“監(jiān)控和分析”的作用,尤其是在分析統(tǒng)統(tǒng)可擴(kuò)展性沟突、進(jìn)行新能瓶頸定位時(shí)有著非常關(guān)鍵的作用花颗。
資源利用率:指系統(tǒng)各種資源的使用情況,如cpu占用率為68%惠拭,內(nèi)存占用率為55%扩劝,一般使用“資源實(shí)際使用/總的資源可用量”形成資源利用率庸论。
5、思考時(shí)間的計(jì)算公式
Think Time棒呛,從業(yè)務(wù)角度來看聂示,這個(gè)時(shí)間指用戶進(jìn)行操作時(shí)每個(gè)請求之間的時(shí)間間隔,而在做新能測試時(shí)簇秒,為了模擬這樣的時(shí)間間隔鱼喉,引入了思考時(shí)間這個(gè)概念,來更加真實(shí)的模擬用戶的操作趋观。
在吞吐量這個(gè)公式中F=VU * R / T說明吞吐量F是VU數(shù)量扛禽、每個(gè)用戶發(fā)出的請求數(shù)R和時(shí)間T的函數(shù)皱坛,而其中的R又可以用時(shí)間T和用戶思考時(shí)間TS來計(jì)算:R = T / TS
下面給出一個(gè)計(jì)算思考時(shí)間的一般步驟:
A、首先計(jì)算出系統(tǒng)的并發(fā)用戶數(shù)
C=nL / T F=R×C
B剩辟、統(tǒng)計(jì)出系統(tǒng)平均的吞吐量
F=VU * R / T R×C = VU * R / T
C、統(tǒng)計(jì)出平均每個(gè)用戶發(fā)出的請求數(shù)量
R=u*C*T/VU
D贩猎、根據(jù)公式計(jì)算出思考時(shí)間
TS=T/R
針對一個(gè)web性能測試常見的指標(biāo)
1、注冊用戶數(shù)
? ? ? ? 注冊用戶數(shù)指軟件中已經(jīng)注冊的用戶敏弃,這些用戶是系統(tǒng)的潛在用戶,隨時(shí)都有可能上線麦到。這個(gè)指標(biāo)的意義在于讓測試工程師了解系統(tǒng)數(shù)據(jù)中的數(shù)據(jù)總量和系統(tǒng)最大可能有多少用戶同時(shí)在線。
2欠肾、在線用戶數(shù)
? ? ? ? ? 在線用戶數(shù)是指某一時(shí)刻已經(jīng)登錄系統(tǒng)的用戶數(shù)量瓶颠。在線用戶數(shù)只是統(tǒng)計(jì)了登錄系統(tǒng)的用戶數(shù)量,這些用戶不一定都對系統(tǒng)進(jìn)行操作刺桃,對服務(wù)器產(chǎn)生壓力粹淋。
3、并發(fā)用戶數(shù)
? ? ? ? 不同于在線用戶數(shù)瑟慈,并發(fā)用戶數(shù)是指某一時(shí)刻向服務(wù)器發(fā)送請求的在線用戶數(shù)桃移,他是衡量服務(wù)器并發(fā)容量和同步協(xié)調(diào)能力的重要指標(biāo),從這個(gè)含義上講葛碧,我們可能會如下兩種理解:
? ?同一時(shí)刻向服務(wù)器發(fā)送相同或者不同請求的用戶數(shù)借杰,也就是說,既可以包括對某一業(yè)務(wù)的相同請求进泼,也可以包括對多個(gè)業(yè)務(wù)的不同請求
? 同一時(shí)刻向服務(wù)器發(fā)送相同請求的用戶數(shù)蔗衡,僅限于某一業(yè)務(wù)的相同請求
4纤虽、請求的相應(yīng)時(shí)間
? ? ? ? ? 相應(yīng)時(shí)間就是用戶感受軟件系統(tǒng)為其服務(wù)所消耗的時(shí)間。對于web系統(tǒng)绞惦,請求的相應(yīng)時(shí)間指的是從客戶端發(fā)起的一個(gè)請求時(shí)間逼纸,到客戶端接收到從服務(wù)器返回的相應(yīng)結(jié)束。
(1)在3秒之內(nèi)济蝉,頁面給予用戶相應(yīng)所有顯示杰刽,可認(rèn)為是very nice(非常好)
(2)在3-5秒之內(nèi),頁面給予用戶相應(yīng)所有顯示堆生,可認(rèn)為是Not bad(還不錯)
(3)在5-10秒之內(nèi)专缠,頁面給予用戶相應(yīng)所有提示,可認(rèn)為是accept reluctantly(勉強(qiáng)接受)
(4)超過10秒后就有點(diǎn)讓人不耐煩淑仆, 用戶可能會對網(wǎng)頁說Bye Bye(再見)
5涝婉、事務(wù)的相應(yīng)時(shí)間
? ? ? ?事務(wù)可能由一系列請求組成,事務(wù)的響應(yīng)時(shí)間主要是針對用戶而言,屬于宏觀上的概念,是為了向用戶說明業(yè)務(wù)響應(yīng)時(shí)間而提出的.例如:跨行取款事務(wù)的響應(yīng)時(shí)間就是由一系列的請求組成的.事務(wù)響應(yīng)時(shí)間是直接衡量系統(tǒng)性能的參數(shù).
6蔗怠、每秒點(diǎn)擊數(shù)
? ? ? ? ?每秒點(diǎn)擊數(shù)是指每秒鐘像web服務(wù)器提交的HTTP請求數(shù)墩弯,它是衡量服務(wù)器處理能力的一個(gè)常用指標(biāo)。需要注意的是寞射,這里的相應(yīng)時(shí)間并非鼠標(biāo)的一次單擊操作渔工,因?yàn)樵谝淮螁螕舨僮髦校蛻舳丝赡芟蚍?wù)器發(fā)出多個(gè)HTTP請求桥温,切勿混淆引矩。
7侵浸、吞吐率
? ? ? ? ?吞吐率通常指單位時(shí)間內(nèi)從服務(wù)器返回的字節(jié)數(shù),也可以單位時(shí)間內(nèi)客戶提交的請求數(shù)区端。吞吐率是大型web系統(tǒng)衡量自身負(fù)載能力的一個(gè)重要指標(biāo)织盼,一般來說沥邻,吞吐率越大谋国,單位時(shí)間內(nèi)處理的數(shù)據(jù)就越多芦瘾,系統(tǒng)的負(fù)載能力也強(qiáng)近弟。吞吐率yu很多因素有關(guān)祷愉,服務(wù)器的硬件配置二鳄,網(wǎng)絡(luò)的寬帶及拓?fù)浣Y(jié)構(gòu)订讼,軟件的技術(shù)架構(gòu)等扇苞。
8鳖敷、業(yè)務(wù)成功率
? ? ? ? ?指多用戶對某一業(yè)務(wù)發(fā)起操作的成功率定踱。例如崖媚,測試網(wǎng)絡(luò)訂票系統(tǒng)的并發(fā)處理性能至扰,在早上8:00——8:30半小時(shí)的高峰里敢课,要求能支持10萬比訂票業(yè)務(wù)直秆,其中成功率不少于98%。也就是說系統(tǒng)允許200筆訂票業(yè)務(wù)超時(shí)或者因其他原因?qū)е挛茨苡喥背晒Α?/p>
9瑰剃、TPS
? ? ? ? ? TPS表示服務(wù)器每秒處理的事務(wù)數(shù)晌姚,他是衡量系統(tǒng)處理能力的一個(gè)非常重要的指標(biāo)挥唠,在性能測試中宝磨,通過檢測不同用戶的TPS,可以估算出系統(tǒng)處理能力的拐點(diǎn)唤锉。
10窿祥、資源利用率
????????指的是對不同的系統(tǒng)資源的使用程度,例如服務(wù)器的CPU利用率,磁盤利用率等.資源利用率是分析系統(tǒng)性能指標(biāo)進(jìn)而改善性能的主要依據(jù),因此是WEB性能測試工作的重點(diǎn).
????????資源利用率主要針對WEB服務(wù)器壁肋、操作系統(tǒng)浸遗、數(shù)據(jù)庫務(wù)器,網(wǎng)絡(luò)等,是測試和分析瓶頸的主要參考.在WEB性能測試中,更根據(jù)需要采集相應(yīng)的參數(shù)進(jìn)行分析跛锌。
Web服務(wù)器指標(biāo)
指標(biāo) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??說明
Requests Per Second(Avg Rps) ? ? ? ? ? ? ? ? ? ?平均每秒鐘響應(yīng)次數(shù)=總請求時(shí)間 / 秒數(shù)
Avg time to last byte per terstion (mstes) ? ? ?平均每秒業(yè)務(wù)腳本的迭代次數(shù) ,有人會把上面那個(gè)混淆
Successful Rounds ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?成功的請求
Failed Requests ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 失敗的請求
Successful Hits ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 成功的點(diǎn)擊次數(shù)
Failed Hits ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 失敗的點(diǎn)擊次數(shù)
Hits Per Second ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每秒點(diǎn)擊次數(shù)
Successful Hits Per Second ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每秒成功的點(diǎn)擊次數(shù)
Failed Hits Per Second ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 每秒失敗的點(diǎn)擊次數(shù)
Attempted Connections ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 嘗試鏈接數(shù)
數(shù)據(jù)庫服務(wù)器性能指標(biāo)
指標(biāo) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?說明
User 0 Connections ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 用戶連接數(shù)菠赚,也就是數(shù)據(jù)庫的連接數(shù)量
Number of deadlocks ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?數(shù)據(jù)庫死鎖
Butter Cache hit ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)庫Cache的命中情況
系統(tǒng)的瓶頸定義
性能項(xiàng) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??命令 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?指標(biāo)
CPU限制 ? ? ? ? ? ? ? ? ? ? ? ? ? ? vmstat ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當(dāng)%user+%sys超過80%時(shí)
磁盤I/O限制 ? ? ? ? ? ? ? ? ? ? ? ?Vmstat ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?當(dāng)%iowait超過40%(AIX4.3.3或更高版本)時(shí)
應(yīng)用磁盤限制 ? ? ? ? ? ? ? ? ? ? Iostat ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 當(dāng)%tm_act超過70%時(shí)
虛存空間少 ? ? ? ? ? ? ? ? ? ? ? ? Lsps衡查,-a ? ? ? ? ? ? ? ? ? ? ? ? ?當(dāng)分頁空間的活動率超過70%時(shí)
換頁限制 ? ? ? ? ? ? ? ? ? ? ? ? ? ?Iostat, stat ? ? ? ? ? ? ? ? ? ? ? ? 虛存邏輯卷%tm_act超過I/O(iostat)的30%拌牲,激活的虛存率超過CPU數(shù)量(vmstat)的10倍時(shí)
系統(tǒng)失效 ? ? ? ? ? ? ? ? ? ? ? ? ? ?Vmstat, sar ? ? ? ? ? ? ? ? ? ? ? 頁交換增大塌忽、CPU等待并運(yùn)行隊(duì)列
穩(wěn)定系統(tǒng)的資源狀態(tài)
性能項(xiàng) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??資源 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??評價(jià)
CPU占用率? ? ? ? ? ? ? ? ? ? ?70%?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??好
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 85%? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 差
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 90%+?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 很差
磁盤I/0 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <30%?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??好
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<40%?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??差
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?<50%+?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 很差
網(wǎng)絡(luò) ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? <30% 帶寬 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 好
運(yùn)行隊(duì)列 ? ? ? ? ? ? ? ? ? ? ? ? ? <2*CPU數(shù)量 ?? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?好
內(nèi)存 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?沒有頁交換? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?好
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?????????????每個(gè)CPU每秒10個(gè)頁交換 ? ? ? ? ? ? 差
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?更多的頁交換 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?很差
通俗理解:
日訪問量
常用頁面最大并發(fā)數(shù)
同時(shí)在線人數(shù)
訪問相應(yīng)時(shí)間
網(wǎng)站測試標(biāo)準(zhǔn)
性能測試通過標(biāo)準(zhǔn)?
1、所有計(jì)劃的測試已經(jīng)完成棉圈。?
2迄损、所有計(jì)劃收集的性能數(shù)據(jù)已經(jīng)獲得。?
3垮抗、所有性能瓶頸得到改善并達(dá)到設(shè)計(jì)要求冒版。?
性能測試用例(可能寫的不太好,大概是這個(gè)意思)