国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

軟件測試在B/S架構(gòu)系統(tǒng)中進行性能優(yōu)化的應(yīng)用研究

2012-11-21 10:47彭振龍
韓山師范學(xué)院學(xué)報 2012年6期
關(guān)鍵詞:腳本事務(wù)服務(wù)器

彭振龍

(泉州師范學(xué)院陳守仁工商信息學(xué)院,福建泉州 362000)

1 性能測試概念及其必要性

隨著互聯(lián)網(wǎng)技術(shù)及應(yīng)用的飛速發(fā)展,軟件系統(tǒng)的性能已是衡量軟件質(zhì)量的一個重要指標.根據(jù)CNNIC發(fā)布的第29次報告,截止2011年底,中國的網(wǎng)民數(shù)量已達到5.13億,網(wǎng)站數(shù)量達到229.6萬,CN的域名注冊數(shù)量達353萬[1].所有這些基于B/S架構(gòu)的網(wǎng)絡(luò)服務(wù)都面臨性能問題,如大型電子商務(wù)網(wǎng)站促銷或高考分數(shù)公布,人們會在同一時間要求服務(wù)器響應(yīng)服務(wù),瞬時負載有可能達到或超過系統(tǒng)所能承受的極限,導(dǎo)致系統(tǒng)響應(yīng)緩慢甚至癱瘓,因此對網(wǎng)絡(luò)系統(tǒng)進行測試和優(yōu)化顯得尤為重要.而性能測試是和功能測試相對應(yīng)的概念,功能測試是指為確認軟件是否能完成某項功能而進行的一系列測試,而性能測試則是指為確認軟件執(zhí)行效率而實施的一系列測試行為,這包括在一定負載和壓力下軟件系統(tǒng)的執(zhí)行效率,包括服務(wù)響應(yīng)時間、連接數(shù)、穩(wěn)定性、安全性、可擴展性、資源占用率等項目和指標[2-3].

利用負載測試(load testing)和壓力測試(stress testing)等性能測試方法[2-5],能有效地模擬出軟件系統(tǒng)在現(xiàn)實環(huán)境中的應(yīng)用情況,通過分析軟件在不同壓力和負載下的表現(xiàn),如CPU占用率、內(nèi)存使用率、客戶端響應(yīng)時間、網(wǎng)絡(luò)通信數(shù)據(jù)率等,根據(jù)工程的分析方法,找到軟件系統(tǒng)架構(gòu)、功能模塊等方面的瓶頸,并找出軟件系統(tǒng)能提供的最大服務(wù)級別,從而為軟件系統(tǒng)的全面優(yōu)化提供基本參考.

2 性能測試工具及重要概念

在自動化測試出現(xiàn)以前,性能測試工作主要依靠多臺單機,在統(tǒng)一指揮下,同一時刻點擊某個操作,以達到模擬并發(fā)的目的.自從性能測試的自動化工具出現(xiàn)后,這一工作變得簡單了許多.目前,商業(yè)性的工具主要有Loadrunner、QAload、SilkPerformance、Webload,Rational Performance Tester(RPT),而免費的測試工具主要有OpenSTA、微軟的WAST(Web Application Stress Tool).其中l(wèi)oadrunner以其圖形化界面直觀友好,支持協(xié)議眾多,可預(yù)測并調(diào)優(yōu)系統(tǒng),功能強大而深受好評[6].下面以loadrunner為例進行討論,為了后面論述的方便先介紹一下loadrunner在性能測試中所涉及的重要概念.

并發(fā):指有多個業(yè)務(wù)操作在同一時間發(fā)生.

事務(wù):用于度量服務(wù)器響應(yīng)時間的任務(wù)或操作集.

虛擬用戶(Vuser):是指通過loadrunner軟件模擬出真實用戶,通常在同一臺機器中可以模擬出很多虛擬用戶.

吞吐量:一定時間內(nèi),處理客戶端請求的數(shù)量,直接反映了軟件的性能承載能力.

思考時間:用戶在執(zhí)行兩個連續(xù)操作期間等待的時間.

集合點:用于同步虛擬用戶以便恰好在同一時刻執(zhí)行任務(wù).

3 性能測試步驟

3.1 測試環(huán)境的配置

