當(dāng)前我司業(yè)務(wù)發(fā)展蒸蒸日上,業(yè)務(wù)需求像洪水一樣襲來(lái)题翻。系統(tǒng)服務(wù)的穩(wěn)定性重要作用不言而喻浙宜。本文主要就服務(wù)端的穩(wěn)定性測(cè)試工作淺談一下。
穩(wěn)定性測(cè)試背景及目標(biāo)
穩(wěn)定性測(cè)試主要測(cè)試系統(tǒng)的長(zhǎng)時(shí)間穩(wěn)定運(yùn)行能力汛聚,通過(guò)對(duì)用戶實(shí)際使用場(chǎng)景的負(fù)載及應(yīng)用場(chǎng)景分析,模擬真實(shí)的用戶使用場(chǎng)景短荐,并進(jìn)行長(zhǎng)時(shí)間的穩(wěn)定運(yùn)行倚舀,以保證產(chǎn)品在長(zhǎng)時(shí)間運(yùn)行方面可能存在的潛在問(wèn)題的及時(shí)發(fā)現(xiàn)和有效解決。
穩(wěn)定性測(cè)試引入必要性分析
首先搓侄,部分問(wèn)題,如內(nèi)存泄露话速、句柄泄露讶踪、死鎖等,在常規(guī)功能測(cè)試中難以發(fā)現(xiàn)泊交,需要通過(guò)壓力的注入以及系統(tǒng)的運(yùn)行達(dá)到一定的時(shí)間后乳讥,才能觸發(fā)問(wèn)題的產(chǎn)生,所以引入穩(wěn)定性測(cè)試廓俭,可以有利于該類問(wèn)題的及時(shí)發(fā)現(xiàn)和提前解決云石;同時(shí),在系統(tǒng)正常上線之前研乒,通過(guò)對(duì)真實(shí)環(huán)境的長(zhǎng)時(shí)間模擬測(cè)試汹忠,也可以有效的驗(yàn)證系統(tǒng)在正式上線以后的穩(wěn)定運(yùn)行能力,為產(chǎn)品上線后的穩(wěn)定性和魯棒性提供一定的數(shù)據(jù)參考。
穩(wěn)定性測(cè)試執(zhí)行策略及方法
具體執(zhí)行策略
- 測(cè)試時(shí)間:最好保證系統(tǒng)持續(xù)穩(wěn)定性運(yùn)行724小時(shí)宽菜,最小穩(wěn)定運(yùn)行時(shí)間為324小時(shí)谣膳。
- 測(cè)試場(chǎng)景:參考業(yè)務(wù)的實(shí)際使用場(chǎng)景構(gòu)建壓力模型,模擬實(shí)際的場(chǎng)景運(yùn)行(實(shí)際負(fù)載和并發(fā)量等)铅乡,并且在測(cè)試中模擬實(shí)際日常的用戶操作继谚,操作中需要考慮并發(fā)因素,包括單操作并發(fā)和不同操作并發(fā)兩種場(chǎng)景阵幸。
- 測(cè)試負(fù)載選擇策略:一般和線上的實(shí)際場(chǎng)景保持一致花履,如果沒(méi)有線上數(shù)據(jù)的時(shí)候,采取梯度加壓的方法來(lái)進(jìn)行變化挚赊。
- 穩(wěn)定性測(cè)試是概率性的測(cè)試诡壁,就是說(shuō)即使穩(wěn)定性測(cè)試通過(guò),也不能保證系統(tǒng)實(shí)際運(yùn)行的時(shí)候不出問(wèn)題咬腕。所以要盡可能的提高測(cè)試的可靠性欢峰。可以通過(guò)多次測(cè)試涨共,延長(zhǎng)測(cè)試時(shí)間纽帖,增大測(cè)試壓力來(lái)提高測(cè)試的可靠性。
- 穩(wěn)定性測(cè)試的測(cè)試時(shí)間和壓力存在一定的關(guān)系举反。在測(cè)試時(shí)間不能保證的情況下懊直,可以通過(guò)增強(qiáng)壓力以及增大測(cè)試對(duì)象數(shù)量來(lái)達(dá)到快速驗(yàn)證的目的,但是建議最小測(cè)試時(shí)間不要小于3*24小時(shí)火鼻。
穩(wěn)定性測(cè)試用例設(shè)計(jì)考慮維度
- 時(shí)間
- 大流量
- 并發(fā)
- 使用環(huán)境
- 使用方法
- 極端情況
時(shí)間室囊,產(chǎn)品能持續(xù)長(zhǎng)時(shí)間工作嗎?可能會(huì)導(dǎo)致的問(wèn)題:內(nèi)存泄漏魁索,隊(duì)列堆積融撞,存儲(chǔ)等慢速設(shè)備持續(xù)跟不上,Cache粗蔚,Buffer累積性問(wèn)題尝偎,內(nèi)存溢出等。
大流量鹏控,產(chǎn)品能處理這么大流量嗎致扯?可能導(dǎo)致的問(wèn)題:系統(tǒng)崩潰,性能嚴(yán)重下降当辐,資源耗盡抖僵,DB或磁盤(pán)空間滿,觸發(fā)系統(tǒng)的一些行為(流量控制等)缘揪,依賴系統(tǒng)的一些異常等耍群。
并發(fā)义桂,在一定并發(fā)量的情況下系統(tǒng)有無(wú)異常?可能導(dǎo)致的問(wèn)題與上面兩種類似世吨。并發(fā)包括平均并發(fā)量澡刹;峰值并發(fā)量;均值為主耘婚,特定時(shí)間加入峰值罢浇;加壓,使系統(tǒng)資源達(dá)到特定值沐祷,維持壓力嚷闭,持續(xù)運(yùn)行等情形。
使用環(huán)境:不同平臺(tái)赖临,網(wǎng)絡(luò)胞锰,基礎(chǔ)架構(gòu)等。一般來(lái)說(shuō)此為客戶端穩(wěn)定性測(cè)試需要考慮的驗(yàn)證點(diǎn)兢榨。
使用方法:客戶對(duì)相關(guān)應(yīng)用的使用方式嗅榕。具體到服務(wù)端來(lái)說(shuō),有被依賴方調(diào)用底層接口使用姿勢(shì)等問(wèn)題吵聪。
極端情況:極端情況下凌那,應(yīng)用可以crash,但是不能丟數(shù)據(jù)等情形的驗(yàn)證吟逝。
測(cè)試關(guān)注點(diǎn)
- 觀察系統(tǒng)在有負(fù)載的情況下業(yè)務(wù)運(yùn)行是否正常帽蝶,是否存在內(nèi)存泄露、句柄泄露块攒、數(shù)據(jù)一致性等問(wèn)題導(dǎo)致系統(tǒng)出現(xiàn)崩潰励稳、異常重啟。
- 是否存在系統(tǒng)長(zhǎng)時(shí)間運(yùn)行下囱井,系統(tǒng)性能下降明顯驹尼,響應(yīng)時(shí)間快速增長(zhǎng),可用內(nèi)存是否在減少庞呕,CPU利用率是否在上升等等都可以說(shuō)明系統(tǒng)是否存在問(wèn)題新翎。
- 其他項(xiàng):包括CPU,MEM千扶,disk i/o料祠,網(wǎng)絡(luò)骆捧,應(yīng)用的日志澎羞,數(shù)據(jù)庫(kù)狀態(tài),請(qǐng)求準(zhǔn)確率敛苇,響應(yīng)時(shí)間妆绞,吞吐量等顺呕。
常用測(cè)試工具介紹
壓力工具方面,根據(jù)壓力維度的不同主要分為CPU括饶、內(nèi)存株茶、網(wǎng)絡(luò)IO以及磁盤(pán)IO的壓力工具,各種維度中的常用工具請(qǐng)參考如下內(nèi)容图焰。
典型服務(wù)端穩(wěn)定性bug舉例與分析
Bug:系統(tǒng)在長(zhǎng)時(shí)間連續(xù)運(yùn)行3天以后启盛,虛擬機(jī)出現(xiàn)異常重啟現(xiàn)象。
分析:典型穩(wěn)定性測(cè)試問(wèn)題技羔,該類問(wèn)題一般需要在長(zhǎng)時(shí)間的連續(xù)運(yùn)行情況下才會(huì)觸發(fā)僵闯,該問(wèn)題主要由于系統(tǒng)中存在內(nèi)存泄露現(xiàn)象導(dǎo)致,在連續(xù)運(yùn)行3天以后藤滥,泄露達(dá)到了問(wèn)題的觸發(fā)點(diǎn)鳖粟,導(dǎo)致虛擬機(jī)異常重啟,一般該類問(wèn)題的出現(xiàn)時(shí)間還與系統(tǒng)的負(fù)載有一定的關(guān)系拙绊,在系統(tǒng)負(fù)載很高的情況下向图,問(wèn)題的觸發(fā)幾率會(huì)增大,同時(shí)發(fā)生的時(shí)間間隔也可能出現(xiàn)一定的縮短标沪。