性能测试的分类
性能測試中最常見的要屬于負載測試、壓力測試了。此外,并發(fā)測試在經(jīng)常被提及到。
根據(jù)大多數(shù)人總結(jié)的通用法則,可將性能測試主要分為以下幾種方法:
1、驗收性能測試
2、負載測試
3、壓力測試
4、配置測試
5、并發(fā)測試
6、可靠性測試
7、失敗回復(fù)測試
針對以上幾種類型,分別闡述以下對應(yīng)的認知:
?
一、驗收性能測試
定義:通過模擬產(chǎn)生運行時的業(yè)務(wù)壓力量和不同的使用場景進行組合。進而測試系統(tǒng)的性能能不能滿足生產(chǎn)的性能要求。
目的:驗證系統(tǒng)是否具有系統(tǒng)最初定下的性能能力。
過程:確定用戶場景、確定需要關(guān)注的性能指標、測試執(zhí)行、測試分析結(jié)果。
開展時機:確定了測試場景、系統(tǒng)運行環(huán)境,包括不限于硬件設(shè)備、軟件環(huán)境、網(wǎng)絡(luò)條件、基礎(chǔ)數(shù)據(jù)等時開展。
前提條件:了解了被測系統(tǒng)的典型場景(可以理解為參與測試的業(yè)務(wù)場景)、確定了性能測試目標(多描述為:系統(tǒng)在XX個并發(fā)的條件下進行A業(yè)務(wù)操作(單個或者多個),響應(yīng)時間不超過X秒)。
?
二、負載測試
定義:在被測系統(tǒng)上不斷增加壓力,知道性能指標超過預(yù)定指標或某種資源使用已經(jīng)達到飽和狀態(tài)這種請款下的測試。
用途:找到系統(tǒng)的處理極限時的瓶頸,為系統(tǒng)調(diào)優(yōu)提供數(shù)據(jù)支撐,了解系統(tǒng)的性能容量,或者比較調(diào)優(yōu)前后的性能差異。
過程:檢測--加壓--性能指標超過預(yù)期
結(jié)果描述:如在給定條件下最多允許120個并發(fā)用戶訪問;在改定條件下最多能夠在一個小時內(nèi)處理2100比業(yè)務(wù)。
目標描述:在給定條件下響應(yīng)時間不超過10秒,CPU平均使用率不超過70%等
前提條件:已知且確定的系統(tǒng)環(huán)境,測試典型場景,預(yù)期目標。
注意事項:因為預(yù)期目標是建立在一定系統(tǒng)環(huán)境基礎(chǔ)上提出的,所以在測試開始之前,一定要確定被測系統(tǒng)的系統(tǒng)環(huán)境,目標測試場景,且是對目標測試場景進行加壓。這樣得出的結(jié)果才與實際預(yù)期目標具有可比性。
?
三、壓力測試
定義:當系統(tǒng)某一項或者多項指標在飽和狀態(tài)下進行的性能測試方法
目的:檢查系統(tǒng)在某種壓力情況下時應(yīng)用的性能表現(xiàn),重點在于有無出錯信息產(chǎn)生,系統(tǒng)的綜合處理能力。
用途:多用于測試系統(tǒng)的穩(wěn)定性。
現(xiàn)實方式:通過不斷增加訪問壓力(如增加并發(fā)的用戶數(shù)量等)使系統(tǒng)的資源保持在一個較高的使用水平。
目標描述:如CPU使用率達75%以上;內(nèi)存使用率達70%以上;JVM的客用內(nèi)存;數(shù)據(jù)庫的連接數(shù)等
?
四、配置測試
定義:通過對被測系統(tǒng)軟件硬件環(huán)境的調(diào)整,了解各種不同環(huán)境對系統(tǒng)的性能的影響。
目的:通過測試獲得不同因素對系統(tǒng)性能的影響情況,然后對比獲得最佳的性能表現(xiàn),進而采取對應(yīng)的最佳配置方案。
用途:多用于性能調(diào)優(yōu)和規(guī)劃能力,如何調(diào)整才能獲取最佳的擴展性。
前提條件:需要了解系統(tǒng)環(huán)境、操作步驟、壓力條件下進行。
實行過程:在每次執(zhí)行測試時更換、擴充硬件設(shè)備,調(diào)整網(wǎng)絡(luò)環(huán)境,調(diào)整應(yīng)用服務(wù)器、中間件和數(shù)據(jù)庫服務(wù)器的參數(shù)配置等,比較每次的測試結(jié)果,從而確定各個因素對系統(tǒng)性能的影響,最后找出影響系統(tǒng)的最大因素,確定最佳的配置方案。
注意:此處的配置測試與功能中所說的配置測試不一樣。區(qū)別在于:功能中的配置測試是為了驗證軟件在不同的軟硬件環(huán)境中能否正常運行。
?
五、并發(fā)測試
定義:通過模擬多用戶實現(xiàn)并發(fā)訪問的,測試多用戶訪問同一應(yīng)用、同一模塊或者數(shù)據(jù)記錄時是否存在死鎖或者其他性能問題。
目的:發(fā)現(xiàn)系統(tǒng)中隱藏的因并發(fā)而會觸發(fā)的問題,主要有以下但不限于:
| 問題類別 | 問題描述 |
| 內(nèi)存問題 | 是否有內(nèi)存泄漏 |
| 是否會產(chǎn)生太多的臨時對象 | |
| 是否有太多的超過設(shè)計生命周期的的對象 | |
| 數(shù)據(jù)庫問題 | 是否有數(shù)據(jù)庫死鎖 |
| 數(shù)據(jù)不一致問題 | |
| 是否出現(xiàn)長事務(wù) | |
| 線程/進程問題 | 是否出現(xiàn)慢SQL長時間阻死 |
| 是否出現(xiàn)線程/進程同步失敗 | |
| 其他問題 | 是否出現(xiàn)資源競爭導(dǎo)致的死鎖 |
| 是否沒正常處理的異常導(dǎo)致系統(tǒng)鎖死 |
?
實現(xiàn)條件:需要相關(guān)的測試工具的支持和配合,不僅僅只針對一個系統(tǒng)而言,同時頁可以對某種架構(gòu)或者設(shè)計的合理性進行。
開展時機:可以在開發(fā)的各個階段進行。
?
六、可靠性測試
定義:通過給系統(tǒng)加載一定的業(yè)務(wù)壓力,達到某一個預(yù)定指標后,讓其應(yīng)用持續(xù)運行一段時間,看在這種情況下系統(tǒng)能否穩(wěn)定運行。多用平均無故障時間或失效率來衡量。
目的:驗證系統(tǒng)在某種特定的處境下是否可以長期穩(wěn)定的運行。
時長:正常情況下,對于大型應(yīng)用而言需要在峰值壓力下持續(xù)2~3天。
衡量條件:讓系統(tǒng)處于較大壓力下進行長時間的測試,如果系統(tǒng)不出現(xiàn)問題或不出現(xiàn)不好的征兆,基本上可以說明系統(tǒng)在當前條件下具備長時間穩(wěn)定運行的要求。
?
七、失效恢復(fù)測試
定義:當系統(tǒng)某一部分出現(xiàn)故障時,是否還能支持所有用戶的業(yè)務(wù)執(zhí)行,已經(jīng)在某種情況下預(yù)期的恢復(fù)技術(shù)是否可以發(fā)揮其作用 ,對是對有冗余備份或負載均衡的系統(tǒng)設(shè)計的。
目的:1、驗證系統(tǒng)局部故障時,系統(tǒng)是否還能繼續(xù)使用。
2、得出在某種情況下系統(tǒng)還能支持多大的用戶訪問并發(fā)數(shù),采取何種有效的保護措施等
限制條件:對數(shù)只對有明確要求的系統(tǒng)才會進行此類測試。對于沒有給出明確的需要持續(xù)運行指標的系統(tǒng)基本上都不需要做此類的測試。
?
大概就這么多吧,說的不對的麻煩大神及時指出,期待跟著大神的腳步一起起飛。
轉(zhuǎn)載于:https://www.cnblogs.com/Zhan-W/p/10091172.html
總結(jié)
- 上一篇: Python面向对象(类的成员之属性)
- 下一篇: 【转】JMeter学习(二十七)Jmet