壓力測試
對系統不斷施加壓力的測試,是通過確定一個系統的瓶頸或不能接收用戶請求的性能點,來獲得系統能提供的最大服務級別的測試。例如測試一個Web站點在大量的負荷下,系統的事務響應時間何時會變得不可接受或事務不能正常執行。
壓力測試的目的是發現在什么條件下系統的性能變得不可接受,并通過對應用程序施加越來越大的負載,直到發現應用程序性能下降的拐點。壓力測試和負載測試有些類似,但是通常把負載測試描述成一種特定類型的壓力測試——例如增加用戶數量或延長壓力時間以對應用程序進行壓力測試。
負載測試
對系統不斷地增加壓力或增加一定壓力下的持續時間,直到系統的一些性能指標達到極限,例如響應時間超過預定指標或某種資源已經達到飽和狀態。這種測試可以找到系統的處理極限,為系統調優提供依據。
壓力測試側重壓力大小,而負載測試往往強調壓力持續的時間。
似乎有點道理,有點豁然開朗的感覺?墒俏疫不死心,我還想聽聽風清揚老前輩是怎么說的。一問之下,他給出的答案和師父果然不一樣,他是這樣說的:
1.負載測試
在這里,負載測試指的是最常見的驗證一般性能需求而進行的性能測試,在上面我們提到了用戶最常見的性能需求就是“既要馬兒跑,又要馬兒少吃草”。因此負載測試主要是考察軟件系統在既定負載下的性能表現。我們對負載測試可以有如下理解:
(1)負載測試是站在用戶的角度去觀察在一定條件下軟件系統的性能表現。
(2)負載測試的預期結果是用戶的性能需求得到滿足。此指標一般體現為響應時間、交易容量、并發容量、資源使用率等。
2.壓力測試
壓力測試是為了考察系統在極端條件下的表現,極端條件可以是超負荷的交易量和并發用戶數。注意,這個極端條件并不一定是用戶的性能需求,可能要遠遠高于用戶的性能需求?梢赃@樣理解,壓力測試和負載測試不同的是,壓力測試的預期結果就是系統出現問題,而我們要考察的是系統處理問題的方式。比如說,我們期待一個系統在面臨壓力的情況下能夠保持穩定,處理速度可以變慢,但不能系統崩潰。因此,壓力測試是能讓我們識別系統的弱點和在極限負載下程序將如何運行。
這下我又糊涂了。師父教我做性能測試這么多年了,而且也是公認的性能測試高手,都出過好幾本關于性能測試的書籍了。我知道他告訴我的那些,實際上就是從他寫的其中一本書中摘抄過來的?墒俏乙仓,風清揚老前輩更是高手中的高手,他說的應該也不會錯才是。而他們兩個人的說法又很明顯不一致。我到底應該聽誰的呢?
于是我開了QQ,和師兄弟們在群里面聊了一下,想聽聽他們的意見。聊天記錄摘要如下:
岳靈珊09:14:00
負載測試和壓力測試的區別?這個需要討論嗎?
令狐沖09:14:01
不需要嗎?
岳靈珊09:14:02
需要嗎?
令狐沖09:14:03
不需要嗎?
岳靈珊09:14:04
需要嗎?
令狐沖09:14:05
只是討論一下而已嘛,何必那么認真呢?不需要嗎?
岳靈珊09:14:10
知道那意思不就得了?
令狐沖 09:14:15
問題是不知道
陸大有09:14:14
我覺得沒必要這么細分,因為在實際中,這兩個都是穿插進行的
令狐沖09:14:19
雖然我們不要死背概念,但是如果相差太遠也不好
勞德諾09:14:17
概念上還是有區別的
陸大有 09:15:29
聽他們的干嗎?你最終是要應用在實際當中去的,實踐的時候不會嚴格根據這兩個概念來做場景吧?
令狐沖 09:15:52
還是要的
令狐沖 09:16:11
而且你在做測試的時候都不知道自己在做什么,怎么說服自己
高根明 09:16:20
概念有必要厘清。
令狐沖 09:16:28
我也這么覺得
令狐沖 09:16:40
別人提過來的需求說要做壓力測試
陸大有 09:16:45
問題是實際當中,你不會嚴格根據這倆來進行區分場景的,ok?
令狐沖 09:17:07
我在想他們的意思也許并不一定就是要做壓力測試
岳靈珊 09:17:08
我覺得溝通清楚就沒問題
高根明 09:17:26
可以按照概念來實施場景,但是,不能概念化。
岳靈珊 09:17:40
把你的想法和他們說清楚,同意就ok了
勞德諾 09:17:55
性能測試,一般都有一些性能指標。我們來檢查系統是否達到了這些性能指標。
負載測試,是讓系統放開了去跑,在系統資源占用可接受的情況下,看看系統最好的表現是什么。
壓力測試,是系統快不行了,比如內存快沒了,CPU很高,在這個時候進行測試,看系統有什么樣的表現。
令狐沖 09:18:04
(2008-07-09 09:16:45) 陸大有(5947956)
問題是實際當中,你不會嚴格根據這倆來進行區分場景的,ok?
那你就是錄腳本,設并發用戶數,運行,ok?
施戴子 09:18:07
搞清楚你測試的目的,然后設計相應的測試策略不就行了
施戴子 09:18:23
何必拘泥于這些說法呢
令狐沖 09:18:44
勞德諾的說話是上面的第一種
勞德諾 09:19:12
這也是通常的講法吧。
令狐沖 09:19:15
當你做測試的時候,想讓自己上升到一個高度,就必須要理論化
令狐沖 09:19:30
否則你很難說服客戶甚至說服自己
施戴子 09:19:30
就像“蓮花白”這種菜一樣
“連花白”、“洋白菜”不都是一種東西么。
陸大有 09:19:32
錯,我的目的是找出瓶頸,并盡可能優化,計劃是前提,而我做計劃的時候,是要根據實際來做,而不會完全根據這些概念把場景區分的那么清楚,標明哪個是壓力哪個是負載
令狐沖 09:19:34
大家想是不是這個道理
勞德諾 09:20:03
這三個概念,所要做的事情的目的是不一樣的.....
令狐沖 09:20:12
施戴子(52344359) 09:19:30
就像“蓮花白”這種菜一樣
“連花白”、“洋白菜”不都是一種東西么。
和這個意思不同,這個比喻不恰當
令狐沖 09:20:20
是的
梁發 09:20:36
支持令狐沖
陸大有 09:20:38
對于客戶而言,你給他講的東西,都是他不是很清楚的,你說什么,基本就是什么了,只要你的言行一致,那他就不會找茬
令狐沖 09:20:57
令狐沖 09:21:09
陸大有,這個是我剛做性能測試時的想法
令狐沖 09:21:15
初學者都這樣想的
勞德諾 09:21:14
暈,你和客戶講概念干嘛?
令狐沖 09:21:20
可以理解
梁發 09:21:20
測試目的不同 測試策略也不同。
陸大有 09:21:22
好吧,你比我高級……
令狐沖 09:21:27
令狐沖 09:21:34
是我想要比你高級
令狐沖 09:21:40
目前還不是
陸大有 09:21:45
謝謝,我承認你比我高級
梁發 09:22:02
作為性能測試人員 必須牢記客戶提出的需求屬于哪種性能測試目的
令狐沖 09:22:12
是的,我同意勞德諾的
文章來源于領測軟件測試網 http://www.kjueaiud.com/