性能测试、负载测试、压力测试的区别
轉載自:https://www.cnblogs.com/Bonnieh/p/5826773.html
性能測試(Performance Testing):是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統的各項性能指標進行測試。負載測試和壓力測試都屬于性能測試。通過負載測試,確定在各種工作負載下的系統的性能,目標是測試當負載逐漸增加時,系統各項性能指標的變化情況。壓力測試是通過確定一個系統的瓶頸或者不能接受的性能點,來獲得系統能提供的最大服務級別的測試。
負載測試(Load Testing):是模擬實際軟件所承受的負載條件的系統負荷,通過不斷加載(如逐漸增加模擬用戶的數量)或其他加載方式來觀察不同負載下系統的響應時間和數據吞吐量、系統占用的資源(CPU、內存等),以檢驗系統的行為和特性,以發現系統可能存在的性能瓶頸,內存泄漏,不能實時同步等問題,負載測試更多的體現了一種方法或一種技術。
壓力測試(stress testing):在強負載(大數據量、大量并發用戶等)下的測試,查看應用系統在峰值使用情況下的操作行為,從而有效地發現系統的某項功能隱患,系統是否具有良好的容錯能力和可恢復能力。壓力測試可分為高負載下的長時間(如24小時以上)的穩定性壓力測試和極限負載情況下導致系統奔潰的破壞性壓力測試。
三者的區別: 從測試的目的出發,從用戶的需求出發,就比較容易區分性能測試、負載測試和壓力測試了。性能測試是為了獲得系統在某種特定的條件下(包括特定的負載條件下)的性能指標數據,而負載測試、壓力測試是為了發現軟件系統中所存在的問題,包括性能瓶頸、內存泄漏等。通過負載測試,也是為了獲得系統正常工作時所能承受的最大負載,這時的負載測試就成為了容量測試。通過壓力測試,可以知道在什么極限情況下系統會奔潰、系統是否具有自我恢復性等,但更多的是為了確定系統的穩定性。
性能測試工具(目前只是知道有這些工具,后期在使用過程中在總結它們的使用方法):
(1) Apache Jmeter: 用戶手冊 http://jmeter.apache.org/usermanual/index.html
(2) Load Runner
(3) QTP(Quick Test)
(4) Web Polygraph
性能測試不單單是熟悉測試工具,更要注意的是其中的測試思想,下面可以了解一下關于性能測試的三個觀念:
- 精確和模糊
i.e. 一輛汽車開100公里需要多少汽油?
做假設(assumption),下面有3個階段的假設:
a. 做了假設卻不知道自己做了假設
有些人根據自己的切身體驗來做測試,然后寫測試報告給別人看,關鍵是你覺得自己的測試是正確的,但并不是所有人都是處于你所處的環境,做和你測試時做完全一樣的事情,所以測試出來的結果只會誤導到別人。比如前面提到的那個耗油的問題,有人的做法是我開100公里看看,得出來多少就是多少。
b. 做了過多的假設
”當路面平坦,一路綠燈,風速5km/h,只有一名70kg的乘客,時速穩定在70km/h,良好駕駛習慣,… , 的情況下,油耗是7.1L/100km.“這樣可能很嚴謹,但對于讀你報告的讀者,這樣的數據沒有多大的意義。
c. 做必要和合理的假設
生活中有些時候是需要一些妥協和折衷的,如果這些折衷是必要的和合理的。因為跳出來看,我們的測試需要提供有價值的信息,所以為了這樣有價值的信息,做出必要的合理的假設是可以接受的。
- 宏觀與微觀
這也是一個有趣的對立。在做性能測試,特別是整個產品的性能測試的時候,我們看到的是產品的核心功能和主要的大的功能模塊,比如數據庫、web服務器、核心的daemon等等。在腦海里,我們有一個架構圖,哪怕你沒有把它畫出來。所以有時候,我們會想,性能測試對于產品的視角是宏觀的,看大的組件,而不是具體的細節的東西。
果真是如此嗎?看看下面的例子:
1. 把daemon的log級別改為debug (log_level從2改到5)之后,性能下降了差不多一半。
2. 關掉一個cache選項
3. 打開keepalive選項
4. 打開DNS反向查詢
......
上面都是些細枝末節的設置,一個配置項而已,藏在DB的某張表或者某個ini里面。但是改變之后,得到的性能結果可能大不相同。
這時候,其實要不要考慮細枝末節,主要是看他到底是否Critical。至于怎樣的才是至關重要的,這還需要在以后的工作中思考和總結。
- 項目和任務
性能測試本身肯定是一個任務,無論對于被安排去做這個的人,或者安排的人。但是它有時候也像一個項目,對于去做這件事情的人。為什么呢?
首先你需要和很多的人打交道。
產品經理或者客戶:獲取需求,設定目標。
QA manager/lead:討論resource和schedule。包括需要的機器,環境,軟件,還有整個計劃。
開發人員:查找問題和調優等。
功能測試的owner: 性能測試人員可能不是什么功能都很懂。
Admin:Lab,網絡,DB等等
其次,它是一個周期很長,跨度很大的工作。特別是對于一個比較大的產品而言。你需要準備詳細的測試設計,包括目標、范圍、可能的方法,以及上面提到的資源和時間計劃;然后邀請很多人來評審這個計劃;接下來要準備工具、環境和測試數據。然后是執行,記錄分析結果。如果有問題還要反復的調整和regression。最后要整理報告,回答疑問。
說它是一個項目一來是因為上面的原因導致工作的復雜性,還有一些原因是因為性能測試帶有評測的性質,因為你是在試圖去度量、衡量或者評價一個東西,而且帶有比較絕對的結果。這樣導致性能測試不可避免的要引入一些權威性的問題,盡管你并不一定期望這樣。這使得很多的東西就像一個其他項目一樣,有期望管理和良好的外部溝通和協調的需要。所以有時候,更愿意把它作為一個小的項目來看待,這樣或許可以做得更全面。
?本文參考:
????????http://blog.csdn.net/superqa/article/details/6067448?
?? http://www.cnblogs.com/fnng/archive/2012/12/09/2809974.html
轉載于:https://www.cnblogs.com/MarsDing/p/9909724.html
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的性能测试、负载测试、压力测试的区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 汇编语言介绍,内存和总线的初步认识
- 下一篇: .net工具类 分享一个简单的随机分红包