性能測試測試環(huán)境搭建
在進行性能則試前,需要完成性能測試的搭建工作,一般包括硬件環(huán)境、軟件環(huán)境及網(wǎng)絡(luò)環(huán)境,可以要求配置和開發(fā)工程師協(xié)助完成,但是作為一個優(yōu)秀性能測試工程師,這也是你的必備技能之一。
性能測試的環(huán)境準(zhǔn)備
性能測試環(huán)境與功能測試環(huán)境的區(qū)別
那么性能測試環(huán)境與功能測試環(huán)境有什么不同呢?性能測試對測試環(huán)境的干凈、獨立性要求更高,更為嚴格。對于一個相對較規(guī)范的公司,都會建立其獨立的研發(fā)環(huán)境、測試環(huán)境、線網(wǎng)環(huán)境(最終運行軟件的環(huán)境)。
(
這里多扯一點,系統(tǒng)可以分為C/S架構(gòu)的系統(tǒng)與B/S架構(gòu)的系統(tǒng),C/S架構(gòu)的系統(tǒng)又可以分為兩種,第一種是基本不用與服務(wù)器連接的,比如我們用到的java虛擬機JVM,photo shop平面處理軟件,我們可以開啟軟件更新功能,這時軟件向服務(wù)器發(fā)請求,查當(dāng)前版本是否是服務(wù)器端發(fā)布的最新版本,然后,提示用例是否需要更新或下載最新版本的軟件。當(dāng)然,我們也可以關(guān)閉更新功能或不檢測更新。那么這個軟件一樣可以在電腦上運行。對于這類軟件,我的主要測試環(huán)境就是用戶的電腦。不同硬件配置、不同操作系統(tǒng)下對軟件一系列,從安裝使用到卸載。除了驗證軟件與硬件和系統(tǒng)的兼容性能,還需要驗證與其它軟件是否兼容。
第二種類型的C/S軟件要時刻與服務(wù)器與連接,比如我的在線網(wǎng)游,QQ聊天工具等。從軟件的啟動就需要與服務(wù)器進行連接,對于此類軟件,我們測試環(huán)境的重點依然是用戶電腦,但服務(wù)器端必須也有一個相對應(yīng)的測試環(huán)境支撐。
對于B/S的系統(tǒng),我們測試環(huán)境的重點就要由用戶電腦轉(zhuǎn)為服務(wù)器端了,因為系統(tǒng)的所有功能都是由服務(wù)器端傳遞給用戶的,所以需要驗證服務(wù)器傳遞來的功能是否可用,以及功能的容錯能力等。
)
再回到測試環(huán)境的問題上,對于一些企業(yè)為了節(jié)約資源,進行功能測試的測試環(huán)境,一臺服務(wù)器可以運行多個系統(tǒng),通過技術(shù)手段可以使系統(tǒng)之間是不會相互影響的(以前公司就是一臺服務(wù)器上跑多個tomcat)。因為功能測試的重點大于系統(tǒng)對客戶端發(fā)來的請求是否可以進行正確的處理。
那么性能測試為什么對系統(tǒng)的環(huán)境要求干凈、獨立呢?性能測試是要對整個系統(tǒng)運行的軟件硬件環(huán)境進行測試的,如果某環(huán)境下運行多個系統(tǒng),就很難判斷其中的某個環(huán)境對資源的占用情況。
性能測試環(huán)境包含內(nèi)容
一般web應(yīng)用系統(tǒng)分為3層架構(gòu)(在系統(tǒng)架構(gòu)一章中有介紹)
* 表現(xiàn)層(web服務(wù)器)
* 業(yè)務(wù)邏輯層(應(yīng)用服務(wù)器)
* 數(shù)據(jù)層(數(shù)據(jù)庫服務(wù)器)
性能測試環(huán)境包含內(nèi)容:
硬件:服務(wù)器、客戶端、交換機等。
軟件:數(shù)據(jù)庫、中間件、被測系統(tǒng)、操作系統(tǒng)等。
網(wǎng)絡(luò):有線/無線/寬帶、網(wǎng)絡(luò)協(xié)議等。
如何保證測試環(huán)境與真實生產(chǎn)的一致性
保證性能測試與真實生產(chǎn)環(huán)境的一致性,具體從以下三個方面來看:
1、硬件環(huán)境,包括服務(wù)器環(huán)境、與網(wǎng)絡(luò)環(huán)境
如服務(wù)器的型號以及是否和其它應(yīng)用程序共享此服務(wù)器,是否在集群環(huán)境下,是否通過BIGIP進行負載均衡,客戶使用的硬件配置情況,使用的交換機型號,網(wǎng)絡(luò)傳輸速率。
2、軟件環(huán)境
版本一致性
包括包括操作系統(tǒng)、數(shù)據(jù)庫、中間件的版本,被測系統(tǒng)的版本。
配置一致性
系統(tǒng)(操作系統(tǒng)/數(shù)據(jù)庫/中間件/被測試系統(tǒng))參數(shù)的配置一致,這些系統(tǒng)參數(shù)的配置有可能對系統(tǒng)造成巨大的影響。所以,除了保證測試環(huán)境與真實環(huán)境所使用的軟件版本一致,也要關(guān)注其參數(shù)的配置是否一致。
3、使用場景的一致性
基礎(chǔ)數(shù)據(jù)的一致性
包括預(yù)測的業(yè)務(wù)數(shù)據(jù)量,以及數(shù)據(jù)類型的分配。很簡單的一個列子,一個系統(tǒng)的數(shù)據(jù)庫只有10條數(shù)據(jù)和一條數(shù)據(jù)庫里幾千萬條數(shù)據(jù),我們在對其進行性能測試時,得到的性能指標(biāo)可能會有非常大的差別。
為了保證每次測試環(huán)境的更加一致性,磁盤的使用情況以及磁盤的碎片情況也會或多或少的影響的性能。
使用模式的一致性
盡量模擬真實場景下用戶的使用情況,其實,我們在做性能測試前期的需求分析,其主要目的也就是為了更真實的模擬用戶的使用情況。
性能測試環(huán)境的實施策略
上面講測試環(huán)境與生產(chǎn)環(huán)境保持一致所需要注意的內(nèi)容。其實在實際的測試中,我們很難搭建出與生產(chǎn)環(huán)境完全一致的一個測試環(huán)境,除非我們暫停生產(chǎn)環(huán)境用戶于進行性能測試,這往往是不可能。一方面某些生產(chǎn)環(huán)境是不允許被暫停的,另一方面也為生產(chǎn)環(huán)境的安全性考慮。
性能測試環(huán)境并不像功能測試環(huán)境,為了節(jié)省資源可以一臺服務(wù)器上運行多個系統(tǒng)。由于性能測試的特殊性,整個測試環(huán)境需要在嚴格的獨立監(jiān)控下管理,在很多情況下,我們很難申請到足夠的且一致的資源(說白了就是老板是否愿意出錢給你買服務(wù)器搭建系統(tǒng))。對于一個并未上線的項目,其生產(chǎn)環(huán)境的配置也屬于暫定狀態(tài),性能測試的目的就是為了確定具體生產(chǎn)環(huán)境的硬件配置。這個時候更不可能用過高的配置來搭建性能環(huán)境(除非現(xiàn)成的環(huán)境放著不用)。
我們一般通過兩種策略來搭建性能測試環(huán)境(預(yù)估方式均有誤差)
1、通過建模的方式實現(xiàn)低端硬件對高端硬件的模擬
通過配置測試來計算不同配置下的硬件性能和系統(tǒng)處理能力的關(guān)系,從而推導(dǎo)出滿足系統(tǒng)性能的真實配置情況,這種模擬需要精確的建模,模型的采樣點越多,那么得到的結(jié)果越精確,從而將在低端配置下的性能指標(biāo)通過該模型轉(zhuǎn)化為高端配置下的最終預(yù)計性能指標(biāo)。
例如:搭建一個低端環(huán)境,首先需要對這個環(huán)境的CPU和內(nèi)存進行單獨的性能基準(zhǔn)測試,同過在不同的配置的性能測試,得到一個基準(zhǔn)信息列表,當(dāng)然,在進行這個性能測試的過程中,我們要確定硬件是系統(tǒng)的瓶頸。如果只用一個CUP,在性能測試過程中,其使用率很低,但得到的性能數(shù)據(jù)都非常底,這起碼說明CUP不是系統(tǒng)的平靜,這種情況下就無法得到想要的基準(zhǔn)值。
如上圖,在一顆CPU情況下,運行100個用戶且CUP使用率接近飽和(100%)。在增加至兩顆CUP的情況下,可以運行190個用戶且UPU使用率接近飽和(100%),以此做記錄,那么我們就可以推算出運行800個用戶需要多少顆CUP。
如果你在實際應(yīng)用中使用的CUP型號及其頻率并非完全一樣,這個時候可以使用EVEREST工具計算每種CUP的得分,對其性能進行評估。
內(nèi)存也可以使用此方法進行測試推導(dǎo),這里需要我們多進行試驗,對硬件的性能以及對整個項目的結(jié)構(gòu)都要做深入的了解,以便盡量減少誤差。
2、通過集群的方式計算
對于較大的系統(tǒng)來說,單臺服務(wù)器的處理能力是有限的,通常都會采用集群的方式來進行負載均衡,完成對海量請求的處理。雖然無法獲得整體集群的測試環(huán)境,但是可以對集群上的一個節(jié)點進行性能測試,得出該節(jié)點的處理能力,再計算每增加一個節(jié)點的性能損失,同樣也可以能過建模的方式得到大型負載均衡情況下的預(yù)計性能指標(biāo)。
例如:首先在單臺服務(wù)器上獲得具體的性能指標(biāo),每臺服務(wù)器能夠承受500用戶并發(fā),平均TPS為60,響應(yīng)時間為2秒,接著,添加負載均衡策略,再次測試負載策略下的數(shù)據(jù)損耗。得出數(shù)據(jù)后添加1臺負載均衡服務(wù)器,測試在兩臺服務(wù)器下每臺服務(wù)器的性能指標(biāo),以此類推,可以得到下表:
隨著負載均衡服務(wù)器的添加,平均每臺服務(wù)器的處理能力會逐漸穩(wěn)定,從而了解在什么情況下需要多少臺負載均衡服務(wù)器。
對于測試環(huán)境的搭建,建議生成專門的文檔進行管理,并進行配置管理,確保對測試環(huán)境做到基線控制。
------------------------------------------
這個性能測試系列以理論與性能測試的整體講解為主,市面上的大部分書籍借著性能測試的表皮在講性能測試工具loadrunner,那我何不找份loadrunner使用手冊來看更好。
總結(jié):我們得測試環(huán)境盡量要模擬真實環(huán)境 如果硬件達不到 我們可以采用概率論的方法 進行估算,但是軟件方面環(huán)境必須一致,然后根據(jù)我們硬件的配置 進行概率分析后推測,有條件的公司可以進行一次驗證。
posted on 2014-02-10 10:52 順其自然EVO 閱讀(1051) 評論(0) 編輯 收藏 所屬分類: 性能測試