廈門快速建網(wǎng)站騰訊控股第三季度營收1401億
壓測,在很多項目中都有應(yīng)用,是測試小伙伴必備的一項基本技能,剛好最近接手了一個小游戲的壓測任務(wù),一輪壓測下來,頗有收獲,趕緊記錄下來,與大家分享一下,希望大家能少踩坑。
一、壓測的時機
壓測的時機很重要,如果時間選擇不對,可能會做無用功,簡單總結(jié)下5個常見的壓測場景:
1、活動上線前壓測
活動類的項目,常規(guī)操作是在活動上線前,對系統(tǒng)進(jìn)行一個摸高壓測,根據(jù)預(yù)估的流量,對系統(tǒng)配置進(jìn)行優(yōu)化調(diào)整,保證活動期間,系統(tǒng)能正常運行。
本次的小游戲項目,就屬于活動類,在上線前進(jìn)行了壓測。
2、項目上線穩(wěn)定后,對系統(tǒng)評估
系統(tǒng)上線后,隨著用戶量不斷增加,承受的壓力會越來越大,為了讓系統(tǒng)在未來的時間內(nèi)穩(wěn)定運行,需要通過壓測對系統(tǒng)進(jìn)行評估,以調(diào)整配置或優(yōu)化接口,來充分應(yīng)對不斷增長的用戶量。
3、項目研發(fā)后期,對系統(tǒng)的檢驗
在項目后期,由于領(lǐng)導(dǎo)或團(tuán)隊的要求,需要對系統(tǒng)的穩(wěn)定性做校驗,保證系統(tǒng)短時間內(nèi)流量陡增時能穩(wěn)定運行,可以給系統(tǒng)的部署提供參考。
4、線上出現(xiàn)性能問題
有些項目為了搶占市場,節(jié)省時間,完成了基本的功能就上線了,沒有做壓測,當(dāng)用戶突然增加出現(xiàn)線上性能問題后,反過來做壓測,這種情況的風(fēng)險是很大的,不推薦。
5、合作方要求
有些合作方對性能有明確的要求,并且寫進(jìn)了合同,這種情況下就必須去做壓測了。
二、壓測過程
可做壓測的工具很多,業(yè)界用得比較多的是Jmeter,今天我們就以Jmeter為例,分享下做壓測的6個步驟:
1、編寫壓測腳本
1)添加HTTP請求
填寫請求方法,路徑,請求參數(shù)
2)添加HTTP信息頭管理器
有些請求不需要添加,使用默認(rèn)值,有些需要添加,與開發(fā)同學(xué)確認(rèn)即可,注意請求體為Body Data時,大部分情況下需要添加請求頭Content-Type: application/json
3)添加響應(yīng)斷言
4)添加斷言持續(xù)時間
根據(jù)項目情況確定,一般設(shè)置為60s
5)評估是否需要限制吞吐率(添加Constant Throughput Timer)
有時候為了模擬真實的使用場景,盡量保證線程組設(shè)置的并發(fā)數(shù)與聚合報告中的吞吐率一致
6)查看結(jié)果樹
開始壓測時勾選僅錯誤日志,便于查看報錯信息,調(diào)試時需要查看所有日志,保證接口腳本能正常調(diào)通
7)聚合報告
2、準(zhǔn)備壓測服務(wù)器(測試服務(wù)器/線上服務(wù)器)
有些項目需要在測試服務(wù)器上進(jìn)行,而有些則直接在線上服務(wù)器進(jìn)行,例如還未上線的活動類項目,就可直接在線上壓測,不同的服務(wù)器配置,壓出來的結(jié)果是不同的。
3、開始壓測
提前與開發(fā)和產(chǎn)品同學(xué)確認(rèn)并發(fā)量,如果項目有明確的用戶數(shù),比如500用戶,那就直接用500并發(fā)或者稍稍高于500的并發(fā),如果項目沒有明確的并發(fā),可根據(jù)當(dāng)前項目情況酌情施壓。
在壓測過程中,注意觀察服務(wù)器資源消耗情況,例如cpu,內(nèi)存,磁盤,網(wǎng)絡(luò)等以及服務(wù)器Nginx的日志。
觀察服務(wù)器的壓力,如果在測試環(huán)境,可以在服務(wù)器上裝個nmon工具,可實時查看服務(wù)器的資源消耗情況,如果是線上環(huán)境,一般不能直接遠(yuǎn)程服務(wù)器,可以找運維同學(xué)要鏈接,比如這次運維同學(xué)直接給了夜鶯(Nightingale)的鏈接地址,登錄可直接查看服務(wù)器的資源消耗情況。
查看服務(wù)器的Nginx,主要是看是否有報錯信息以及請求是否打到了測試服務(wù)器上。
4、記錄結(jié)果
主要包括服務(wù)器配置,壓測場景、Jmeter聚合報告以及接口報錯情況,服務(wù)器資源監(jiān)控等。
1)服務(wù)器配置
測試環(huán)境機器配置:單臺機器,配置為6核6G內(nèi)存
線上環(huán)境機器配置:兩臺Web應(yīng)用程序服務(wù)器負(fù)載均衡,一臺數(shù)據(jù)庫服務(wù)器,每臺配置為6核6G內(nèi)存
2)壓測場景
打開紅包+猜測紅包大小+獲取紅包狀態(tài)接口(寫上接口的URI)
/v1/api/red
3)聚合報告
1s起1000個線程數(shù),循環(huán)次數(shù)500次,壓測時間:2023/01/17 15:00~15:05(記錄壓測時間是為了在夜鶯(Nightingale)上查看時間段內(nèi)的資源消耗情況圖)
主要關(guān)注平均響應(yīng)時間Average,Error%,Throughput
4)測試結(jié)果
查看結(jié)果樹,將報錯的類型全部列舉出來,例如存在連接超時的報錯:Connection timed out
5)資源監(jiān)控
關(guān)注CPU使用率,內(nèi)存使用率,網(wǎng)絡(luò)流量
5、提性能Bug和驗證Bug
如果有的接口有性能Bug,提Bug給開發(fā),開發(fā)修復(fù)后,再次壓測,進(jìn)行回歸測試,驗證Bug已修復(fù)。
6、發(fā)送壓測報告
將步驟4的結(jié)果進(jìn)行簡單的文字分析總結(jié),發(fā)送壓測報告
最后感謝每一個認(rèn)真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
這些資料,對于【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!?