半桶水談性能測試
什么是性能測試?
性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統(tǒng)的各項性能指標進行測試。
負載測試和壓力測試都屬于性能測試,兩者可以結(jié)合進行。
通過負載測試,確定在各種工作負載下系統(tǒng)的性能,目標是測試當負載逐漸增加時,系統(tǒng)各項性能指標的變化情況。
壓力測試是通過確定一個系統(tǒng)的瓶頸或者不能接收的性能點,來獲得系統(tǒng)能提供的最大服務(wù)級別的測試。
中國軟件評測中心將性能測試概括為三個方面:應(yīng)用在客戶端性能的測試、應(yīng)用在網(wǎng)絡(luò)上性能的測試和應(yīng)用在服務(wù)器端性能的測試。
通常情況下,三方面有效、合理的結(jié)合,可以達到對系統(tǒng)性能全面的分析和瓶頸的預(yù)測。
注意這里提到了三個方面,但平常我們往往注意力集中在服務(wù)端的性能而忽略了客戶端和網(wǎng)絡(luò)的性能。
下面是我這個半桶水來談?wù)勔恍w會:
一、目的/需求
為什么需要做性能測試或此次做性能測試的目的是什么?
1、新項目/產(chǎn)品,首次發(fā)布,需要做基準測試
2、使用中的產(chǎn)品,重構(gòu)了某個模塊/某個模塊使用了新的技術(shù),需要一個評估
3、使用中的產(chǎn)品,用戶量爆發(fā)了,用戶量從百萬級增加到千萬級
4、增加了一個或多個頁面,需要對頁面的Latency進行一次測試
在測試開始前,需要有準備工作,對此次性能測試的目的做詳細了解,確定需要收集哪些數(shù)據(jù),關(guān)注哪些性能指標。
二、環(huán)境部署
性能測試需要一個干凈的環(huán)境,這個環(huán)境包括硬件、網(wǎng)絡(luò)、操作系統(tǒng)、被測試的系統(tǒng),數(shù)據(jù)庫。
那在開始前,需要把這個環(huán)境部署準備好,最好是能模擬線上的系統(tǒng),同時這也是一個排除干擾的過程,畫出一張架構(gòu)圖。
1、硬件,使用怎樣的服務(wù)器,理想情況是和生產(chǎn)環(huán)境一樣的服務(wù)器,需要配置負載均衡么
2、網(wǎng)絡(luò), 是否需要模擬各種網(wǎng)絡(luò),是否需要雙網(wǎng)卡,內(nèi)部網(wǎng)絡(luò)是否會影響到其他員工正常使用
3、操作系統(tǒng),windows/linux,是采用默認設(shè)置還是已經(jīng)有參考的設(shè)置,哪些操作系統(tǒng)的服務(wù)需要關(guān)閉,linux中的ulimit如何設(shè)置
4、被測試系統(tǒng),邀請架構(gòu)師的參與,系統(tǒng)使用怎么樣的架構(gòu),是否使用了Web Server——IIS/Apache/Tomat,他們的最優(yōu)配置是怎么樣的
5、數(shù)據(jù)庫,站內(nèi)搜索數(shù)據(jù)庫是否和訂單數(shù)據(jù)庫分開,數(shù)據(jù)庫是否有緩存,數(shù)據(jù)庫是否使用主從式
三、場景和負載模式
此次性能測試需要模擬怎樣的場景:
1、購物網(wǎng)站秒殺活動,使用恒負載模式,設(shè)定集合點,用戶并發(fā)
2、系統(tǒng)正常的使用,從每天的監(jiān)控系統(tǒng)中分析,例如看到購物高峰是中午,使用單步負載模式(Ram-up/down),每間隔時間內(nèi)用戶增加多少,到購物高峰時間是恒負載,過了高峰后用戶開始減少
3、系統(tǒng)改版,使用基于目標的負載模式,根據(jù)歷史數(shù)據(jù)設(shè)定目標,或例如設(shè)定CPU/Memory最大到85%
確定好了場景和負載模式,才能正確的生成用例/腳本。
四、性能指標
此次性能測試需要收集哪些性能指標和數(shù)據(jù):
1、CPU使用率
2、Memory使用率
3、QPS
4、響應(yīng)時間
5、網(wǎng)絡(luò)IO
6、文件IO
7、數(shù)據(jù)庫IO
8、最大支持用戶數(shù)
以上指標并不是都要收集,要根據(jù)具體的場景來決定。
五、性能測試工具
提到性能測試,很多測試人的第一概念就是工具,比如商業(yè)流行的Loadrunner,開源流行的Jmeter,但是很少人注重上面提到的四點, 所謂“磨刀不誤砍材工”,沒有上面的設(shè)計分析,僅僅使用工具跑出結(jié)果是無法分析出性能的瓶頸,不可靠的數(shù)據(jù)結(jié)果會大大增加排查工作,這些數(shù)據(jù)往往會受到很 多質(zhì)疑。
工具的使用:
參數(shù)化
Loadrunner選擇哪個協(xié)議
Loadrunner的關(guān)聯(lián)
Loadrunner的Controller/Agent
Jmeter的Remote testing
工具的使用技能僅僅是性能測試里的一小部分,切不可只關(guān)注工具使用。
是否每次的性能測試都需要用上大型的工具呢,某個頁面的響應(yīng)時間是否可以使用其他輕量的工具,例如一些瀏覽器插件Httpwatch,Yahoo YSlow,Google speed tracer;
是否可以自己寫些有針對性的小工具,根據(jù)實際情況定義出真實的Page load time,而不僅僅是服務(wù)器的響應(yīng)時間。
六、數(shù)據(jù)收集與分析
性能測試的最終目的是通過數(shù)據(jù)收集分析出系統(tǒng)是否存在瓶頸,所以數(shù)據(jù)收集和分析是一個很重要的過程。
分析的過程需要團隊成員的參與,例如架構(gòu)師、DBA、開發(fā)人員,是一個長期的過程,通過調(diào)整測試腳本,生成不同的數(shù)據(jù)對比。
七、我所發(fā)現(xiàn)的2次問題
1、雙網(wǎng)卡問題,一個新改版的項目,上線后在峰值的時候總有機器崩潰或性能大幅下降,最后發(fā)現(xiàn)是服務(wù)器只使用了單網(wǎng)卡,這個明顯就是上面提到的排除干擾沒做好(配置沒有檢查),這次性能測試是失敗的。
2、子進程崩潰,64位系統(tǒng)基準測試,通過與團隊成員的不斷溝通,排除各種設(shè)置干擾、確定硬件和軟件配置、加入profile工具,與32位系統(tǒng)的對比。
八、后續(xù)優(yōu)化
性能測試僅僅是個開始,性能測試最終目的是發(fā)現(xiàn)和解決系統(tǒng)的瓶頸,這就涉及到優(yōu)化,而優(yōu)化的過程往往在系統(tǒng)設(shè)計階段就需要考慮。
1、異步獲取數(shù)據(jù)
2、建立緩存
3、分布式
4、文件分解
九、推薦
1、基于用戶體驗的性能測試,User Experience, Not Metrics
更貼近用戶使用場景的性能測試,里面使用的工具主要是IBM的Rational TestStudio
http://www.cnblogs.com/mayingbao/archive/2008/04/11/1148510.html
2、軟件性能測試過程詳解與案例剖析(第二版)
3、要做好性能測試,該掌握些什么?
http://www.51testing.com/html/23/n-92923.html
http://www.51testing.com/html/93/category-catid-93.html
posted on 2012-09-20 10:40 順其自然EVO 閱讀(243) 評論(0) 編輯 收藏 所屬分類: 性能測試