原則:完全模擬線上場(chǎng)景? 1.環(huán)境? 2.數(shù)據(jù)
關(guān)注點(diǎn):
1.詳細(xì)了解接口所在服務(wù)在線上的部署情況
1.1機(jī)器配置博肋,cpu舟肉,內(nèi)存桶现,load,io喊巍,線程池使用數(shù)
1.2有無(wú)跨機(jī)房
1.3使用redis屠缭?監(jiān)控redis的內(nèi)存,cpu消耗崭参,是否模擬redis掛掉的降級(jí)場(chǎng)景
1.4使用本地緩存呵曹? 監(jiān)控本地內(nèi)存的是否大批量增加,有可能內(nèi)存泄漏何暮?
1.5使用mq奄喂?監(jiān)控mq的堆積情況是否正常
1.6DB? db的cpu,內(nèi)存使用率海洼,線程池的配置跨新,慢sql
1.7其他組件?監(jiān)控坏逢?
2.代碼更新要做對(duì)比測(cè)試域帐?
2.1更新后的接口性能根據(jù)實(shí)際情況一般不可明顯低于更新前
3.服務(wù)的耐久度?
以正常并發(fā)壓測(cè)n小時(shí)是整,服務(wù)是否正常肖揣,性能無(wú)毛刺?
4.壓測(cè)目標(biāo)浮入?
負(fù)載測(cè)試(Load testing)
負(fù)載測(cè)試是不斷增加系統(tǒng)的負(fù)載龙优,直到負(fù)載達(dá)到閾值——評(píng)估系統(tǒng)在預(yù)期工作負(fù)載下的性能的測(cè)試。
這里增加負(fù)載的意思是在測(cè)試中增加并發(fā)用戶數(shù)量事秀、用戶交互等彤断,通常是在可控的環(huán)境下進(jìn)行。典型的負(fù)載測(cè)試包括在負(fù)載測(cè)試過(guò)程中確定響應(yīng)時(shí)間秽晚,吞吐量瓦糟,誤碼率等。
該方法可以找到系統(tǒng)的性能極限赴蝇,可以為性能調(diào)優(yōu)提供相關(guān)數(shù)據(jù)菩浙。該類方法通常要基于或模擬系統(tǒng)真實(shí)運(yùn)行環(huán)境,且選取的業(yè)務(wù)場(chǎng)景也要盡可能地與實(shí)際情況相符句伶。
舉例:
對(duì)于具有預(yù)計(jì)1000并發(fā)用戶負(fù)載的新開(kāi)發(fā)的應(yīng)用程序來(lái)說(shuō)劲蜻,則需要?jiǎng)?chuàng)建負(fù)載測(cè)試的腳本,配置1000個(gè)虛擬用戶考余,然后持續(xù)運(yùn)行1小時(shí)先嬉。負(fù)載測(cè)試完成后,再分析測(cè)試結(jié)果楚堤,確定應(yīng)用程序?qū)⑷绾卧陬A(yù)期的峰值負(fù)載下運(yùn)行疫蔓。
壓力測(cè)試(Stress Testing)
壓力測(cè)試是指當(dāng)硬件資源如cpu含懊、內(nèi)存、磁盤(pán)空間等不充足時(shí)對(duì)軟件穩(wěn)定性的檢查衅胀。
壓力測(cè)試屬于負(fù)面測(cè)試(Negative testing)岔乔,使大量并發(fā)用戶/進(jìn)程加載軟件以使系統(tǒng)硬件資源不能應(yīng)付。這個(gè)測(cè)試也被稱為是疲勞測(cè)試(Fatigue testing)滚躯,通過(guò)超出其能力的測(cè)試來(lái)捕獲應(yīng)用程序的穩(wěn)定性雏门。
壓力測(cè)試的主要思想是確定系統(tǒng)故障,關(guān)注系統(tǒng)如何優(yōu)雅地恢復(fù)正常掸掏,這種質(zhì)量被稱為是可恢復(fù)性茁影。
負(fù)面測(cè)試(Negative testing)是相對(duì)于正面測(cè)試(Positive testing)而言的。正面測(cè)試就是測(cè)試系統(tǒng)是否完成了它應(yīng)該完成的功能丧凤;而負(fù)面測(cè)試就是測(cè)試系統(tǒng)是否不執(zhí)行它不應(yīng)該完成的操作募闲。
尖峰測(cè)試(Spike testing)
尖峰測(cè)試(Spike testing)其實(shí)可以算作是壓力測(cè)試(Stress Testing)的子集。
尖峰測(cè)試是在目標(biāo)系統(tǒng)經(jīng)受短時(shí)間內(nèi)反復(fù)增加工作負(fù)載息裸,以至超出預(yù)期生產(chǎn)操作的負(fù)載量時(shí)蝇更,分析系統(tǒng)的行為沪编,驗(yàn)證其性能特征呼盆。它還包括檢查應(yīng)用程序是否可以從突然增加的超預(yù)期負(fù)荷中恢復(fù)出來(lái)的測(cè)試。
舉例:
在電商應(yīng)用程序中經(jīng)常有“整點(diǎn)秒殺”的活動(dòng)蚁廓,所以在整點(diǎn)時(shí)間前后的兩三分鐘時(shí)間里访圃,會(huì)有巨大數(shù)量的用戶進(jìn)入到該活動(dòng)中秒殺商品。尖峰測(cè)試就是為了分析這類場(chǎng)景相嵌。腿时。
容量測(cè)試(Volume testing)(大數(shù)據(jù))
容量測(cè)試是一種非功能的測(cè)試,它通過(guò)向應(yīng)用程序中添加大量的數(shù)據(jù)來(lái)實(shí)現(xiàn)饭宾∨悖可以通過(guò)向數(shù)據(jù)庫(kù)插入大量的數(shù)據(jù)或讓?xiě)?yīng)用程序處理一個(gè)大型文件來(lái)進(jìn)行測(cè)試應(yīng)用程序。
通過(guò)容量測(cè)試看铆,可以識(shí)別應(yīng)用程序中具有大數(shù)據(jù)時(shí)的瓶頸徽鼎,檢查應(yīng)用程序的效率,進(jìn)而得到不同數(shù)據(jù)量級(jí)下應(yīng)用程序的性能弹惦。
舉例
在一個(gè)新開(kāi)發(fā)的網(wǎng)絡(luò)游戲應(yīng)用程序中否淤,在進(jìn)行容量測(cè)試時(shí),可以通過(guò)向數(shù)據(jù)庫(kù)中插入數(shù)百萬(wàn)行的數(shù)據(jù)棠隐,然后在這些數(shù)據(jù)的基礎(chǔ)上進(jìn)行性能的測(cè)試石抡。
注意,這里所說(shuō)的數(shù)據(jù)一定是符合其功能場(chǎng)景的助泽,不是毫無(wú)關(guān)系的數(shù)據(jù)啰扛。
持久測(cè)試(Endurance testing)
持久測(cè)試(Endurance testing)嚎京,也被稱為是浸泡測(cè)試(Soak Testing),它也是一種非功能的測(cè)試隐解。
持久測(cè)試是指在相當(dāng)長(zhǎng)的時(shí)間內(nèi)使用預(yù)期的負(fù)載量對(duì)系統(tǒng)進(jìn)行測(cè)試挖藏,以檢查系統(tǒng)的各種行為,如內(nèi)存泄露厢漩、系統(tǒng)錯(cuò)誤膜眠、隨機(jī)行為等。
這里的提到的相當(dāng)長(zhǎng)的時(shí)間是相對(duì)而言的溜嗜,舉例來(lái)說(shuō)宵膨,如果一個(gè)系統(tǒng)設(shè)計(jì)為運(yùn)行3個(gè)小時(shí)的時(shí)間,那可以使用6個(gè)小時(shí)的時(shí)間來(lái)進(jìn)行持久測(cè)試炸宵;如果設(shè)計(jì)為5個(gè)小時(shí)的時(shí)間辟躏,不妨用10個(gè)小時(shí)的時(shí)間來(lái)進(jìn)行持久測(cè)試。對(duì)于現(xiàn)在的許多網(wǎng)絡(luò)類應(yīng)用程序土全,通常情況下會(huì)持續(xù)運(yùn)行好多天捎琐,那么進(jìn)行持久測(cè)試時(shí)可以選擇更長(zhǎng)的時(shí)間段。