大型網(wǎng)站性能測試方案的制定與實施(1)

一.內(nèi)容大綱

性能測試的準備:

* ??性能測試的目的是什么,即為啥要做性能測試?

* ??性能測試范圍定義(即一個系統(tǒng)中哪些模塊要做性能測試)

* ??性能測試的原則是什么?

* ??性能測試環(huán)境如何搭建?

* ??性能測試測試數(shù)據(jù)如何準備?

性能測試工具:

* ??性能測試工具的選擇

* ??LR原理

* ??性能測試怎么做-以LR工具為例說明,其他工具測試原理是一樣的可以類推?

* ??LR腳本調(diào)試流程

* ??LR腳本執(zhí)行過程

性能測試結(jié)果分析:

* ??如何獲取系統(tǒng)合理并發(fā)數(shù)?

* ??性能測試數(shù)據(jù)收集

* ??性能測試數(shù)據(jù)分析

* ??如何判斷性能測試達標?

* ??性能測試結(jié)果達不到指標要求怎么辦?

* ??性能測試經(jīng)驗和教訓(xùn)總結(jié)

二.性能測試的目的是什么

即為啥要做性能測試?

1.?驗證改進的性能結(jié)果,需要和以前的測試結(jié)果進行比對

這也是最常見的一個目的,開發(fā)人員對系統(tǒng)調(diào)優(yōu)后,需要測試人員配合去做性能測試,驗證這次優(yōu)化是否有效果,如果性能指標相比較之前的性能指標更好了,說明系統(tǒng)優(yōu)化的有效果反之說明調(diào)優(yōu)不理想。

2.?新的業(yè)務(wù)上線,驗證新系統(tǒng)能夠滿足系統(tǒng)的上線指標

這個一般創(chuàng)業(yè)公司遇到會多一些,一個系統(tǒng)從無到有上線,驗證新系統(tǒng)的能力是否能夠滿足某段時間內(nèi)系統(tǒng)使用要求,否則有可能一上線沒多少訪問量系統(tǒng)就掛了,那就悲劇了。

3.?驗證系統(tǒng)穩(wěn)定性

雖然我們做性能測試的時候經(jīng)常是跑1兩個小時或者幾十分鐘就ok了,但實際上對于代表這個系統(tǒng)能夠長期穩(wěn)定的工作,這個是不夠的,系統(tǒng)出現(xiàn)穩(wěn)定性問題一般有內(nèi)存泄漏、連接數(shù)泄漏、死鎖、游標不夠用等,這些問題在短時間的測試中可能不會暴露出來,所以為了驗證系統(tǒng)穩(wěn)定我們需要做穩(wěn)定性測試,對于穩(wěn)定性測試條件允許的情況一般用性能峰值并發(fā)數(shù)(即系統(tǒng)支持的最大并發(fā)數(shù))*7天*24小時,系統(tǒng)的吞吐量,平均響應(yīng)時間等各項性能指標均正常則認為系統(tǒng)穩(wěn)定性是ok的,但是對于一些公司它可能沒有那么多時間或資源提供給你做這么長時間的性能測試,那么又要驗證系統(tǒng)穩(wěn)定,可以參考性能峰值并發(fā)數(shù)*2天*24小時(或者至少壓測一個晚上的時間),基本保證系統(tǒng)穩(wěn)定。當(dāng)然對于比較重要的系統(tǒng)還是建議7*24小時比如12306的買票系統(tǒng),充分保證大數(shù)據(jù)量情況下的穩(wěn)定性。

4.?驗證系統(tǒng)的架構(gòu)是否存在瓶頸

有時開發(fā)架構(gòu)師會針對系統(tǒng)做一些架構(gòu)設(shè)計,那么不同的設(shè)計方案到底哪個好,我們通過性能測試可以驗證系統(tǒng)哪種設(shè)計方案更好,其次了解系統(tǒng)大概達到什么量級的并發(fā)后系統(tǒng)就會出現(xiàn)問題,了解系統(tǒng)架構(gòu)在達到性能峰值時哪塊會出現(xiàn)瓶頸,幫助開發(fā)針對性的進行系統(tǒng)調(diào)優(yōu)工作。

三.性能測試范圍定義

即一個系統(tǒng)中哪些模塊要做性能測試?

和整個兒開發(fā)團隊一起確認性能測試的范圍:

一般考慮的點有如下幾點:

1.?系統(tǒng)中被頻繁使用的功能、調(diào)用的接口等

