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