qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          半桶水談性能測試

           首先在我的職業(yè)生涯中,做性能測試的機會不多,發(fā)現(xiàn)性能瓶頸的次數(shù)更少,確切的說只有2次。隨著大型分布式系統(tǒng),特別是Web App和云計算的推廣,性能測試的需求會更加迫切。今天我這個半桶水就來談?wù)勑阅軠y試的話題,歡迎大家一起來討論。

            什么是性能測試?

            性能測試是通過自動化的測試工具模擬多種正常、峰值以及異常負載條件來對系統(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)  編輯  收藏 所屬分類: 性能測試

          <2012年9月>
          2627282930311
          2345678
          9101112131415
          16171819202122
          23242526272829
          30123456

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 楚雄市| 南京市| 南城县| 道孚县| 郎溪县| 承德县| 武穴市| 紫云| 新密市| 阿城市| 兴业县| 苏尼特右旗| 彰武县| 当涂县| 连城县| 安徽省| 东乌| 久治县| 夏河县| 扶绥县| 大竹县| 美姑县| 松滋市| 云霄县| 盱眙县| 仲巴县| 姜堰市| 礼泉县| 河曲县| 长汀县| 凤翔县| 昔阳县| 拉萨市| 仙居县| 淮阳县| 达州市| 甘孜| 榆林市| 腾冲县| 仁化县| 宁陕县|