2.?系統(tǒng)中涉及到大量數(shù)據(jù)庫讀、寫的功能

3.?大量讀寫系統(tǒng)緩存部分的功能,驗證緩存是否生效

總得來說應(yīng)該將用戶訪問量大的,頻繁操作數(shù)據(jù)庫的,系統(tǒng)核心功能這些地方考慮到性能測試范圍內(nèi)。

四.性能測試的原則是什么?

比較粗暴:模擬所有可能發(fā)生的最極端情況

可以這樣理解,性能測試不能只考慮安逸的情況下指標如何好,要多模擬極端環(huán)境能否支持,因為可能發(fā)生的極端環(huán)境一旦發(fā)生,系統(tǒng)撐不下去使用不了影響是很大的。

五.性能測試環(huán)境如何搭建?

1.?硬件環(huán)境(參考生產(chǎn)環(huán)境搭建并考慮自身的硬件成本)

2.?軟件環(huán)境(配置版本保持一致)

3.?網(wǎng)絡(luò)環(huán)境(參考生產(chǎn)環(huán)境盡可能不要跨網(wǎng)段)

但是測試環(huán)境的投入是個大問題,很多公司的性能測試環(huán)境和生產(chǎn)創(chuàng)建差異很大,我們來看看不同級別的公司性能測試做法:

第一種:財大氣粗的公司:就是即將正式上線使用的生產(chǎn)環(huán)境,業(yè)務(wù)上線之前把線上數(shù)據(jù)導(dǎo)出來在測試環(huán)境做性能測試這是模擬的比較好的測試環(huán)境;

第二種:中檔公司:應(yīng)該要每個環(huán)節(jié)必須要有,一般性能測試環(huán)境組成是由web服務(wù)器、緩存服務(wù)器、數(shù)據(jù)庫服務(wù)器、負載均衡服務(wù)器等,這些環(huán)境都應(yīng)該要在測試環(huán)境中進行部署,保證麻雀雖小五臟俱全;

第三種:比較窮的公司:線上環(huán)境和測試環(huán)境有明顯差異:比如一共就兩臺機器就讓你又部署應(yīng)用程序又壓測的,這種還能不能做性能測試呢?

如果程序很爛,就算部署機器很少但是也是能發(fā)現(xiàn)程序明顯的問題的,所以這種情況下做性能測試還是有意義的,可以基于現(xiàn)有環(huán)境下把程序做到最優(yōu)。

那么如何去做環(huán)境的搭建呢:

首先我們要分析系統(tǒng)真實的運行網(wǎng)絡(luò)拓撲環(huán)境,明確公司可對性能測試進行投入的軟硬件資源,并且盡量保證性能測試環(huán)境和功能測試環(huán)境分開;

其次根據(jù)現(xiàn)有可支配的資源去設(shè)計性能測試環(huán)境的架構(gòu),如可以用visio等軟件來畫出從前端服務(wù)器到應(yīng)用控制服務(wù)器到負載、數(shù)據(jù)庫等服務(wù)器,每個要部署幾個分別部署在哪臺機器上,做到部署之前看圖一目了然

然后對于部署的應(yīng)用軟件應(yīng)當(dāng)保證與生產(chǎn)環(huán)境配置一致,如apache版本、mysql版本、操作系統(tǒng)版本、jdk環(huán)境版本等等,盡量保證軟件環(huán)境與生產(chǎn)環(huán)境的一致性

對于軟件的網(wǎng)絡(luò)環(huán)境,參考生產(chǎn)環(huán)境的網(wǎng)絡(luò)結(jié)構(gòu)和搭建,做到盡可能不要跨多個網(wǎng)段,如果不在一個網(wǎng)段,等于是跨網(wǎng)段做壓力測試,這樣請求有可能會被路由器或者網(wǎng)關(guān)之類的弄的變慢,即壓力無法充分的達到服務(wù)端上去。一般性能測試優(yōu)化的點都是操作系統(tǒng)、數(shù)據(jù)庫、程序?qū)用娴模W(wǎng)絡(luò)這個層面的東西一般不作為性能測試主要優(yōu)化的環(huán)節(jié),一般網(wǎng)絡(luò)都是負責(zé)機房的網(wǎng)絡(luò)工程師去負責(zé)監(jiān)控和調(diào)優(yōu)的,所以性能測試盡量不要跨多個網(wǎng)段,不要因為跨網(wǎng)段產(chǎn)生一些影響導(dǎo)致分析的結(jié)果出現(xiàn)偏差。(未完待續(xù))

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容