負載測試、壓力測試和性能測試的異同 收藏
負載測試(Load testing)、壓力測試(Stress
Test,應(yīng)稱為強度測試)和性能測試,這三個概念常常引起混淆,難以區(qū)分,從而造成不正確的理解和錯誤的使用。之前,也有不少討論,比較有名的,應(yīng)歸為
Grig Gheorghiu's的兩篇博客:
負載測試、壓力測試和性能測試的測試目的不同,但其手段和方法在一定程度上比較相似,通常會使用相同的測試環(huán)境和測試工具,而且都會監(jiān)控系統(tǒng)所占用資源的情況以及其它相應(yīng)的性能指標,這也是造成人們?nèi)菀桩a(chǎn)生概念混淆的主要原因。 我們知道,軟件總是運行在一定的環(huán)境下,這種環(huán)境包括支撐軟件運行的軟硬件環(huán)境和影響軟件運行的外部條件。為了讓客戶使用軟件系統(tǒng)感到滿意,必須確保系統(tǒng) 運行良好,達到高安全、高可靠和高性能。其中,系統(tǒng)是否具有高性能的運行特征,不僅取決于系統(tǒng)本身的設(shè)計和程序算法,而且取決于系統(tǒng)的運行環(huán)境。系統(tǒng)的運 行環(huán)境會依賴于一些關(guān)鍵因素,例如:
在了解了這樣一個背景之后,就比較容易理解為什么在性能測試中常常要談負載測試。從測試的目的出發(fā)、從用戶的需求出發(fā),就比較容易區(qū)分性能測試、負載測試 和壓力測試。性能測試是為了獲得系統(tǒng)在某種特定的條件下(包括特定的負載條件下)的性能指標數(shù)據(jù),而負載測試、壓力測試是為了發(fā)現(xiàn)軟件系統(tǒng)中所存在的問 題,包括性能瓶頸、內(nèi)存泄漏等。通過負載測試,也是為了獲得系統(tǒng)正常工作時所能承受的最大負載,這時負載測試就成為容量測試。通過壓力測試,可以知道在什 么極限情況下系統(tǒng)會崩潰、系統(tǒng)是否具有自我恢復(fù)性等,但更多的是為了確定系統(tǒng)的穩(wěn)定性。 那么,如何給負載測試、壓力測試下個定義呢?根據(jù)上述討論,我們可以給出如下的定義:
負載測試是為了發(fā)現(xiàn)系統(tǒng)的性能問題,負載測試需要通過系統(tǒng)性能特性或行為來發(fā)現(xiàn)問題,從而為性能改進提供幫助,從這個意義看,負載測試可以看作性能測試的 一部分。但它們兩者的目的是不一樣的,負載測試是為了發(fā)現(xiàn)缺陷,而性能測試是為了獲取性能指標。因為性能測試過程中,也可以不調(diào)整負載,而是在同樣負載情 況下改變系統(tǒng)的結(jié)構(gòu)、改變算法、改變硬件配置等等來得到性能指標數(shù)據(jù),從這個意義看,負載測試可以看作是性能測試所c的一種技術(shù),即性能測試使用負載測試 的技術(shù)、使用負載測試的工具。性能測試要獲得在不同的負載情況下的性能指標數(shù)據(jù)。 通過負載測試和壓力測試都可以獲得系統(tǒng)正常工作時的極限負載或最大容量。容量測試,自然也是采用負載測試技術(shù)來實現(xiàn),而在破壞性的壓力測試中,容量的確定可以看作是一種副產(chǎn)品——間接結(jié)果。 綜合所述,負載測試、壓力測試和性能測試的概念可以概括如下:
|
|
|
來自: daomucun > 《電腦技術(shù)》