性能測試、壓力測試、負(fù)載測試的區(qū)別
負(fù)載測試(Load testing)、壓力測試(Stress Test,應(yīng)稱為強(qiáng)度測試)和性能測試,這三個(gè)概念常常引起混淆、難以區(qū)分,從而造成不正確的理解和錯(cuò)誤的使用。雖然負(fù)載測試、壓力測試和性能測試的測試目的不同,但其手段和方法在一定程度上比較相似,通常會(huì)使用相同的測試環(huán)境和測試工具,而且都會(huì)監(jiān)控系統(tǒng)所占用資源的情況以及其它相應(yīng)的性能指標(biāo),這也是造成人們?nèi)菀桩a(chǎn)生概念混淆的主要原因。
l影響軟件運(yùn)行的因素
軟件通常是運(yùn)行在特定環(huán)境中,這種環(huán)境包括支撐軟件運(yùn)行的軟硬件配置和影響軟件運(yùn)行的外部因素。為了讓客戶使用軟件系統(tǒng)有更好的體驗(yàn)感,必須確保系統(tǒng)運(yùn)行良好,達(dá)到高安全、高可靠和高性能。其中,系統(tǒng)是否具有高性能的運(yùn)行特征,不僅取決于系統(tǒng)本身的設(shè)計(jì)和程序算法,而且取決于系統(tǒng)的運(yùn)行環(huán)境。系統(tǒng)的運(yùn)行環(huán)境會(huì)依賴于一些關(guān)鍵因素,例如:
1、系統(tǒng)架構(gòu):如分布式服務(wù)器集群還是集中式主機(jī)系統(tǒng)等;
2、硬件配置:如服務(wù)器的配置,CPU、內(nèi)存等配置越高,系統(tǒng)的性能會(huì)越好;
3、網(wǎng)絡(luò)帶寬:隨著帶寬的提高,客戶端訪問服務(wù)器的速度會(huì)有較大的改善;
4、支撐軟件的選定:如選定不同的數(shù)據(jù)庫管理系統(tǒng)(Oracle、MySQL等)和web應(yīng)用服務(wù)器(Tomcat、GlassFish、Jboss、WebLogic等),對(duì)應(yīng)用系統(tǒng)的性能都有影響;
5、外部負(fù)載:同時(shí)有多少個(gè)用戶訪問、用戶上傳文件大小、數(shù)據(jù)庫中的記錄數(shù)等都會(huì)對(duì)系統(tǒng)的性能有影響,一般來說,系統(tǒng)負(fù)載越大,系統(tǒng)的性能會(huì)降低。
l性能、壓力、負(fù)載測試概念
性能測試是通過自動(dòng)化的測試工具模擬多種正常峰值以及異常負(fù)載條件來對(duì)系統(tǒng)的各項(xiàng)性能指標(biāo)進(jìn)行測試。壓力測試和負(fù)載測試都屬于性能測試,兩者一般結(jié)合進(jìn)行。
負(fù)載測試是模擬軟件系統(tǒng)所承受的負(fù)載條件的系統(tǒng)負(fù)荷,通過不斷加壓(如逐漸增加模擬用戶數(shù)量)或其它加載方式來觀察不同負(fù)載下系統(tǒng)的響應(yīng)時(shí)間和數(shù)據(jù)吞吐量、系統(tǒng)占用的資源(如CPU/內(nèi)存/磁盤讀寫)等,以檢驗(yàn)系統(tǒng)的行為和特性,以發(fā)現(xiàn)系統(tǒng)可能存在的性能瓶頸、內(nèi)存泄漏、不能實(shí)時(shí)同步等問題,負(fù)載更多地體現(xiàn)了一種方法或技術(shù)。
壓力測試是在強(qiáng)負(fù)載(大數(shù)據(jù)量、大量并發(fā)用戶等)下的測試,查看應(yīng)用系統(tǒng)在峰值使用情況下的操作行為,從而有效地發(fā)現(xiàn)系統(tǒng)的某項(xiàng)功能隱患、系統(tǒng)是否具有良好的容錯(cuò)能力和可恢復(fù)能力。壓力測試分為高負(fù)載下的長時(shí)間(如持續(xù)運(yùn)行24小時(shí)及以上)的穩(wěn)定性壓力測試和極限負(fù)載情況下導(dǎo)致系統(tǒng)崩潰的破壞性壓力測試。
l負(fù)載測試與壓力測試特點(diǎn):
u兩者都是通過模擬軟件生產(chǎn)運(yùn)行的業(yè)務(wù)壓力值和使用場景組合測試軟件的性能是否能夠滿足需要,主要具備一下三個(gè)特點(diǎn):
1、目的是驗(yàn)證系統(tǒng)是否具有系統(tǒng)宣稱具有的健壯能力;
2、需要事先了解被測系統(tǒng)使用的典型場景(如淘寶的雙十一凌晨下單支付),并確定性能目標(biāo);
3、模擬測試的進(jìn)行必須要求在已確定的環(huán)境中。
u負(fù)載測試用來驗(yàn)證系統(tǒng)飽和狀態(tài)、確定閾值,其特點(diǎn):
1、目的是摘到系統(tǒng)處理能力的極限,通過檢測、加壓、閾值手段找到如“響應(yīng)時(shí)間補(bǔ)超過10s”、“服務(wù)器平均CPU利用率低于65%”等指標(biāo);
2、需要再給定的測試環(huán)境下進(jìn)行,通常也需要考慮被測系統(tǒng)的業(yè)務(wù)場景和壓力量;
3、這種方法一般用來了解系統(tǒng)的性能容量,或者配合性能調(diào)優(yōu)的時(shí)候來使用。
u壓力測試是測試系統(tǒng)在一定飽和狀態(tài)下(CPU/內(nèi)存等飽和),系統(tǒng)能夠處理session的能力,以及系統(tǒng)是否會(huì)出現(xiàn)崩潰等,其特點(diǎn):
1、該方法是檢查系統(tǒng)處于壓力情況下應(yīng)用的表現(xiàn)。如增加VU數(shù)量、節(jié)點(diǎn)數(shù)量、并發(fā)用戶數(shù)量等使系統(tǒng)的資源使用保持一定的水平,目的在于檢測此時(shí)應(yīng)用的表現(xiàn),重點(diǎn)在于觀察有無錯(cuò)誤信息產(chǎn)生,系統(tǒng)的響應(yīng)時(shí)間等;
2、該方法通過模擬負(fù)載實(shí)現(xiàn)壓力。首先需要考慮模擬是否有效,其次需要結(jié)合業(yè)務(wù)和軟件架構(gòu)來定制模擬指標(biāo),需要選取合適的測試工具使測試數(shù)據(jù)更有參考性;
3、該方法也能測試系統(tǒng)的穩(wěn)定性,需要根據(jù)平臺(tái)使用場景定義多長的壓測時(shí)間才能有效得體現(xiàn)出穩(wěn)定性。