性能測(cè)試/負(fù)載測(cè)試/壓力測(cè)試差異
性能測(cè)試
性能測(cè)試的目的不是去找bugs,而是排除系統(tǒng)的瓶頸,以及為以后的回歸測(cè)試建立一個(gè)基準(zhǔn)。在理想的情況下,被測(cè)軟件在這個(gè)時(shí)候已經(jīng)是足夠穩(wěn)定了,所以這個(gè)過(guò)程得以順利的進(jìn)行。
一組清晰已定義好的預(yù)期值是讓一次有意義的性能測(cè)試的基本要素。給一個(gè)web應(yīng)用做性能測(cè)試,你要知道至少兩樣?xùn)|西:在不同并發(fā)用戶數(shù)或者Http連接數(shù)情況下的負(fù)載預(yù)期值*
性能測(cè)試可以通過(guò)負(fù)載試驗(yàn),試驗(yàn)的結(jié)果顯示出系統(tǒng)的性能。目的是確保讓你的代碼運(yùn)行得盡可能高效,以及數(shù)據(jù)庫(kù)在給定的操作系統(tǒng)和硬件配置的情況下最優(yōu)化,達(dá)到預(yù)期值。
“運(yùn)行負(fù)載試驗(yàn)->測(cè)度性能->調(diào)試系統(tǒng)”這個(gè)循環(huán)一直要被重復(fù)執(zhí)行到被測(cè)試系統(tǒng)達(dá)到了期望的性能標(biāo)準(zhǔn)了才可以停。在這個(gè)時(shí)候,測(cè)試人員就可以明了在正常條件下的系統(tǒng)運(yùn)轉(zhuǎn)怎么樣,同時(shí)這些就可以做為以后在回歸測(cè)試中,評(píng)價(jià)新版本的軟件性能的一個(gè)標(biāo)準(zhǔn)了。性能測(cè)試還有另一個(gè)目標(biāo)就是建立一組被測(cè)系統(tǒng)的基準(zhǔn)數(shù)據(jù)。
下面就是一些在應(yīng)用程序代碼之外仍可以提高WEB應(yīng)用系統(tǒng)性能的例子:
*使用web緩存裝制,如Squid提供的裝置
*將高訪問(wèn)量的網(wǎng)頁(yè)靜態(tài)化,以避免這些高訪問(wèn)量對(duì)數(shù)據(jù)庫(kù)進(jìn)行大量的調(diào)用
*通過(guò)負(fù)載平衡的方法來(lái)水平縮放WEB服務(wù)器的結(jié)構(gòu)*
*在水平縮放數(shù)據(jù)庫(kù)群及將它們分為讀寫服務(wù)器和只讀服務(wù)器后,還要對(duì)只讀服務(wù)器群負(fù)載平衡。*
*通過(guò)增加更多的硬件資源(CPU,內(nèi)存,磁盤等)縱向的縮放WEB及數(shù)據(jù)庫(kù)服務(wù)器群
*增加網(wǎng)絡(luò)的帶寬
負(fù)載測(cè)試
負(fù)載測(cè)試通常都被定義為給被測(cè)系統(tǒng)加上它所能操作的最大任務(wù)數(shù)的過(guò)程。負(fù)載測(cè)試有時(shí)也會(huì)被稱為“容量測(cè)試”,或者“耐久性測(cè)試/持久性測(cè)試”*
容量測(cè)試的例子:
*通過(guò)編輯一個(gè)巨大的文件來(lái)測(cè)試文字處理軟件
*通過(guò)發(fā)送一個(gè)巨大的作業(yè)來(lái)測(cè)試打印機(jī)
*通過(guò)成千上萬(wàn)的用戶郵箱來(lái)測(cè)試郵件服務(wù)器
*有一種比較特別的容量測(cè)試是叫作“零容量測(cè)試”,它是給系統(tǒng)加上空任務(wù)來(lái)測(cè)試的。
耐久性測(cè)試/持久性測(cè)試的的例子:
*在一個(gè)循環(huán)中不停的運(yùn)行客戶端超過(guò)一個(gè)擴(kuò)展時(shí)間段*。
負(fù)載測(cè)試的目的:
*找到一些在測(cè)試流程中前面的階段所進(jìn)行的粗略測(cè)試中沒有被找出的bugs,例如,內(nèi)存管理bugs,內(nèi)存泄露,緩沖器溢出等等。
*保證應(yīng)用程序達(dá)到性能測(cè)試中確定的性能基線。這個(gè)可以在運(yùn)行回歸試驗(yàn)時(shí),通過(guò)加載特定的最大限度的負(fù)載來(lái)實(shí)現(xiàn)。
盡管性能測(cè)試和負(fù)載測(cè)試似乎很像,但他們的目的還是有差異的。一方面,性能測(cè)試使用負(fù)載測(cè)試的技術(shù),工具,以及用不同的負(fù)載程度來(lái)測(cè)度和基準(zhǔn)化系統(tǒng)。在另一方面來(lái)講,負(fù)載測(cè)試是在一些已經(jīng)定義好的負(fù)載程度上進(jìn)行測(cè)試的,通常對(duì)系統(tǒng)加上最大負(fù)載之后,系統(tǒng)應(yīng)該仍然可以提供全部功能。
壓力測(cè)試
壓力測(cè)試是指通過(guò)對(duì)系統(tǒng)加載過(guò)度的資源,來(lái)使系統(tǒng)崩潰。進(jìn)行這個(gè)瘋狂行為的主要目的是為了保證系統(tǒng)出故障及可以適當(dāng)?shù)幕謴?fù),而這個(gè)恢復(fù)得怎么樣的特性則是叫做可恢復(fù)性。
當(dāng)性能測(cè)試需要的是一個(gè)可控制的環(huán)境和不斷的測(cè)度的時(shí)候,壓力測(cè)試則是令人歡喜的引起混亂及不可預(yù)測(cè)性。還是舉WEB應(yīng)用程序?yàn)槔?,下面是一些?duì)系統(tǒng)可行的壓力測(cè)試方法:
*兩倍的已經(jīng)基線的并發(fā)用戶數(shù)或者HTTP連接數(shù)
*隨機(jī)的關(guān)閉及重開連接到服務(wù)器上的網(wǎng)絡(luò)上集線器/路由器的端口(例如,可以通過(guò)SNMP命令來(lái)實(shí)現(xiàn))
*把數(shù)據(jù)庫(kù)斷線然后再重啟
*當(dāng)系統(tǒng)還在運(yùn)行的時(shí)候,重建一個(gè)RAID陣列
*WEB和數(shù)據(jù)庫(kù)服務(wù)器上運(yùn)行消耗資源(如CPU,內(nèi)存,磁盤,網(wǎng)絡(luò))的進(jìn)程
壓力測(cè)試并不是簡(jiǎn)單的為了一種破壞的快感而去破壞系統(tǒng),實(shí)際上它是可以讓測(cè)試工程師觀察系統(tǒng)對(duì)出現(xiàn)故障時(shí)系統(tǒng)的反應(yīng)。系統(tǒng)是不是保存了它出故障時(shí)的狀態(tài)?是不是它就突然間崩潰掉了?它是否只是掛在那兒啥也不做了?它失效的時(shí)候是不是有一些反應(yīng)*?在重啟之后,它是否有能力可以恢復(fù)到前一個(gè)正常運(yùn)行的狀態(tài)?它是否會(huì)給用戶顯示出一些有用的錯(cuò)誤信息,還是只是顯示一些很難理解的十六進(jìn)制代碼?系統(tǒng)的安全性是否為因?yàn)橐恍┎豢深A(yù)料的故障而會(huì)有所降低?這些問(wèn)題可以一直問(wèn)下去的。 #p#page_title#e#