測試環(huán)境主要包括服務(wù)器的硬件環(huán)境如CPU、硬盤、內(nèi)存、網(wǎng)卡、網(wǎng)絡(luò)帶寬等,軟件環(huán)境主要包括操作系統(tǒng)、數(shù)據(jù)庫、web服務(wù)器軟件等.同時還需要根據(jù)用戶使用手冊列出的在某個并發(fā)數(shù)下的服務(wù)響應(yīng)時間,內(nèi)存及CPU的占用率等要求達到的性能指標,以便在進行測試結(jié)果分析時參考.

3.2 創(chuàng)建與編輯腳本

Loadrunner允許用戶通過實際的操作來錄制腳本,當然對于非常熟悉loadrunner腳本編寫的用戶,也可以手動編輯腳本.對于B/S系統(tǒng),在錄制腳本前,需選擇“web(http/html)”協(xié)議,如圖1所示.之后設(shè)置錄制參數(shù),如圖2所示.完成后,點擊OK,則啟動web服務(wù),開始錄制腳本.錄制期間,用戶通過瀏覽器與服務(wù)正常會話,loadrunner會記錄下用戶的所有動作.用戶可以點擊錄制工具條上的“”,以停止錄制,如圖3所示,此時loadrunner自動生成測試腳本.

3.3 腳本修改

腳本錄制完成后,需要對其進行完善,比如加入集合點、加入思考時間、加入其他事務(wù)等.腳本修改的另一個重要內(nèi)容就是“參數(shù)化”.所謂的參數(shù)化是指對不允許重復(fù)輸入的數(shù)據(jù),需要用變量(參數(shù))代替固定文本.例如在測試注冊事務(wù)過程中,錄制的腳本如下:

Web_submit_form(“register.jsp”,

圖1 loadrunner腳本錄制協(xié)議選擇框

“Snapshot=t2.inf”,

ITEMDATA,

“Name=unitname”,“value=jxndpzl”,ENDITEM,

LAST);

其中的“value=jxndpzl”是錄制腳本時注冊用戶名.顯然,在實際業(yè)務(wù)中不允許再次注冊一個jxndpzl的用戶名.這就導(dǎo)致在腳本回放或者要模擬多個用戶同時注冊時,腳本無法成功提交.因此需要對腳本進行參數(shù)化,即將

“Name=unitname”,“value=jxndpzl”,ENDITEM.改為

“Name=unitname”,“value={punitname} ”,ENDITEM.

其中的punitname即是代表注冊用戶名的參數(shù),它可以是一個文本文件或數(shù)據(jù)庫,具體的設(shè)置可參見文獻[2].

3.4 場景設(shè)置

腳本錄制完成后,由loadrunner的controller負責(zé)測試場景的設(shè)置.如Vuser的生成數(shù)量,持續(xù)運行時間、加壓及減壓規(guī)則等.還有其他用于腳本調(diào)試和運行控制的設(shè)置,如連接超時、運行、中斷、停止、中間檢查點、路徑轉(zhuǎn)換、監(jiān)視器設(shè)置等.這些設(shè)置都將更好地幫助模擬真實的使用環(huán)境,并且更好地理解性能測試的過程,從而找出性能瓶頸.以下為場景設(shè)置的一個例子:

(1)Vuser的數(shù)量為200

(2)每5 s增加10個Vuser

(3)Vuser登錄后,持續(xù)運行時間為5 min

(4)思考時間為15 s,并在30%~100%之間隨機

(5)每2 s退出12個Vuser

很顯然,可以設(shè)置不同策略,設(shè)置不同的場景,同一場景中也可以加載不同的事務(wù).

3.5 腳本運行及回放

根據(jù)前面設(shè)置的場景,執(zhí)行已經(jīng)錄制好的腳本.實際上為了得到更為真實的測試結(jié)果,需要設(shè)置許多不同的場景進行測試,而錄制好的腳本不用修改或只需要簡單的微調(diào)就可以,這樣就為后續(xù)的結(jié)果分析準備了更多的數(shù)據(jù).

3.6 結(jié)果分析

Loadrunner擁有專門的分析工具Analysis,它利用數(shù)學(xué)及統(tǒng)計學(xué)原理,具有強大的數(shù)據(jù)分析能力,而且還能將數(shù)據(jù)分析的結(jié)果通過可視化的方式展示出來.圖4為Analysis界面.

圖2 錄制參數(shù)設(shè)置框

圖3 腳本錄制工具條

