qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問(wèn) http://qaseven.github.io/

          WAS性能測(cè)試工具的使用

            WAS 的負(fù)載使用說(shuō)明(一)

            一、準(zhǔn)備工作

            為了測(cè)試數(shù)據(jù)的準(zhǔn)備性,首先需要?jiǎng)h除緩存和Cookies等臨時(shí)文件。啟動(dòng)IE后打開(kāi)“工具”菜單下的“Internet”選項(xiàng)命令,在打開(kāi)的“Internet選項(xiàng)”窗口的“常規(guī)”選項(xiàng)卡中,單擊“Internet臨時(shí)文件”區(qū)域的“刪除Cookies”和“刪除文件”按鈕將臨時(shí)文件刪除。

            WAS說(shuō)明:WAS可以通過(guò)記錄瀏覽器活動(dòng)、導(dǎo)入服務(wù)器日志文件或評(píng)估WEB文件夾的內(nèi)容來(lái)幫助創(chuàng)建測(cè)試腳本:

            幾種方式的比較:1、記錄瀏覽器活動(dòng)的方式以精確的方式捕捉所有用戶的交互活動(dòng),任何從瀏覽器發(fā)往服務(wù)器的URL指向,應(yīng)用程序參數(shù)HTTP頭部信息都會(huì)被自動(dòng)地記錄在新的測(cè)試腳本里。

            2、導(dǎo)入服務(wù)器日志文件的方法在站點(diǎn)已經(jīng)進(jìn)入投入使用階段,有了真實(shí)的用戶流量的情況下使用最好,但是,一個(gè)新的站點(diǎn)未必有這么多真實(shí)用戶使用數(shù)據(jù),進(jìn)一步說(shuō),可能還需要合并大量的日志文件來(lái)達(dá)到較好的體現(xiàn)用戶活動(dòng)的目的,這將需要?jiǎng)?chuàng)建大量的測(cè)試腳本,蔣需要客戶端更多的系統(tǒng)資源。

            3、選取WEB內(nèi)容文件夾的方法最好用在測(cè)試多數(shù)是靜態(tài)HTML文件的站點(diǎn),這種方法允許在已有服務(wù)器的WEB頁(yè)面的基礎(chǔ)上快速創(chuàng)建測(cè)試腳本,然而這種方法并不捕捉任何由大多數(shù)應(yīng)用程序文件產(chǎn)生的參數(shù))

            二、錄制測(cè)試腳本

            安裝并啟動(dòng)WAS,程序運(yùn)行時(shí)會(huì)打開(kāi)“Cteate new script”對(duì)話框,即建立一個(gè)新的腳本窗口(如圖1),如果運(yùn)行WAS沒(méi)有打開(kāi)該窗口可以單擊WAS主程序窗口工具欄上第一個(gè)按鈕“New Script”即可。

            因?yàn)槭浅醮问褂茫栽谛陆_本窗口上單擊“Record”按鈕打開(kāi)創(chuàng)建向?qū)?duì)話框“Browser Recorder-Step 1 of 2”,其中三個(gè)選項(xiàng)的作用是選擇要記錄的內(nèi)容,分別為Request(請(qǐng)求)、Cookies(網(wǎng)上信息塊)以及Host headers(主機(jī)標(biāo)題),可根據(jù)需要選擇(圖2),然后單擊“Next”即會(huì)打開(kāi)“Browser Recorder-Step 2 of 2”窗口,單擊“Finish”按鈕。這樣WAS會(huì)自動(dòng)啟用,并且會(huì)打開(kāi)一個(gè)瀏覽器窗口,此時(shí)我們就可以在瀏覽器的地址欄中輸入要測(cè)試的網(wǎng)站網(wǎng)址。隨著要測(cè)試的網(wǎng)站內(nèi)容的不斷顯示,在WAS主界面的“Recording”選項(xiàng)卡中的信息會(huì)實(shí)時(shí)更新(如圖3)。

            當(dāng)瀏覽器的狀態(tài)欄顯示為“完成”時(shí),我們就可以返回WAS窗口,單擊“Stop Recording”按鈕返回腳本窗口。

            三、測(cè)試設(shè)置

            為了使測(cè)試更加準(zhǔn)確,更加接按真實(shí)效果,需要對(duì)錄制的測(cè)試腳本進(jìn)行一些設(shè)置。

            去除靜態(tài)干擾

            由于網(wǎng)頁(yè)是由圖片、文字以及其它動(dòng)態(tài)源碼組成的,而一般的靜態(tài)內(nèi)容消耗的帶寬并不是很大,因此我們可以將其排除在外。在腳本中選中指向圖像、文字以及其它靜態(tài)文件項(xiàng)目前的灰色按鈕,然后單擊工具欄上的“Delete”按鈕將其刪除(圖4)。

            設(shè)置并發(fā)數(shù)

            然后在單擊“New Recorded Script”下的“Settings”標(biāo)簽,其中“Concurrent Connections”是設(shè)置并發(fā)連接數(shù)的,其下面的“Stress level (threads)”和 “Stress multiplier(sockets perthread)” 分別設(shè)置對(duì)目標(biāo)服務(wù)器的壓力及負(fù)載程度的,其中Level是客戶端所產(chǎn)生的線程數(shù)目,一個(gè)線程可以產(chǎn)生多個(gè)Socket并發(fā)請(qǐng)求,因此將兩者的數(shù)值相乘,所獲得的數(shù)字就是客戶端同時(shí)連接的并發(fā)數(shù)(圖5)。

            時(shí)間設(shè)置

            時(shí)間設(shè)置包括“Test Run Time”(測(cè)試運(yùn)行時(shí)間)和“Request Delay”(停止響應(yīng))以及“Suspend”(掛起時(shí)間)三項(xiàng)。其中測(cè)試運(yùn)行時(shí)間是以日、小時(shí)、分鐘和秒來(lái)設(shè)定的,建議該項(xiàng)時(shí)間不宜太短,如果設(shè)置的并發(fā)數(shù)較多,那么時(shí)間應(yīng)該按比較增長(zhǎng),以便產(chǎn)生足夠多的請(qǐng)求;而停止時(shí)間是指連接時(shí)超出這個(gè)時(shí)間即作超時(shí)處理;在掛起時(shí)間處部分為Warmup和Cooldown兩項(xiàng),一般可以設(shè)置為兩三分鐘為宜,這樣做的目的是避免測(cè)試開(kāi)始和結(jié)束時(shí)數(shù)據(jù)的變形,影響測(cè)試的準(zhǔn)確性。

            指定帶寬瓶頸

            “Bandwith”是指定帶寬瓶頸的,即選擇訪問(wèn)該網(wǎng)站大多數(shù)用戶所使用的帶寬。例如訪問(wèn)該網(wǎng)站的絕大部分用戶是撥號(hào),那么可以選擇56K。

          四、開(kāi)始測(cè)試

            做好基本的設(shè)置工作后,就可以在左側(cè)選中新建的腳本“New Recorded Script”項(xiàng),然后單擊工具欄上的“Run Script”按鈕,或者打開(kāi)“Scripts”菜單下的“Run”命令,這樣就開(kāi)始測(cè)試了。測(cè)試過(guò)程中會(huì)以進(jìn)度條的方式實(shí)時(shí)顯示,待進(jìn)度條結(jié)束我們即可進(jìn)行測(cè)試結(jié)果分析了。

            五、數(shù)據(jù)分析

            現(xiàn)在我們就可以打開(kāi)測(cè)試報(bào)告來(lái)查看測(cè)試結(jié)果了。單擊“View”菜單,選擇“Reports”,在打開(kāi)的窗口左側(cè)會(huì)按時(shí)間顯示所有測(cè)試報(bào)告。根據(jù)時(shí)間選擇本次測(cè)試報(bào)告,在窗口右側(cè)即可查看具體內(nèi)容。

            在測(cè)試報(bào)告中最重要的部分就是“Socket Errors”部分和“Result Codes”部分。其中Socket Errors部分共分為Connect、Send 、Recv和Timeouts。其中Connect表示客戶端不能與服務(wù)器取得連接的次數(shù);Send表示客戶端不能正確發(fā)送數(shù)據(jù)到服務(wù)器的次數(shù);Recv表示客戶端不能正確從服務(wù)器接次的次數(shù);Timeouts表示超時(shí)的線程數(shù)目。由此我們可以如果這四個(gè)數(shù)值都比較小,甚至為0則說(shuō)明我們的服務(wù)器是經(jīng)得起考驗(yàn)的;如果數(shù)值居高不下,甚至接近設(shè)置的并發(fā)數(shù),那么則要好好的檢查你的服務(wù)器了(圖6)。

            另外在“Result Codes”部分,如果Code列表下的數(shù)值都為200,那么表示所有請(qǐng)求都經(jīng)服務(wù)器成功返回,如果數(shù)值出現(xiàn)400或大于400,例如404,那么則需要在左側(cè)找到“Page Data”節(jié)點(diǎn),查看具體的錯(cuò)誤項(xiàng)目,然后作出改正了。

            其實(shí)要完整的反映出一個(gè)網(wǎng)站在服務(wù)器上的運(yùn)行情況,需要不斷增減其并發(fā)數(shù),并且進(jìn)行多次測(cè)試,才能了解服務(wù)器所能承受的限度,然后才可以在IIS中設(shè)置允許連接的最大數(shù)目,從而保證網(wǎng)站正常運(yùn)行。

            WAS 的負(fù)載使用說(shuō)明(二)

            測(cè)試腳本的準(zhǔn)備

            1、在測(cè)試客戶端機(jī)器上啟動(dòng)Web Application Stress Tool,在彈出的“建立新腳本”對(duì)話框中選擇“Record”按鈕;

            2、在“Record”參數(shù)設(shè)置第一步中,所有的checkbox都不用選擇,NEXT

            到第二步時(shí)直接點(diǎn)擊“finish”,點(diǎn)擊后彈出一個(gè)IE窗口以便記錄瀏覽器活動(dòng),同時(shí)WAS會(huì)被置于記錄模式,在新出現(xiàn)的IE窗口的地址欄輸入你的目的站點(diǎn)的地址,在WAS的窗口你將看到HTTP信息在跟隨你的瀏覽活動(dòng)而實(shí)時(shí)改變著,當(dāng)完成了你的站點(diǎn)瀏覽后,返回Web Application Stress Tool,停止Record(點(diǎn)擊Stop Recording按鈕),終止記錄并產(chǎn)生一個(gè)新的測(cè)試腳本(在右邊的窗口將看到一個(gè)列出所有腳本的列表)。

            3、將一些沒(méi)用的記錄刪去(比如:/Apply/test/index.htm),只留下如下圖所示的五條記錄:

            指定目標(biāo)WEB服務(wù)器:Server默認(rèn)地目標(biāo)服務(wù)器為L(zhǎng)ocalhost,修改為IP地址或目標(biāo)服務(wù)器的域名

            端口號(hào)不用輸入。左邊的窗口中改一下腳本名字,比如改為Joinwork Test;

            4、5個(gè)測(cè)試用例在實(shí)際使用環(huán)境中被訪問(wèn)的概率是不一樣的。我們可以在Page Groups中定義幾個(gè)Page Group來(lái)模擬這種訪問(wèn)分布:

            在上圖中我們定義了5個(gè)Group,分別對(duì)應(yīng):查詢可啟動(dòng)流程列表、啟動(dòng)流程、查詢個(gè)人待辦工作任務(wù)、顯示任務(wù)執(zhí)行表單和執(zhí)行任務(wù),它們被點(diǎn)擊的次數(shù)比率為:1 : 1 : 5 : 5 : 4。

            回到腳本主頁(yè)面,分別將5條記錄的Group改為剛才建立的Page Group。這樣在運(yùn)行腳本的時(shí)候就會(huì)按Group定義的比率來(lái)產(chǎn)生點(diǎn)擊了;

            5、設(shè)置測(cè)試并發(fā)用戶數(shù)和測(cè)試運(yùn)行時(shí)間

            到 如下圖的Settings頁(yè)面,通過(guò)Stress Level (threads)和Stress mulitiplters來(lái)設(shè)置并發(fā)用戶數(shù),Test RUn Time來(lái)設(shè)置測(cè)試時(shí)長(zhǎng)。因?yàn)槲覀円鲂阅軌毫y(cè)試,不要設(shè)置延時(shí)時(shí)間(Request Delay)。可以在實(shí)際測(cè)試時(shí)間之前,設(shè)置一段warm up運(yùn)行時(shí)間,這段時(shí)間的數(shù)據(jù)是不會(huì)記錄到最后的報(bào)告里的;其他設(shè)置可以保持缺省值不變;

            測(cè)試運(yùn)行

            一切準(zhǔn)備完成后,回到腳本主頁(yè)面,然后點(diǎn)擊工具條上的“Run Script”按鈕就開(kāi)始測(cè)試了;

            測(cè)試報(bào)告查看

            測(cè)試運(yùn)行結(jié)束后,我們就可以通過(guò)點(diǎn)擊工具條上的"Reports"按鈕查看測(cè)試報(bào)告了;

            測(cè)試報(bào)告里比較重要的數(shù)據(jù)是:每秒處理的請(qǐng)求數(shù)(Requests per Second)和每個(gè)頁(yè)面的平均響應(yīng)時(shí)間。

            上面兩張圖的數(shù)據(jù)是筆者直接使用Joinwork開(kāi)發(fā)版的缺省配置(JBoss 3.2.2和JBoss自帶的數(shù)據(jù)庫(kù)Hsql),一臺(tái)主頻1.5M HZ(奔騰移動(dòng))、內(nèi)存725M的筆記本作服務(wù)器,一臺(tái)主頻2.0M HZ的臺(tái)式機(jī)作客戶端,測(cè)試的數(shù)據(jù)。

            數(shù)據(jù)顯示在100并發(fā)用戶數(shù)下,每秒可處理89.26個(gè)請(qǐng)求,其中響應(yīng)時(shí)間最長(zhǎng)的頁(yè)面是任務(wù)執(zhí)行,平均響應(yīng)時(shí)間是1.66秒。

            Web Application Stress Tool也可以采集服務(wù)器的CPU利用率等服務(wù)器端數(shù)據(jù),有興趣的話可以查看幫助文件。

            Web Application Stress 是Microsoft免費(fèi)提供的一款軟件專門對(duì)WEB服務(wù)進(jìn)行壓力測(cè)試用的工具軟件。我經(jīng)常會(huì)需要測(cè)試一些服務(wù)器的運(yùn)行狀態(tài)和響應(yīng)時(shí)間什么的,比如在網(wǎng)絡(luò)中新加了一臺(tái)防火墻做好設(shè)置以后,它的改動(dòng)對(duì)于網(wǎng)絡(luò)中應(yīng)用層的服務(wù)影響怎么樣,客戶會(huì)不會(huì)明顯感覺(jué)到IE 打開(kāi)站點(diǎn)的速度明顯減慢等等,尤其是在防火墻工作在透明代理模式下加上了一些對(duì)于應(yīng)用服務(wù)的內(nèi)容限制以后,設(shè)置前后速度上的改變都是非常重要參考數(shù)據(jù)的,我需要知道到底速度的影響有多大是否可以忽略不計(jì)。

          部分?jǐn)?shù)據(jù)解析

            下面我們用其進(jìn)行一次簡(jiǎn)單的壓力測(cè)試。

            打開(kāi)主程序,點(diǎn)擊"Record"按鈕,選擇"Record Delay between request",然后"next",再"finish"。接下來(lái)會(huì)彈出一個(gè)瀏覽器,輸入所要測(cè)試的WEB服務(wù)器地址,隨便瀏覽一些頁(yè)面,然后將其關(guān)閉,返回到Web Application Stress中,點(diǎn)擊"stop recording"按鈕。點(diǎn)擊"Settings",就可以進(jìn)入設(shè)置界面,填入一些參數(shù)。在此例中,threads我填入了50,run time我填入了2分鐘,其它默認(rèn)。然后選擇"Scripts"菜單項(xiàng)中的"Run",對(duì)服務(wù)器進(jìn)行壓力測(cè)試,等待2分鐘。

            結(jié)束后,選擇"Window"下的"Reports",可以看到類似于下面的壓力測(cè)試結(jié)果(我已經(jīng)將其簡(jiǎn)化了)。

          ============================================================
          Number of test clients: 1
          Number of hits: 6121
          Requests per Second: 51.01
          Socket Statistics
          ------------------------------------------------------------
          Socket Connects: 6163
          Total Bytes Sent (in KB): 1750.10
          Bytes Sent Rate (in KB/s): 14.58
          Total Bytes Recv (in KB): 29227.62
          Bytes Recv Rate (in KB/s): 243.55
          Socket Errors
          ------------------------------------------------------------
          Connect: 0
          Send: 0
          Recv: 0
          Timeouts: 0
          RDS Results
          ------------------------------------------------------------
          Successful Queries: 0

            下面對(duì)其進(jìn)行簡(jiǎn)單解釋。測(cè)試時(shí)間內(nèi),虛擬的用戶點(diǎn)擊頁(yè)面6121次,平均每秒51個(gè)請(qǐng)求,Socket連接數(shù)6163,其中沒(méi)有連接、發(fā)送、接收、超時(shí)錯(cuò)誤。從這個(gè)壓力測(cè)試報(bào)告來(lái)看,服務(wù)器對(duì)于50個(gè)用戶同時(shí)操作,應(yīng)該沒(méi)有任何問(wèn)題。需要特別說(shuō)明的是,這個(gè)只是簡(jiǎn)化的部分結(jié)果。

            這只是一個(gè)簡(jiǎn)單的示例,Web Application Stress的功能遠(yuǎn)不止于此,還需要在實(shí)踐中總結(jié)才是。


          posted on 2013-09-18 11:33 順其自然EVO 閱讀(315) 評(píng)論(0)  編輯  收藏 所屬分類: 性能測(cè)試web 前端性能測(cè)試

          <2013年9月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 长春市| 建水县| 辽源市| 金乡县| 蒙自县| 从江县| 沈阳市| 太原市| 韶关市| 南平市| 勐海县| 白城市| 宁明县| 祥云县| 富裕县| 金堂县| 江孜县| 涞水县| 永济市| 塘沽区| 昆山市| 河曲县| 中阳县| 娄烦县| 尚义县| 怀来县| 湟源县| 镇康县| 新蔡县| 龙山县| 海盐县| 晋中市| 炎陵县| 玉环县| 景泰县| 田阳县| 福海县| 宜都市| 淮南市| 获嘉县| 宜宾县|