性能測(cè)試
1.0 為什么要進(jìn)行性能測(cè)試郊供?
評(píng)估當(dāng)前系統(tǒng)的能力
尋找性能瓶頸咪啡,優(yōu)化系統(tǒng)性能
評(píng)估軟件是否滿足未來(lái)的需要
招聘需要
1.1 什么是性能
時(shí)間:系統(tǒng)處理用戶請(qǐng)求的響應(yīng)時(shí)間
資源:系統(tǒng)運(yùn)行過(guò)程中碾局,系統(tǒng)資源的消耗情況
1.2. 性能測(cè)試是什么
1.2.1 廣義定義
基于協(xié)議模擬用戶發(fā)出請(qǐng)求阅茶,對(duì)服務(wù)器形成一定負(fù)載稀火,來(lái)測(cè)試服務(wù)器的性能指標(biāo)是否滿足要求性能指標(biāo)關(guān)注點(diǎn):時(shí)間性能亭敢、空間性能性能測(cè)試與頁(yè)面無(wú)關(guān)
1.2.1 狹義定義
指通過(guò)自動(dòng)化的測(cè)試工具模擬多種正常畏吓、峰值以及異常負(fù)載條件來(lái)對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測(cè)試墨状。
1.3 功能和性能測(cè)試
不同
功能測(cè)試驗(yàn)證系統(tǒng)的功能需求規(guī)格,聚焦功能菲饼。
性能測(cè)試驗(yàn)證系統(tǒng)的業(yè)務(wù)性需求場(chǎng)景肾砂,聚焦時(shí)間和資源。
關(guān)系
一般項(xiàng)目中宏悦,先功能測(cè)試通過(guò)后镐确,后進(jìn)行性能測(cè)試。
1.4 性能測(cè)試的分類
1.4.1 基準(zhǔn)測(cè)試
狹義:?jiǎn)斡脩魷y(cè)試
廣義:建立基準(zhǔn)線饼煞,當(dāng)系統(tǒng)軟硬件環(huán)境發(fā)生變化之后再進(jìn)行一次基準(zhǔn)測(cè)試以確定變化對(duì)性能的影響源葫。
1.4.2 負(fù)載測(cè)試
概念
通過(guò)逐步增加系統(tǒng)負(fù)載,確定在滿足性能指標(biāo)的情況下砖瞧,找出系統(tǒng)所能承受最大負(fù)載量的測(cè)試息堂。
作用
系統(tǒng)最大負(fù)載量達(dá)到用戶要求時(shí),系統(tǒng)才能正式上線使用块促。
案例
電梯行業(yè)規(guī)范:電梯從1樓到5樓的運(yùn)行時(shí)間不超過(guò)24s
1人? ? 20s
7人? ? 20s
13人? 20s? ??
達(dá)到最大負(fù)載16人? 25s
19人? 28s
21人? 斷繩子
注意
通過(guò)負(fù)載測(cè)試荣堰,可以確定系統(tǒng)的最大負(fù)載量和極限負(fù)載量
系統(tǒng)對(duì)外宣稱的最大負(fù)載量
負(fù)載測(cè)試的時(shí)間一般為1-2小時(shí)
1.4.3 穩(wěn)定性測(cè)試
概念:在服務(wù)器穩(wěn)定運(yùn)行(用戶正常業(yè)務(wù)負(fù)載下)的情況進(jìn)行長(zhǎng)時(shí)間測(cè)試(1天-一周等),并最終保證服務(wù)器能滿足線上業(yè)務(wù)需求褂乍。
系統(tǒng)在用戶需求的業(yè)務(wù)負(fù)載下運(yùn)行達(dá)到規(guī)定的時(shí)間時(shí)持隧,系統(tǒng)才能正式上線使用。
1.4.4 壓力測(cè)試
概念:在強(qiáng)負(fù)載下的測(cè)試逃片,查看系統(tǒng)在峰值下是否功能隱患屡拨、系統(tǒng)是否具有良好的容錯(cuò)能力和可恢復(fù)的能力。
測(cè)試場(chǎng)景
高負(fù)載下的長(zhǎng)時(shí)間穩(wěn)定性壓力測(cè)試 (如:B-C區(qū)間內(nèi)進(jìn)行24/3*24小時(shí)長(zhǎng)時(shí)間測(cè)試)
極限負(fù)載下的破壞性壓力測(cè)試(如:C-D區(qū)間內(nèi)進(jìn)行測(cè)試)
1.4.5 并發(fā)測(cè)試
概念:在極短時(shí)間內(nèi)褥实,發(fā)送多個(gè)請(qǐng)求呀狼,來(lái)驗(yàn)證服務(wù)器對(duì)并發(fā)的處理能力。
應(yīng)用場(chǎng)景
特定的活動(dòng)場(chǎng)景:搶紅包损离、秒殺哥艇、搶購(gòu)等。
與負(fù)載測(cè)試對(duì)比:
負(fù)載測(cè)試:主要目的是測(cè)試高負(fù)載情況下僻澎,對(duì)系統(tǒng)資源的消耗貌踏,是否會(huì)耗盡的問(wèn)題(雙11活動(dòng))
并發(fā)測(cè)試:主要目的是測(cè)試極短時(shí)間內(nèi),并發(fā)請(qǐng)求時(shí)窟勃,系統(tǒng)資源爭(zhēng)搶的問(wèn)題(搶紅包祖乳、秒殺)
1.5 性能測(cè)試的指標(biāo)
1.5.1 響應(yīng)時(shí)間
指從客戶端發(fā)起請(qǐng)求開(kāi)始,到客戶端接收到結(jié)果的總時(shí)間
包括:服務(wù)器處理時(shí)間 + 網(wǎng)絡(luò)傳輸時(shí)間
1.5.2 并發(fā)用戶數(shù)
某一時(shí)刻同時(shí)向服務(wù)器發(fā)送請(qǐng)求的用戶數(shù)
1.5.3 吞吐量(Throughout)
1.概念:?jiǎn)挝粫r(shí)間內(nèi)處理客戶端的請(qǐng)求數(shù)量秉氧,直接體現(xiàn)軟件系統(tǒng)能能承載能力眷昆。
吞吐量單位分類
1.5.4 QPS
QPS(Query Per Second)每秒查詢數(shù),即控制服務(wù)器每秒處理的指定請(qǐng)求的數(shù)量。
1.5.5 TPS
TPS(Transaction Per Second)每秒事務(wù)數(shù)亚斋,即控制服務(wù)器每秒處理事務(wù)請(qǐng)求的數(shù)量作媚。
如:支付請(qǐng)求事務(wù)=查詢用戶余額請(qǐng)求+校驗(yàn)支付安全請(qǐng)求+發(fā)送支付請(qǐng)求
每秒處理查詢用戶余額15請(qǐng)求,每秒處理校驗(yàn)支付安全15個(gè)請(qǐng)求帅刊,每秒處理發(fā)送支付15個(gè)請(qǐng)求
支付tsp為15
1.5.6 點(diǎn)擊數(shù)
所有的頁(yè)面元素(如:圖片纸泡、鏈接、框架等)的請(qǐng)求總數(shù)量
注意:
點(diǎn)擊數(shù)是請(qǐng)求數(shù)厚掷,不是頁(yè)面上的一次點(diǎn)擊
1.5.7 錯(cuò)誤率
指系統(tǒng)在負(fù)載情況下弟灼,失敗業(yè)務(wù)的概率
注意:
錯(cuò)誤率是性能指標(biāo),是高負(fù)載下的失敗業(yè)務(wù)的概率
-隨機(jī)bug是功能bug冒黑,先解決隨機(jī)bug才能進(jìn)行性能測(cè)試
1.5.8 資源利用率
概念:系統(tǒng)各種資源的使用情況田绑,率=資源使用量/總資源可用量x100%
常見(jiàn)資源指標(biāo)
CPU使用率:不高于75%-85%
內(nèi)存大小使用率:不高于80%
磁盤IO(速率):不高于90%
網(wǎng)路(速率):不高于80%
1.6 性能測(cè)試工具
使用Jmeter測(cè)試快速入門
3.1. 線程組是什么
進(jìn)程: 一個(gè)正在執(zhí)行的程序?qū)?yīng)一個(gè)進(jìn)程線程: 一個(gè)進(jìn)程有多個(gè)執(zhí)行線程線程組:? 按照線程性質(zhì)對(duì)線程分組。查看任務(wù)管理器(愛(ài)奇藝有多個(gè))三者關(guān)系: 一個(gè)進(jìn)程有多個(gè)線程組抡爹,一個(gè)線程組有多個(gè)線程
測(cè)試計(jì)劃—線程組—線程組屬性中的線程數(shù)
并發(fā)執(zhí)行:多個(gè)線程同時(shí)執(zhí)行掩驱,特點(diǎn):執(zhí)行結(jié)束的順序與開(kāi)始的順序不一致
順序執(zhí)行:按照線程的啟動(dòng)順序挨個(gè)執(zhí)行
默認(rèn)情況下,線程組中的線程是并發(fā)執(zhí)行
每一個(gè)線程都要執(zhí)行組內(nèi)的http請(qǐng)求
設(shè)置線程組順序執(zhí)行:勾選測(cè)試計(jì)劃中的(獨(dú)立運(yùn)行每個(gè)線程組)
線程組用來(lái)模擬用戶的并發(fā)訪問(wèn)
3.1.1.? 創(chuàng)建線程組
3.1.2.? 線程組主要包含三個(gè)參數(shù):
線程數(shù)冬竟、準(zhǔn)備時(shí)長(zhǎng)(Ramp-Up Period(in seconds))欧穴、循環(huán)次數(shù)。
3.1.3.? 線程數(shù):
虛擬用戶數(shù)泵殴。一個(gè)虛擬用戶占用一個(gè)線程涮帘。設(shè)置多少虛擬用戶數(shù)在這里也就是設(shè)置多少個(gè)線程數(shù)。
3.1.4.? 準(zhǔn)備時(shí)長(zhǎng)(秒):
設(shè)置的虛擬用戶數(shù)需要多長(zhǎng)時(shí)間全部啟動(dòng)笑诅。如果線程數(shù)為20 调缨,準(zhǔn)備時(shí)長(zhǎng)為10 ,那么需要10秒鐘啟動(dòng)20個(gè)線程吆你。也就是每秒鐘啟動(dòng)2個(gè)線程弦叶。
3.1.5. 循環(huán)次數(shù):
每個(gè)線程發(fā)送請(qǐng)求的次數(shù)。如果線程數(shù)為20 妇多,循環(huán)次數(shù)為100 伤哺,那么每個(gè)線程發(fā)送100次請(qǐng)求≌咦妫總請(qǐng)求數(shù)為20*100=2000 立莉。如果勾選了“永遠(yuǎn)”,那么所有線程會(huì)一直發(fā)送請(qǐng)求七问,一直到選擇停止運(yùn)行腳本桃序。
3.1.6. 調(diào)度器
設(shè)置線程組啟動(dòng)的開(kāi)始時(shí)間和結(jié)束時(shí)間(配置調(diào)度器時(shí),需要勾選循環(huán)次數(shù)為永遠(yuǎn))
3.1.7. 持續(xù)時(shí)間(秒)
測(cè)試持續(xù)時(shí)間烂瘫,會(huì)覆蓋結(jié)束時(shí)間
3.1.8. 啟動(dòng)延遲(秒)
測(cè)試延遲啟動(dòng)時(shí)間,會(huì)覆蓋啟動(dòng)時(shí)間
3.1.9. 啟動(dòng)時(shí)間
測(cè)試啟動(dòng)時(shí)間,啟動(dòng)延遲會(huì)覆蓋它挽拂。當(dāng)啟動(dòng)時(shí)間已過(guò)媳握,手動(dòng)只需測(cè)試時(shí)當(dāng)前時(shí)間也會(huì)覆蓋它焦辅。
3.1.10.? 結(jié)束時(shí)間
測(cè)試結(jié)束時(shí)間,持續(xù)時(shí)間會(huì)覆蓋它柠衅。
3.2. 創(chuàng)建http請(qǐng)求
見(jiàn)得最多,所以我們著重講解:
3.3. 指定請(qǐng)求域名籍琳,請(qǐng)求路徑
一個(gè)HTTP請(qǐng)求有著許多的配置參數(shù)菲宴,下面將詳細(xì)介紹:
名稱:本屬性用于標(biāo)識(shí)一個(gè)取樣器,建議使用一個(gè)有意義的名稱趋急。
注釋:對(duì)于測(cè)試沒(méi)有任何作用喝峦,僅用戶記錄用戶可讀的注釋信息。
服務(wù)器名稱或IP :HTTP請(qǐng)求發(fā)送的目標(biāo)服務(wù)器名稱或IP地址呜达。
端口號(hào):目標(biāo)服務(wù)器的端口號(hào)谣蠢。
方法:發(fā)送HTTP請(qǐng)求的方法,可用方法包括GET查近、POST眉踱、HEAD、PUT霜威、OPTIONS谈喳、TRACE、DELETE等戈泼。
Content encoding :內(nèi)容的編碼方式婿禽,默認(rèn)值為iso8859
路徑:目標(biāo)URL路徑(不包括服務(wù)器地址和端口)
點(diǎn)擊run測(cè)試,很麻煩矮冬,我們使用postman測(cè)試更簡(jiǎn)單谈宛,使用postman操作。
可以使用剛才的接口文檔中的胎署,聚合接口中演示一個(gè)吆录。
3.4. 設(shè)置對(duì)應(yīng)的查看內(nèi)容
注意:如果監(jiān)聽(tīng)器中有jp@gc開(kāi)頭的,都是第三方插件
3.5. 查看表格信息
Sample:每個(gè)請(qǐng)求的序號(hào)
Start Time:每個(gè)請(qǐng)求開(kāi)始時(shí)間
Thread Name:每個(gè)線程的名稱
Label:Http請(qǐng)求名稱
Sample Time:每個(gè)請(qǐng)求所花時(shí)間琼牧,單位毫秒
Status:請(qǐng)求狀態(tài)恢筝,如果為勾則表示成功,如果為叉表示失敗巨坊。
Bytes:請(qǐng)求的字節(jié)數(shù)
樣本數(shù)目:也就是上面所說(shuō)的請(qǐng)求個(gè)數(shù)撬槽,成功的情況下等于你設(shè)定的并發(fā)數(shù)目乘以循環(huán)次數(shù)
平均:每個(gè)線程請(qǐng)求的平均時(shí)間
最新樣本:表示服務(wù)器響應(yīng)最后一個(gè)請(qǐng)求的時(shí)間
偏離:服務(wù)器響應(yīng)時(shí)間變化、離散程度測(cè)量值的大小趾撵,或者侄柔,換句話說(shuō)共啃,就是數(shù)據(jù)的分布。
3.6. 查看結(jié)果樹(shù)
請(qǐng)求的數(shù)據(jù)展示(請(qǐng)求頭信息暂题,請(qǐng)求參數(shù),,)
響應(yīng)的數(shù)據(jù)展示(響應(yīng)碼移剪,響應(yīng)頭,,)
通過(guò)察看結(jié)果樹(shù),我們可以看到每個(gè)請(qǐng)求的結(jié)果薪者,其中紅色的是出錯(cuò)的請(qǐng)求纵苛,綠色的為通過(guò)。
Thread Name:線程組名稱Sample Start:啟動(dòng)開(kāi)始時(shí)間Load time:加載時(shí)長(zhǎng)Latency:等待時(shí)長(zhǎng)Sizeinbytes:發(fā)送的數(shù)據(jù)總大小Headers sizeinbytes:發(fā)送數(shù)據(jù)的其余部分大小Sample Count:發(fā)送統(tǒng)計(jì)Error Count:交互錯(cuò)誤統(tǒng)計(jì)Response code:返回碼Response message:返回信息Response headers:返回的頭部信息