4 應(yīng)用實例分析

下面,通過一個實際例子說明loadrunner進行性能測試并調(diào)優(yōu)的過程.筆者測試的是一個電子政務(wù)系統(tǒng).限于文章篇幅,略去了腳本錄制及修改過程.測試場景設(shè)置如下.

圖4 loadrunner Analysis主界面

4.1 事務(wù)說明

只測試了三個事務(wù).(1)登錄事務(wù),即后文的vuser_init_Transaction;(2)點擊一般案件登記,即后文的“點擊一般案件登記”事務(wù);(3)一般案件的保存事務(wù),即后文的“點擊保存”事務(wù).同時,設(shè)計了五個場景.(1)50個用戶并發(fā);(2)100個用戶并發(fā);(3)200個用戶并發(fā)(主測試機和負載生成器各100個);(4)300個用戶并發(fā)(主測試機100個,負載生成器200個);(5)500個用戶并發(fā)(主測試機200個,負載生成器300個),共有15個事務(wù)(見表1)限于篇幅,點擊一般案件登記事務(wù)只列出了res100.lrr,而res100and100.lrr即表示主附測試機各100個Vuser,共200個用戶同時登錄,在表中省略,以此類推,點擊保存事務(wù)與此一樣.

表1 事務(wù)名稱及說明

4.2 負載方案

負載方案為同時加載所有Vuser,減壓方式為5 min內(nèi)依次減為0,實際測試過程中,得到的實際Vuser情況如表2所示.

表2 Vuser用戶數(shù)量表

從表2中可以看出,當總Vuser數(shù)量在200、300、500時,最大值并不能達到相應(yīng)的數(shù)量,說明負載生成器本身無法達到在某個時間內(nèi)生成相應(yīng)數(shù)量Vuser的要求.

4.3 測試結(jié)果數(shù)據(jù)及分析

測試過程中,選擇重點需要關(guān)注的平均事務(wù)響應(yīng)時間、吞吐量、Vuser連接數(shù)等數(shù)據(jù)進行分析.限于篇幅,只選擇了點擊“保存”事務(wù)在不同場景下的數(shù)據(jù)進行分析.平均事務(wù)響應(yīng)時間見表3.

表3 平均事務(wù)響應(yīng)時間表

從表3中可以看出,平均響應(yīng)時間隨著用戶數(shù)量的增加而增加,但根據(jù)最大值顯示,當用戶數(shù)達到300、500時,分別為19.778 s及21.086 s,這個值是比較大的,說明系統(tǒng)在這一壓力下已經(jīng)出現(xiàn)了一定的瓶頸.

表4 不同負載壓力下的每秒點擊數(shù)統(tǒng)計

根據(jù)表4的統(tǒng)計數(shù)據(jù),當Vuser數(shù)為300、500時,平均點擊數(shù)分別為561.984,560.913,這顯然于實際的應(yīng)用不相符,說明當Vuser為500時,系統(tǒng)出現(xiàn)了明顯的瓶頸,導(dǎo)致服務(wù)器無法接受點擊.

由表5可知當Vuser為500時,服務(wù)器的平均吞吐量反而比Vuser為300時的平均吞吐量更少,說明系統(tǒng)出現(xiàn)了嚴重的瓶頸,已經(jīng)無法正常處理用戶請求了.

同樣的當Vuser為500時,平均連接數(shù)反而比Vuser為300時小,其最大值也只多3(見表6).其他如Vuser數(shù)為50,100,200時,系統(tǒng)的最大連接數(shù)也沒能達到,這有可能是負載生成有服務(wù)器有瓶頸,導(dǎo)致用戶丟失,也有可能是服務(wù)器系統(tǒng)已經(jīng)無法正常接受用戶的連接,則需要加大用戶連接數(shù).

表5 不同負載下的服務(wù)器吞吐量數(shù)據(jù)

表6 服務(wù)器連接數(shù)

4.4 結(jié)果分析

通過對平均事務(wù)響應(yīng)時間、吞吐量、點擊數(shù)、服務(wù)器連接數(shù)等幾個數(shù)據(jù)的分析,基本可以判斷,在排除其他問題的前提下,該系統(tǒng)能接受的用戶并發(fā)數(shù)為300以下.從表2~6的數(shù)據(jù)可以看出,平均值、最大值都存在瓶頸,而該系統(tǒng)的最優(yōu)性能(最大能承受的并發(fā)用戶數(shù),在此條件下其他事務(wù)的執(zhí)行表現(xiàn)),則需要反復(fù)地改變測試參數(shù)進行嘗試.

就用戶登錄、案件登記、保存三個事務(wù)而言,耗時最長的是用戶登錄,這主要是因為用戶登錄需要在后臺數(shù)據(jù)庫進行查重,這不但需要進行一定的IO操作,而且不同的查重算法也會有不同的性能表現(xiàn).后來與軟件開發(fā)人員進行了研究,優(yōu)化了文件的IO操作及用戶名登錄的查重算法,使得服務(wù)器響應(yīng)時間進一步減少.

在實際測試過程中,當負載運行時,監(jiān)控測試機的CPU使用率幾乎都是100%,這可能導(dǎo)致很多虛擬用戶無法發(fā)送出去,這一點在表2中也得到了印證.這必然會影響測試結(jié)果的準確性.同時,通過監(jiān)視網(wǎng)絡(luò)、網(wǎng)卡在測試期間的性能,但并沒有發(fā)現(xiàn)瓶頸問題.這可能是因為此次測試是在局域網(wǎng)內(nèi)測試,網(wǎng)絡(luò)速度較快.

5 小結(jié)

軟件測試對B/S結(jié)構(gòu)的系統(tǒng)具有非常重要的意義.通過將負載及壓力測試的結(jié)果與系統(tǒng)設(shè)計的性能要求進行比較,開發(fā)人員能有效地了解系統(tǒng)各模塊及整體的性能,從而為滿足預(yù)設(shè)的性能要求提供優(yōu)化參考方案.自動化性能測試工具loadrunner具有支持協(xié)議多、界面友好、圖表豐富、功能強大的特點,成為我們在進行性能測試時的有力助手.

常用的軟件性能測試方式是基于既定的軟硬件資源,設(shè)置用戶數(shù)、并發(fā)數(shù)、任務(wù)數(shù)等進行測試分析和評估的.這對于用戶數(shù)、并發(fā)數(shù)、任務(wù)數(shù)有既定目標的系統(tǒng)是適用的,即為了達到這一目標,不斷提升硬件配置,不斷進行軟件調(diào)優(yōu).但如果想得到某個現(xiàn)有系統(tǒng)(既定的硬軟件系統(tǒng))的最優(yōu)性能,則需要不斷調(diào)整參數(shù),重復(fù)嘗試,這導(dǎo)致工作量成倍增長.后續(xù)的研究將致力于基于既定目標的“逆向測試”,即用比較簡單的方式找到使系統(tǒng)性能表現(xiàn)最佳的用戶數(shù)、并發(fā)數(shù)、任務(wù)數(shù)等指標.

[1]中國互聯(lián)網(wǎng)絡(luò)信息中心.中國互聯(lián)網(wǎng)絡(luò)發(fā)展狀況調(diào)查統(tǒng)計報告[R].中國互聯(lián)網(wǎng)絡(luò)信息中心,2012.

[2]于涌.軟件性能測試與loadrunner實戰(zhàn)[M].北京:人民郵電出版社,2008:27-36.

[3]段念.軟件性能測試過程詳解與案例剖析[M].北京:清華大學(xué)出版社,2006:42-48.

[4]熊忠陽,李光勇,張玉芳,等.Web集群系統(tǒng)性能測試與優(yōu)化[J].計算機應(yīng)用研究,2008,25(3):826-832.

[5]文俊浩,桑春艷,何盼.電子政務(wù)系統(tǒng)性能測試應(yīng)用研究[J].計算機科學(xué),2009,36(4):179-180.

[6]MENASCE D A.Load testing ofweb wite[J].IEEE InternetComputing,2002,6(4):66-75.

猜你喜歡
腳本事務(wù)服務(wù)器
酒駕
基于分布式事務(wù)的門架數(shù)據(jù)處理系統(tǒng)設(shè)計與實現(xiàn)
安奇奇與小cool 龍(第二回)
河湖事務(wù)
通信控制服務(wù)器(CCS)維護終端的設(shè)計與實現(xiàn)
快樂假期
小編的新年愿望
中國服務(wù)器市場份額出爐
得形忘意的服務(wù)器標準
計算機網(wǎng)絡(luò)安全服務(wù)器入侵與防御