版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領
文檔簡介
LoadRunner性能測試指南目錄LoadRunner性能測試基本步驟2、LoadRunner性能測試參數(shù)化詳解3、Loadrunner進行http接口壓力測試4、LoadRunner壓力測試實例LoadRunner性能測試基本步驟1、測試腳本錄制在使用loadrunner工具前,需確定哪些業(yè)務需要使用該工具進行測試,不需要的時候堅決不用,不要認為這個工具萬能。以本次測試中的綜合查詢(預付費綜合業(yè)務信息查詢)為例進行講解。1.1錄制前準備工作在錄制腳本前需檢查壓測環(huán)境的整體功能是否正確,待測部分的功能是否正確,只有確保功能正確后才可進行壓測。如本次測試,可先驗證50環(huán)境是否正常,CICS服務器(49)是否正常,/var/cics_regions目錄的使用率是否過高等等,一切確定OK后,開始驗證功能,這些都保證沒有問題后,檢查一下測試工具loadrunner是否正常使用,可簡單的點點用用,確保工具OK。1.2錄制及調(diào)試腳本在準備工作OK后,進行腳本的錄制,具體過程如下:1、打開“開始->程序->MercuryLoadRunner->MercuryLoadRunner”出現(xiàn)下圖2、點擊“Create/EdirScripts”,出現(xiàn)下圖,如果沒有出現(xiàn),則可在“File”下選擇New新建。3、出現(xiàn)這個界面后,選擇Web(HTTP/HTML)協(xié)議,我們測試的是B/S模式,采用的是Web協(xié)議。選擇后,點【OK】按鈕。出現(xiàn)下圖:4、點擊界面中的,這個表示開始錄制腳本,點這個按鈕后,出現(xiàn)下圖:圖中的URL輸入待測的網(wǎng)址,如本次測試網(wǎng)址:0/boss/loginauthservlet在RecordintoAction中選擇vuser_init,把登錄部分放在vuser_init中,vuser_init與vuser_end在測試過程中僅執(zhí)行一次,這里解釋一下,Action的作用是講測試功能主體放在里面執(zhí)行,舉例,假如做產(chǎn)品轉(zhuǎn)換,我們講登陸的部分放在vuser_init中,具體業(yè)務操作放在Action中,退出部分放在vuser_end。這樣,我們將壓力集中在業(yè)務操作上,而不是登陸退出上。同時,可以創(chuàng)建多個Action,將業(yè)務操作分成多個部分,比如用戶鑒權(quán)放在Confirm中,將選擇產(chǎn)品放在Select_Prod中,將業(yè)務分開放在多個Action的好處是可以統(tǒng)計這個操作的處理時間,處理速度等,便于定位問題。 Action的增加、修改、刪除:Action可以在錄制前增加,具體方法是選中界面左邊的部分,然后點右鍵,可以看到有增加Action的按鈕(CreateNewAction),也可進行刪除、重命名。在測試前可以根據(jù)需要將業(yè)務分為幾個操作部分,建立對應的Action,名稱最好能清晰操作部分的功能。錄制腳本的時候,可以將對應的操作放在對應的Action中。這里我們假設綜合查詢需要以下幾個步驟:第一、登陸第二、進入菜單第三、輸入測試號碼、提交查詢則可設計Action為這幾個:vuser_init(這個默認有)、IntoMenu、SubQue5、設置好后,點【OK】,進行錄制,在錄制前,如果已經(jīng)打開待測頁面的話,建議關閉該頁面。點【OK】后,這時會出現(xiàn)待測頁面,如0/boss/loginauthservlet,同時會出現(xiàn),這表示現(xiàn)在已經(jīng)開始錄制,可根據(jù)需要將業(yè)務放在一個Action中,也可以分成多個,放在多個Action中,具體方法是在進行下一個業(yè)務操作前,點上圖中的,選擇對應的Action,如果事先沒有創(chuàng)建Action的話,則可點擊增加新的Action。在頁面中輸入用戶名后,登陸到系統(tǒng),待頁面都加載完畢后,將vuser_init改為IntoMenu,點擊相應的菜單,如查詢統(tǒng)計->營業(yè)受理查詢->預付費查詢->預付費綜合業(yè)務信息查詢,頁面加載完畢后,將IntoMenu改為SubQue,在“服務號碼:”中輸入號測試號碼),點擊【查詢】,待頁面返回查詢結(jié)果后,將SubQue改為vuser_end,退出系統(tǒng)。注:頁面加載完畢可以參考網(wǎng)頁左下角有個信息提示“完畢”。所有操作完成后,點擊中停止按鈕,停止錄制,頁面將自動關閉,返回到loadrunner錄制界面,將在界面中顯示錄制腳本代碼,保存錄制的腳本。6、調(diào)試代碼并進行參數(shù)化 錄制后的代碼需要進行調(diào)試才可用于壓測,調(diào)試的辦法就是進行回放操作,如果回放過程無錯誤,運行結(jié)果也正確的話,則可用于壓測。具體調(diào)試步驟如下: 點擊界面中的,進行單次運行調(diào)試,運行后,會彈出運行預覽的一個窗口,可以看到每一個Action的執(zhí)行過程,運行結(jié)束后,會出現(xiàn)一個結(jié)果報告,如果有錯誤,會在報告中以紅色叉標志顯示出來,同時在Executionlog中也會打出錯誤信息,可以根據(jù)這些錯誤信息進行調(diào)試。如果無錯誤,則可進行插入事務、參數(shù)化設置等其他操作?,F(xiàn)假設調(diào)試無錯誤,進行參數(shù)化設置。 在測試過程中,有可能需要不同的測試號碼,如果產(chǎn)品轉(zhuǎn)換,首次激活等,如果有同樣的號碼將導致測試失敗,因為相同的號碼不能做同樣的業(yè)務操作多次,所以需要大量不同的測試號碼,這個就需要用到參數(shù)化設置。我們在編寫測試方案的時候,已經(jīng)得出要準備多少測試號碼,在測試工作準備的時候,已經(jīng)準備好測試號碼,那么可以利用這些準備的號碼進行參數(shù)化設置。參數(shù)化設置的意思就是將需要用其他數(shù)據(jù)代替的地方設置為一個參數(shù),在運行時讀到這個參數(shù),就使用其他的值代替,在這個例子中,我們需要設置參數(shù)的地方是服務號碼。這樣,我們需要先創(chuàng)建一個參數(shù),步驟如下:先準備好號碼,可在數(shù)據(jù)中導出,存放在txt文本中,格式為:測試號碼,一行一個號碼,最后一行要為行,如果文件名為test_num.txt點擊界面中,出現(xiàn)下面界面在這個界面中,點擊左邊的New,創(chuàng)建一個新的參數(shù),在界面的右邊,Parametertype選擇File,F(xiàn)ilepath選擇存放號碼的txt文件路徑,選定文件后,會在下面的表格中列出測試號碼,我們在Selectnextrow中選擇Unique,這個表示整個測試過程僅使用唯一的號碼,保證號碼不重復,這樣就要號碼資源足夠多,同時測試時間也需要控制好,否則會報錯。創(chuàng)建好參數(shù)后,返回到剛才錄制的腳本中,找到對應的Action,如SubQue中服務號碼字段,選擇該號碼,右鍵選擇“Replacewithaparameter”,在Parametername的下拉列表中選擇需要替換的參數(shù),選定后點擊OK。設置OK后,可進行調(diào)試,如無問題,則可以進行場景的設置。這里有個注意點要說明一下,參數(shù)化也可以直接在腳本中選中需替換的地方,點右鍵,選擇“Replacewithaparameter”,改更Properties進行設置,但這樣做經(jīng)常出問題,不容易調(diào)試,不建議這樣做。2、設計測試場景 在腳本錄制完成,調(diào)試通過后,可以進行測試場景的設計。具體步驟如下:1、打開“開始->程序->MercuryLoadRunner->MercuryLoadRunner”出現(xiàn)下圖2、點擊圖中的RunLoadTests,出現(xiàn)下圖界面在新建場景的窗口,選擇一種場景類型。下面對三種類型進行簡單的說明。ManualScenario:該項要完全手動的設置場景。ManualScenariowithPercentageMode:該項只有在“ManualScenario”選中的情況下才能選擇。選擇該項后,在場景中我們需要定義要使用的虛擬用戶的總數(shù),LoadGeneratormachine機器集,然后我們?yōu)槊恳粋€腳本分配要運行的虛擬用戶的百分比。2Goal—OrientedScenario:在測試計劃中,一般都包括性能測試要達到的目標。選擇該項后,LoadRunner基于這個目標,自動為你創(chuàng)建一個場景。在場景中,我們只要定義好我們的目標即可。3、在上圖中出現(xiàn)的Availablescripts,選擇要進行場景設計的腳本,若沒有出現(xiàn)需要對應的腳本,可點擊Browse查找后添加進來,選擇好腳本后,點Add,則可加入到右邊的窗口中,然后點【OK】,出現(xiàn)下圖4、上圖中的ScenarioGroups,顯示的是腳本的路徑與并發(fā)數(shù)個數(shù),根據(jù)測試方案中的并發(fā)數(shù)可更改此處的并發(fā)數(shù),在上圖中點擊EditSchedule,出現(xiàn)下圖舉個例子,假如我們設計的場景是每15秒增加2個,所有并發(fā)數(shù)增加完后持續(xù)運行5分鐘,5分鐘運行結(jié)束后,每30秒減少5個并發(fā),則上面三張圖的設置就行了,注意那個Initialize…必須勾選上。5、再點擊頁面右下角的“Run-timeSettings”,出現(xiàn)下圖選擇圖中的ThinkTime,在右邊選擇Replaythinktime,再勾選中Limitthinktimeto:1seconds,表示即使腳本thinktime時間可能超過1秒,也用1秒替換,可以自行調(diào)整這個時間。這樣做的目的是在測試過程中使得每個業(yè)務操作里加上thinktime,表示用戶在操作的時候,有個時間延遲,真實的模擬用戶的操作,比如用戶在做產(chǎn)品轉(zhuǎn)換的時候,可能在選擇產(chǎn)品的時候,有個停頓思考的時間,這樣loadrunner會記錄下來。如果選擇Ignorethinktime,這樣對服務器造成的壓力是最大的,在運行時,會沒有停頓的,持續(xù)對服務器加壓,不太符合實際使用情況。設置好ThinkTime后,選擇Miscellaneous,在出現(xiàn)的窗口中勾中Continueonerror,表示在遇到錯誤的時候,繼續(xù)執(zhí)行場景,直到場景運行結(jié)束。6、一切設置OK后,點擊,運行測試場景,如下圖在圖中的左邊可以查看并發(fā)用戶數(shù)的運行情況,右邊可以查看通過的事務數(shù)、失敗的事務等,如果運行過程中有錯誤出現(xiàn),則可以點擊Errors右邊的放大鏡,查看詳細錯誤信息。窗口下面是各種監(jiān)控窗口,RunningVusers展示的是目前并發(fā)用戶數(shù)的運行情況,TransResponseTime表示的是事務的響應時間,即每個事務處理的時間是多少秒。3、測試結(jié)果分析 場景執(zhí)行結(jié)束后,可以使用loadrunner自帶的分析工具進行結(jié)果分析,這里我們主要考察兩個地方,第一是平均事務響應時間AverageTransactionResponseTime,第二是并發(fā)數(shù)運行情況RunningVusers,這兩個顯示了場景運行過程中并發(fā)數(shù)的執(zhí)行情況與每筆事務的處理時間。還有其他幾個考察點,做簡要解釋。注:事務數(shù)概念解釋:事務就是腳本中定義的每個Action。具體分析步驟是先打開“開始->程序->MercuryLoadRunner->MercuryLoadRunner”出現(xiàn)下圖點擊AnalyzeLoadTests,出現(xiàn)下圖在圖中的菜單欄中選擇打開,找到要分析的場景執(zhí)行結(jié)果,點【打開】即可,還可以直接在場景運行結(jié)束后,點擊Controller菜單欄的,直接收集場景運行結(jié)果進行分析。 打開場景執(zhí)行結(jié)果后的界面如下:界面左邊是各個指標的列表,右邊是圖形的顯示,下面是指標對應的采集數(shù)據(jù)。接下來將重點選擇幾個指標做解釋。3.1并發(fā)數(shù)執(zhí)行情況(RunningVusers) 并發(fā)數(shù)執(zhí)行情況反映了在場景執(zhí)行過程中各個并發(fā)數(shù)的運行情況,成功了多少,失敗了多少,是否按照既定的場景執(zhí)行計劃運行,是否達到預期的執(zhí)行效果,如果在某個時間,執(zhí)行失敗了,或者存在異常,那么并發(fā)數(shù)的圖表將是波動,可以從圖中直觀的看出來,同樣根據(jù)場景中Error的信息,定位在何時出現(xiàn)了錯誤,此時執(zhí)行的并發(fā)數(shù)是多少。并發(fā)數(shù)的圖表如下:3.2事務通過數(shù)(Throughput)事務通過數(shù)的意思是每個特定時間間隔內(nèi)通過的事務數(shù),如果隨著場景執(zhí)行時間的推延,通過事務數(shù)曲線應該是平緩的,如果突然上升,則可能是服務不穩(wěn)定,或者網(wǎng)絡因素導致的,如果持續(xù)下降,則表示服務的處理能力在下降,此時可以查看服務器段是否有進程堵塞,或者服務器的連接數(shù)不夠,也可能是網(wǎng)絡帶寬不夠。事務通過數(shù)的圖表如下3.3平均事務響應時間(AverageTransactionResponseTime)平均事務響應時間在整個測試過程中是一個很重要的參考指標,他能清晰的反映出場景執(zhí)行過程中,每個事務的執(zhí)行時長,整個業(yè)務中哪個操作最耗時等等。場景執(zhí)行結(jié)束后,可以根據(jù)這個圖表分析出在一定響應時間要求下,系統(tǒng)可支持的并發(fā)數(shù),假如我們要求在查詢的時候要求這個返回結(jié)果的時候不超過5秒,那么可以在場景中找到對應的SubQue事務在處理時間為5秒左右的時間點,再從RunningVuser圖中找到對應的時間點,查看對應的并發(fā)用戶數(shù)。同樣,在整個執(zhí)行過程中,當并發(fā)數(shù)達到一定數(shù)值后,平均事務響應時間曲線應該是平緩的,如果出現(xiàn)突然升高或者降低的情況,則表示系統(tǒng)存在異常,這樣我們可以找到這個時間點去查看服務器端的運行日志,查找原因。平均事務響應時間的圖表如下:3.4服務器資源分析服務器資源監(jiān)控利用的是nmon工具,在得出分析結(jié)果后,可以查看對應的圖表進行分析。4、總結(jié)整個測試過程是有序的,需要事先計劃好,在錄制腳本,調(diào)試腳本的時候需要注意的是要單個單個號碼的試,不可一次把號碼都跑完,這樣不經(jīng)濟。這里僅僅介紹了簡單的測試流程,更深刻更精妙的功能未能列出,請自行學習。本文檔重點介紹的LoadRunner的使用。LoadRunner性能測試參數(shù)化詳解我們知道性能測試工具是模擬多個用戶對系統(tǒng)的性能進行驗證(這種說法不完全正確),有些系統(tǒng)允許多個完全相同的用戶同時對完全相同的數(shù)據(jù)做完全相同的操作,有些則不允許。比如,郵箱一般允許同一個賬號在多處登陸。而我們的QQ賬號肯定是不允許的。再比如,你注冊某個系統(tǒng)時,用戶名是不能有重復。但密碼卻可以。所以,這么多個情況都要用到參數(shù)化技巧。我們這里通過loadurnner錄制一個139郵箱的登陸。下面是截取的一小段代碼
web_submit_form("Login.ashx",
"Snapshot=t3.inf",ITEMDATA,
"Name=UserName","Value=chongshi",ENDITEM,
"Name=Password",
"Value=123456",ENDITEM,"Name=VerifyCode",
"Value=",ENDITEM,
"Name=auto",
"Value=",ENDITEM,EXTRARES,下面看一下如何通過loadrunner對用戶名密碼參數(shù)化。標紅的內(nèi)容就是登陸的用戶名和密碼。
參數(shù)化的方法
選中要參數(shù)化的內(nèi)容。方法一,右鍵【Replace
with
a
new
parameter】方法二,菜單【insert】【new
Parameter…】
Parameter
Properties
(參數(shù)屬性對話框)我們的參數(shù)化設置就通過這個對話框完成。
參數(shù)化的方式:其實參數(shù)化得方式有很多種,這里簡述幾種比較常見人方式。其實方式略有不同,但其結(jié)果都是將數(shù)據(jù)添加進來。1、
編輯數(shù)據(jù)點擊Create
Table
會出現(xiàn)表格,在表格,再次點擊Edit
with
Notepad
,然后會打開一個記事本,我們可以對記事本進行添加數(shù)據(jù)
2、
添加txt數(shù)據(jù)文件
點擊File輸入框后面的“Browse..”按鈕,找到本地的txt數(shù)據(jù)文件,進行添加就可以了。需要注意的是,文件里面的數(shù)據(jù)不要亂寫,每條數(shù)據(jù)一行,不然會讀取有誤。
3、
數(shù)據(jù)庫添加數(shù)據(jù)在很多情況下,我添加的數(shù)據(jù)不是十條二十條,也不是一百兩百,如果還通過上面的兩種方式添加,我想會是一件非常糾結(jié)的事情。所以我們可以通過數(shù)據(jù)庫將數(shù)據(jù)導入。你是否疑慮數(shù)據(jù)庫的數(shù)據(jù)怎么弄,數(shù)據(jù)庫的數(shù)據(jù)生成非常簡單,可以寫一段簡單的代碼生成,也可以通過數(shù)據(jù)庫數(shù)據(jù)生成工具來完成點擊Date
Wizard
打開連接數(shù)據(jù)庫向?qū)А?/p>
這里先告訴你有這種方式,后面再介紹具體操作。^_^
4、
其他類型設置如果我們要參數(shù)化的不是一個文件,比如是特定的日期時間,可以從Parameter
type
列表中進行選擇這里可以設置日期時間格式,循環(huán)迭代方式,不過除了file類型外,其他用的不多。其他類型用法我也不是十分了解。
參數(shù)化之間的關聯(lián)
前面我們已經(jīng)對用戶名進行了參數(shù)化,或?qū)γ艽a進行了參數(shù)化,這樣是不是腳本就能正常跑了,不好說。因為用戶名和密碼不是一一對應關系,每次運行腳本時取的用戶名和密碼沒有對應上的話肯定就會出問題。假設,我們已經(jīng)對用戶名已經(jīng)進行了參數(shù)化,參數(shù)名為【username】,下面設置密碼參數(shù)化與用戶名關聯(lián)。
點擊“Properites…”會打開編輯用戶名參數(shù)化窗口。File列表框中,剛才保存用戶名信息的文件"username.dat"。點擊“Add
Column…”,添加新的一列信息,用于放置密碼。
點擊“Edit
with
Notepad”再次編輯參數(shù)化數(shù)據(jù)文件,使用戶名密碼建立一一對應關系。完成之后,我們已經(jīng)成功對用戶名和密碼進行了參數(shù)化,并且讓用戶名和密碼形成了對應關系。
數(shù)據(jù)分配與更新方式
腳本設置完參數(shù)化,腳本運行的每一遍所取的參數(shù)化的值都不一樣,那么這個值按照個什么情況來取呢?會有很多種方式Select
next
row【選擇下一行】:順序(Sequential):按照參數(shù)化的數(shù)據(jù)順序,一個一個的來取。隨機(Random):參數(shù)化中的數(shù)據(jù),每次隨機的從中抽取數(shù)據(jù)。唯一(Unique):為每個虛擬用戶分配一條唯一的數(shù)據(jù)
Update
value
on【更新時的值】:
每次迭代(Each
iteration)
:每次迭代時取新的值,假如50個用戶都取第一條數(shù)據(jù),稱為一次迭代;完了50個用戶都取第二條數(shù)據(jù),后面以此類推。每次出現(xiàn)(Each
occurrence):每次參數(shù)時取新的值,這里強調(diào)前后兩次取值不能相同。只取一次(once)
:參數(shù)化中的數(shù)據(jù),一條數(shù)據(jù)只能被抽取一次。(如果數(shù)據(jù)輪次完,腳本還在運行將會報錯)
上面兩個選項都有三種情況,如果將他們進行組合,將產(chǎn)生九種取值方式。Select
Next
Row【選擇下一行】Update
Value
On【更新時的值】Replay
Result【結(jié)果】順序(Sequential)每次迭代(Each
iteration)結(jié)果:分別將15條數(shù)據(jù)寫入數(shù)據(jù)表中功能說明:每迭代一次取一行值,從第一行開始取。當所有的值取完后,再從第一行開始取如:如果參數(shù)化文件中有15條數(shù)據(jù),而迭代設置為16次,那執(zhí)行結(jié)果中,參數(shù)化文件第一行的數(shù)據(jù)有兩條順序(Sequential)每次出現(xiàn)(Each
occurrence)結(jié)果:分別將15條數(shù)據(jù)寫入數(shù)據(jù)表中功能說明:每迭代一次取一行值,從第一行開始取。當所有的值取完后,再從第一行開始取如:如果參數(shù)化文件中有15條數(shù)據(jù),而迭代設置為16次,那執(zhí)行結(jié)果中,參數(shù)化文件第一行的數(shù)據(jù)有兩條順序(Sequential)只取一次(once)結(jié)果:表中寫入15條一模一樣的數(shù)據(jù)。功能說明:每次迭代都取參數(shù)化文件中第一行的數(shù)據(jù)。隨機(Random)每次迭代(Each
iteration)結(jié)果:表中寫入15條數(shù)據(jù),但可能有重復數(shù)據(jù)出現(xiàn)功能說明:每次從參數(shù)化文件中隨機選擇一行數(shù)據(jù)進行賦值隨機(Random)每次出現(xiàn)(Each
occurrence)結(jié)果:表中寫入15條數(shù)據(jù),但可能有重復數(shù)據(jù)出現(xiàn)功能說明:每次從參數(shù)化文件中隨機選擇一行數(shù)據(jù)進行賦值隨機(Random)只取一次(once)結(jié)果:表中寫入15條相同數(shù)據(jù)功能說明:第一次迭代時隨機從參數(shù)化文件中取一行數(shù)據(jù),后面每次迭代都用第一次迭代的數(shù)據(jù)。唯一(Unique)每次迭代(Each
iteration)自動分配塊大小結(jié)果:分別將15條數(shù)據(jù)寫入數(shù)據(jù)表中功能說明:第一次迭代取參數(shù)化文件中的第一條數(shù)據(jù),第二次迭代取第二條數(shù)據(jù),以此類推。注:如果設置迭代次數(shù)為16次。結(jié)果:在執(zhí)行第16次迭代時會拋異常,異常日志可在LoadRunner的回放日志(replayLog)中看到。唯一(Unique)每次出現(xiàn)(Each
occurrence)步長為1結(jié)果:分別將15條數(shù)據(jù)寫入數(shù)據(jù)表中功能說明:第一次迭代取參數(shù)化文件中的第一條數(shù)據(jù),第二次迭代取第二條數(shù)據(jù),以此類推。注:如果設置迭代次數(shù)為16次,而參數(shù)化文件中只有15條數(shù)據(jù),明顯數(shù)據(jù)不夠。此時可以設置“when
out
of
values”屬性來判斷當數(shù)據(jù)不夠時的處理方式Abort
Vuser:中斷虛擬用戶Countinue
in
a
cylic
manage:循環(huán)取參數(shù)化文件中的值,即:當參數(shù)化文件中的值取完后又從參數(shù)化文件的第一行開始取值。Countinue
with
last
value:繼續(xù)用最后一條數(shù)據(jù)唯一(Unique)只取一次(once)結(jié)果:表中寫入15條相同數(shù)據(jù)功能說明:每次都取參數(shù)文件中的第一條數(shù)據(jù)進行賦值Loadrunner進行http接口壓力測試業(yè)務描述:在業(yè)務系統(tǒng)里進行查詢操作,查詢的結(jié)果是通過請求http接口,從系統(tǒng)中處理并將結(jié)果以json字符串返回。使用Loadrunner對此類接口進行壓力測試并記錄相關的性能指標數(shù)據(jù):一.安裝Loadrunner本次測試過程使用Loadrunner11.0版本。二.部署環(huán)境1.接口服務器一臺;2.用于運行Loadrunner的壓力測試機1臺或N臺,在條件允許下,盡可能提供高配置的CPU和內(nèi)存。3.接口服務器和壓力測試機建議應部署于同一個局域網(wǎng)內(nèi),否則測試過程和結(jié)果將受到網(wǎng)絡帶寬因素的影響無法順利進行。
三.編寫測試腳本方法一.通過java編寫測試類,以jar包的方式引入Loadrunner進行測試。優(yōu)點:便于解析接口響應結(jié)果,同時避免由于LR腳本編寫不規(guī)范或配置問題,導致測試過程引發(fā)的未知錯誤。條件:運行l(wèi)oadrunner的機器需要安裝jdk1.6的版本。1.編寫java測試類:CTLPTest.java,如下代碼1packagecom;
2
3importjava.io.InputStream;
4import.HttpURLConnection;
5import.URL;
6importjava.util.Random;
7
8publicclassCTLPTest
9{
10publicstaticvoidmain(String[]args)
11{
12CTLPTestlbs=newCTLPTest();
13StringltpUrl=lbs.ltpRequestUrl();
14System.out.println(ltpUrl);
15System.out.println(lbs.ltpRequest(ltpUrl));
16}
17
18publicintltpRequest(StringltpRequestUrl)
19{
20intreturnCount=-1;
21try
22{
23URLurl=newURL(ltpRequestUrl);
24//http連接
25HttpURLConnectionhttp=(HttpURLConnection)url.openConnection();
26http.setUseCaches(false);
27http.connect();
28//獲取http響應流
29InputStreamin=http.getInputStream();
30//解析響應流
31byte[]b=newbyte[in.available()];
32in.read(b);
33//將響應流轉(zhuǎn)換成字符串
34Stringres=newString(b);
35//根據(jù)實際情況,判斷響應結(jié)果,并設置返回值
36intof=res.indexOf("sucess");
37if(of<0){
38returnCount=-1;
39}else{
40returnCount=1;
41}
42}catch(Exceptione){
43returnCount=-1;
44}
45returnreturnCount;
46}
47
48publicStringltpRequestUrl(){
49StringBuilderparam=newStringBuilder("05:8055/CTLP/LtpRequest.json?Imsi=");
50param.append("userid-1");
51param.append("&appName=LBS&Apikey=D39hr1FgplZSjV2eNVW71wvbYbl8Mip4");
52returnparam.toString();
53}
54}
ViewCode2.將測試類導出為jar包:LTPRequest.jar
過程略.3.Loadrunner創(chuàng)建java測試類圖1:
圖2:創(chuàng)建java協(xié)議腳本1
圖3:創(chuàng)建java協(xié)議腳本2
圖4:創(chuàng)建java協(xié)議腳本3
圖5:設置環(huán)境變量
圖6:設置安裝的jdk位置目錄
圖7:導入jar包
圖8:編寫腳本內(nèi)容1packagecom;
2
3importjava.io.InputStream;
4import.HttpURLConnection;
5import.URL;
6
7publicclassCTLPTest
8{
9publicstaticvoidmain(String[]args)
10{
11CTLPTestlbs=newCTLPTest();
12StringltpUrl=lbs.ltpRequestUrl();
13System.out.println(ltpUrl);
14System.out.println(lbs.ltpRequest(ltpUrl));
15}
16
17publicintltpRequest(StringltpRequestUrl)
18{
19intreturnCount=-1;
20try
21{
22URLurl=newURL(ltpRequestUrl);
23//http連接
24HttpURLConnectionhttp=(HttpURLConnection)url.openConnection();
25http.setUseCaches(false);
26http.connect();
27//獲取http響應流
28InputStreamin=http.getInputStream();
29//解析響應流
30byte[]b=newbyte[in.available()];
31in.read(b);
32//將響應流轉(zhuǎn)換成字符串
33Stringres=newString(b);
34//根據(jù)實際情況,判斷響應結(jié)果,并設置返回值
35booleanof=res.contains("\"state\":1");
36if(of){
37returnCount=1;
38}else{
39returnCount=0;
40}
41}catch(Exceptione){
42returnCount=-1;
43}
44returnreturnCount;
45}
46
47publicStringltpRequestUrl(){
48StringBuilderparam=newStringBuilder("05:8055/CTLP/LtpRequest.json?Imsi=");
49param.append("userid-1");
50param.append("&appName=LBS&Apikey=D39hr1FgplZSjV2eNVW71wvbYbl8Mip4");
51returnparam.toString();
52}
53}
ViewCode
圖9:試運行,查看結(jié)果
說明:至此,完成了java腳本的編寫和基本測試,接下來我們就可以使用loadrunner的進行壓力測試了。
四.壓力測試圖1:選擇壓力測試
圖2:打開步驟三中創(chuàng)建的java腳本目錄
圖3:壓力測試設置界面總覽圖4:設置開啟并發(fā)用戶數(shù)及壓入頻率說明:單位時間內(nèi)壓入的并發(fā)用戶數(shù)設置的用戶數(shù)值越大,壓力越大,根據(jù)測試實際需要調(diào)整。
圖5:設置壓力峰值持續(xù)時間
圖6:設置單位時間內(nèi)減少并發(fā)用戶數(shù)(根據(jù)實際需要,也可以選擇Simultaneously,達到時間后直接停止)
圖7:點擊"StartScenario"按鈕開始運行測試
圖8:運行結(jié)果:
圖9:分析結(jié)果(可以保存各項性能指標數(shù)據(jù)到文件)LoadRunner壓力測試實例摘要:本文通過實例講解介紹了LoadRunner工具的使用,介于公司的實際情況,文中主要是對工具的基本使用做了詳細描述,高級運用方面除性能計數(shù)器與參數(shù)設置外其它均未涉及,待以后補充。目的是使公司人員根據(jù)該手冊便可以獨立運用Loadrunner進行壓力測試主題詞:Loadrunner工具壓力測試1LoadRunner概要介紹LoadRunner是一種預測系統(tǒng)行為和性能的工業(yè)標準級負載測試工具。通過以模擬上千萬用戶實施并發(fā)負載及實時性能監(jiān)測的方式來確認和查找問題,LoadRunner能夠?qū)φ麄€企業(yè)架構(gòu)進行測試。通過使用LoadRunner,企業(yè)能最大限度地縮短測試時間,優(yōu)化性能和加速應用系統(tǒng)的發(fā)布周期。目前企業(yè)的網(wǎng)絡應用環(huán)境都必須支持大量用戶,網(wǎng)絡體系架構(gòu)中含各類應用環(huán)境且由不同供應商提供軟件和硬件產(chǎn)品。難以預知的用戶負載和愈來愈復雜的應用環(huán)境使公司時時擔心會發(fā)生用戶響應速度過慢,系統(tǒng)崩潰等問題。這些都不可避免地導致公司收益的損失。MercuryInteractive的LoadRunner能讓企業(yè)保護自己的收入來源,無需購置額外硬件而最大限度地利用現(xiàn)有的IT資源,并確保終端用戶在應用系統(tǒng)的各個環(huán)節(jié)中對其測試應用的質(zhì)量,可靠性和可擴展性都有良好的評價。LoadRunner是一種適用于各種體系架構(gòu)的自動負載測試工具,它能預測系統(tǒng)行為并優(yōu)化系統(tǒng)性能。LoadRunner的測試對象是整個企業(yè)的系統(tǒng),它通過模擬實際用戶的操作行為和實行實時性能監(jiān)測,來幫助您更快的查找和發(fā)現(xiàn)問題。此外,LoadRunner能支持廣范的協(xié)議和技術,為您的特殊環(huán)境提供特殊的解決方案。1.1基本步驟使用LoadRunner完成測試一般分為四個步驟:1)VvitrualUserGenerator創(chuàng)建腳本:創(chuàng)建腳本,選擇協(xié)議錄制腳本編輯腳本檢查修改腳本是否有誤2)中央控制器(Controller)來調(diào)度虛擬用戶創(chuàng)建Scenario,選擇腳本設置機器虛擬用戶數(shù)設置Schedule如果模擬多機測試,設置IpSpoofer3)運行腳本分析scenario4)分析測試結(jié)果2安裝LoadRunner中文版LoadRunner分為Windows版本和Unix版本。如果我們的所有測試環(huán)境基于Windows平臺,那么我們只要安裝Windows版本即可。本章講解的安裝過程就是LoadRunner7.8中文的Windows版本的安裝。2.1系統(tǒng)要求目前部門的測試機和工作機器足可以滿足LoadRunner7.8的最低要求。不過要比較好的運行LoadRunner,內(nèi)存最好在512M以上,安裝LoadRunner的磁盤空間至少剩余500M。操作系統(tǒng)最好為Windows2000。2.2安裝過程LoadRunner7.8中文版安裝基本分兩個步驟:首先安裝LoadRunner7.8英文原版,然后安裝中文語言插件包。LoadRunner7.8英文原版存放位置:\\39\testtools\LR7.8nt.rar將壓縮文件拷貝解壓到本機的安裝,過程比較簡單要開始安裝LoadRunner,以Administrator的身份登陸Windows2000后,運行LoadRunner安裝目錄下Setup.exe即可進入安裝程序。1.在“RegistrationInformation”界面中,輸入序列號(不用改動,就是n個8)2.在安裝類型界面中,選擇一種安裝類型下面簡單的對這三種安裝類型進行介紹●StandaloneInstallation將要安裝LoadRunner在一臺計算機上●NetworkInstallation把LoadRunner安裝在一個網(wǎng)絡驅(qū)動器上,這樣任何能連接到這個網(wǎng)絡驅(qū)動器的計算機都可以使用LoadRunner的部分或者全部組件?!馧etworkInstallationandshortcuts和NetworkInstallation類似,不同的只是這種類型將把自己的計算機配置成Workstation來運行LoadRunner。如果選擇了第二項,我們還需要進行2.3的安裝來配置Workstation.??紤]到我們是自己學習研究學習,選擇第一種安裝方法。3.在安裝方式界面中,需要選擇一種安裝方式。建議選擇“自定義安裝”,這樣所有的組件都會一次安裝。下面簡單的對各個安裝方式進行介紹●TypicalInstallation安裝比較通用的組件,包括Controller、Vuser、在線幫助和腳該選項適合于控制Vusers的機器?!馤oadGenerator只安裝運行Vusers產(chǎn)生負載的組件。該選項適合于只產(chǎn)生負載,而不控制Vusers的機器?!馦IListener安裝MIListener組件,用來透過防火墻來運行Vusers并且監(jiān)視性能?!馛ustomInstallation自定義安裝,我們將使用該選項,安裝全部的組件。4.在“LicenseInformation”中輸入LicenseKey后,Next,繼續(xù)100個用戶(無時間限制):AEAMAUIK-YAFEKEKJJKEEA-BCJGI,10000個用戶(有時間限制):AEABEXFR-YTIEKEKJJMFKEKEKWBRAUNQJU-KBYGB5.如果是網(wǎng)絡安裝,最好把網(wǎng)絡驅(qū)動器映射成本機的一個盤符,安裝LoadRunner的各級目錄不要包含中文字符。6.Next后進入拷貝文件的界面7.拷貝文件完成后,進入“UserLoginSettings”界面?!馎llowvirtualuserstorunonthismachinewithoutuserlogin需要在下面輸入域、用戶名和密碼,這樣運行LoadGenerator的機器會自動登陸到網(wǎng)絡,●ManuallogintotheLoadGeneratormachine運行Vusers時,自動登陸到網(wǎng)絡,無需登陸用戶名和密碼,這樣Vusers就會不用任何干預自動的啟動運行。推薦選擇該項。這里選擇第一項和第二項都可以。8.重新啟動,安裝完成LoadRunner7.8英文原版存放位置:\\39\testtools\LoadRunner7.8中文版.rar將壓縮文件拷貝解壓到本機的安裝.。過程比較簡單要開始安裝以Administrator的身份登陸Windows2000后,(注意要退出已經(jīng)運行的英文原版)運行安裝目錄下Setup.exe即可進入安裝程序,安裝過程中一切人機交流窗口多選擇默認“下一步”即可注意:解壓文件存放的文件夾不可起中文名字,安裝目錄最好使用默認,如果更改則安裝目錄不要使用中文名!3.項目背景介紹3.1背景概述“LMS網(wǎng)??荚嚻脚_”是一個典型的三層B/S架構(gòu)的MIS系統(tǒng)(客戶端/應用服務器/數(shù)據(jù)庫管),中間層是業(yè)務邏輯層,應用服務器處理所有的業(yè)務邏輯,但應用服務器本身不提供負載均衡的能力,而是利用開發(fā)工具提供的ORB(對象請求代理)軟件保證多個應用服務器間的負載均衡。本次測試的目的是:進行應用服務器的壓力測試,找出應用服務器能夠支持的最大客戶端數(shù)。方法是:按照正常業(yè)務壓力估算值的1~10倍進行測試,考察應用服務器的運行情況。3.2壓力測試用例場景描述一:用戶登錄的lmm模塊,總共登陸24個用戶,所有用戶都同時并發(fā)操作。用戶點擊“登記的教程”用戶點擊“啟動”,進行課程學習,進入DS模塊在DS模塊中進行學習,過程包括:首先,點擊一次課程結(jié)構(gòu)樹;然后,進行課程內(nèi)容的學習。點擊“返回LMS” 按鈕,返回到lmm模塊,點擊“退出”按鈕,退出系統(tǒng)場景描述二:用戶登陸lmm模塊,總共登錄48個用戶,每1秒登錄1個用戶用戶點擊“已登記教程”用戶點擊“啟動”,進行課程學習,進入DS模塊在DS模塊中進行學習,過程包括:首先,點擊一次課程結(jié)構(gòu)樹;然后,進行課程內(nèi)容的學習;點擊“返回LMS” 按鈕,返回到lmm模塊,點擊“退出”按鈕,退出系統(tǒng)場景描述三:用戶登錄的lmm模塊,總共登陸48個用戶,所有用戶都同時并發(fā)操作。用戶點擊“登記的教程”用戶點擊“啟動”,進行課程學習,進入DS模塊在DS模塊中進行學習,過程包括:首先,點擊一次課程結(jié)構(gòu)樹;然后,進行課程內(nèi)容的學習。點擊“返回LMS” 按鈕,返回到lmm模塊點擊“退出”按鈕,退出系統(tǒng)場景描述四:用戶登錄的lmm模塊,總共登陸48個用戶,每秒同時登錄10個用戶。用戶點擊“登記的教程”用戶點擊“啟動”,進行課程學習,進入DS模塊在DS模塊中進行學習,過程包括:首先,點擊一次課程結(jié)構(gòu)樹;然后,進行課程內(nèi)容的學習。點擊“返回LMS” 按鈕,返回到lmm模塊,點擊“退出”按鈕,退出系統(tǒng)場景描述五:用戶登錄的lmm模塊,總共登陸100個用戶,所有用戶同時并發(fā)操作。用戶點擊“登記的教程”用戶點擊“啟動”,進行課程學習,進入DS模塊在DS模塊中進行學習,過程包括:首先,點擊一次課程結(jié)構(gòu)樹;然后,進行課程內(nèi)容的學習。點擊“返回LMS” 按鈕,返回到lmm模塊場景描述六:用戶登錄的lmm模塊,總共登陸200個用戶,所有用戶同時并發(fā)操作用戶點擊“登記的教程”用戶點擊“啟動”,進行課程學習,進入DS模塊在DS模塊中進行學習,過程包括:首先,點擊一次課程結(jié)構(gòu)樹;然后,進行課程內(nèi)容的學習。點擊“返回LMS” 按鈕,返回到lmm模塊,點擊“退出”按鈕,退出系統(tǒng)場景描述七:戶登錄的lmm模塊,總共登陸24個用戶。所有用戶都同時并發(fā)操作所有用戶都同時并發(fā)操作,戶點擊“登記的教程”中“test”課件使用自發(fā)測試工具,目的測試24個用戶同時打開課件時服務器性能場景描述八登錄的lmm模塊,總共登陸60個用戶。所有用戶都同時并發(fā)操作有用戶都同時并發(fā)操作,戶點擊“登記的教程”中“test”課件使用自發(fā)測試工具,目的測試60個用戶同時打開課件時服務器性能4.使用LoadRunner進行負載/壓力測試4.1錄制基本的用戶腳本創(chuàng)建用戶腳本需要用到VuGen。提示:運行VuGen最好在1024*768的分辨率下,否則有些工具欄會看不到。啟動VisualUserGenerator后,通過菜單新建一個用戶腳本,選擇系統(tǒng)通訊的協(xié)議。這里我們需要測試的是Web應用,同時考慮到后臺SQL數(shù)據(jù)庫所以我們需要選擇Web(HTTP/HTML)協(xié)議+SQLSERVER協(xié)議,確定后,進入主窗體。通過菜單來啟動錄制腳本的命令。●在URL中添入要測試的Web站點地址..?!駵y試/lms-lmm/loginForm.do選擇要把錄制的腳本放到哪一個部分,默認情況下是“Action”。這里簡單說明一下:VuGen中的腳本分為三部分:vuser_init、vuser_end和Action。其中vuser_init和vuser_end都只能存在一個,不能再分割,而Action還可以分成無數(shù)多個部分(通過點擊New按鈕,新建ActionXXX)。在錄制需要登陸的系統(tǒng)時,我們把登陸部分放到vuser_init中,把登陸后的操作部分放到Action中,把注銷關閉登陸部分放到vuser_end中。(如果需要在登陸操作設集合點,那么登陸操作也要放到Action中,因為vuser_init中不能添加集合點)在其他情況下,我們只要把操作部分放到Action中即可。注意:在重復執(zhí)行測試腳本時,vuser_init和vuser_end中的內(nèi)容只會執(zhí)行一次,重復執(zhí)行的只是Action中的部分?!顸c“選項”按鈕,進入錄制的設置窗體,這里一般情況下不需要改動。●然后點“OK”后,VuGen開始錄制腳本。在錄制過程中,不要使用瀏覽器的“后退”功能,LoadRunner支持不太好!錄制過程中,在屏幕上會有一個工具條出現(xiàn)。錄制的過程和WinRunner有些類似,不再多介紹。錄制完成后,按下“結(jié)束錄制”按鈕,VuGen自動生成用戶腳本,退出錄制過程。4.2完善測試腳本當錄制完一個基本的用戶腳本后,在正式使用前我們還需要完善測試腳本,增強腳本的靈活性。一般情況下,我們通過以下幾種方法來完善測試腳本。插入事務、插入結(jié)合點、插入注解、參數(shù)化輸入。這里只舉例介紹參數(shù)化如何設置,其它只作簡單介紹。4.2.1插入事務事務(Transaction):為了衡量服務器的性能,我們需要定義事務。比如:我們在腳本中有一個數(shù)據(jù)查詢操作,為了衡量服務器執(zhí)行查詢操作的性能,我們把這個操作定義為一個事務,這樣在運行測試腳本時,LoadRunner運行到該事務的開始點時,LoadRunner就會開始計時,直到運行到該事務的結(jié)束點,計時結(jié)束。這個事務的運行時間在結(jié)果中會有反映。插入事務操作可以在錄制過程中進行,也可以在錄制結(jié)束后進行。LoadRunner運行在腳本中插入不限數(shù)量的事務。具體的操作方法如下:在需要定義事務的操作前面,通過菜單或者工具欄插入。輸入該事務的名稱。注意:事務的名稱最好要有意義,能夠清楚的說明該事務完成的動作。插入事務的開始點后,下面需要在需要定義事務的操作后面插入事務的“結(jié)束點”。同樣可以通過菜單或者工具欄插入。默認情況下,事務的名稱列出最近的一個事務名稱。一般情況下,事務名稱不用修改。事務的狀態(tài)默認情況下是LR_AUTO。一般情況下,我們也不需要修改,除非在手工編寫代碼時,有可能需要手動設置事務的狀態(tài)。4.2.2插入集合點插入集合點是為了衡量在加重負載的情況下服務器的性能情況。在測試計劃中,可能會要求系統(tǒng)能夠承受1000人同時提交數(shù)據(jù),在LoadRunner中可以通過在提交數(shù)據(jù)操作前面加入集合點,這樣當虛擬用戶運行到提交數(shù)據(jù)的集合點時,LoadRunner就會檢查同時有多少用戶運行到集合點,如果不到1000人,LoadRunner就會命令已經(jīng)到集合點的用戶在此等待,當在集合點等待的用戶達到1000人時,LoadRunner命令1000人同時去提交數(shù)據(jù),從而達到測試計劃中的需求。注意:集合點經(jīng)常和事務結(jié)合起來使用。集合點只能插入到Action部分,vuser_init和vuser_end中不能插入集合點。具體的操作方法如下:在需要插入集合點的前面,通過菜單或者工具欄操作輸入該集合點的名稱。注意:集合點的名稱最好要有意義,能夠清楚的說明該集合點完成的動作。4.2.3插入注釋注釋的作用就不多說了,不過插入注釋最好是在錄制過程中。具體的操作方法如下:在需要插入注釋的前面,通過菜單或者工具欄操作4.2.4參數(shù)化輸入如果用戶在錄制腳本過程中,填寫提交了一些數(shù)據(jù),比如要增加數(shù)據(jù)庫記錄。這些操作都被記錄到了腳本中。當多個虛擬用戶運行腳本時,都會提交相同的記錄,這樣不符合實際的運行情況,而且有可能引起沖突。為了更加真實的模擬實際環(huán)境,需要各種各樣的輸入。參數(shù)化輸入是一種不錯的方法。用參數(shù)表示用戶的腳本有兩個優(yōu)點:①可以使腳本的長度變短。②可以使用不同的數(shù)值來測試你的腳本。例如,如果你企圖搜索不同名稱的圖書,你僅僅需要寫提交函數(shù)一次。在回放的過程中,你可以使用不同的參數(shù)值,而不只搜索一個特定名稱的值。參數(shù)化包含以下兩項任務:①在腳本中用參數(shù)取代常量值。②設置參數(shù)的屬性以及數(shù)據(jù)源。參數(shù)化僅可以用于一個函數(shù)中的參量。你不能用參數(shù)表示非函數(shù)參數(shù)的字符串。另外,不是所有的函數(shù)都可以參數(shù)化的。參數(shù)化輸入的講解,我們采用一個例子的方式來進行。在本例中我們參數(shù)化用戶的登陸名:先看如下腳本,通過腳本錄制找到用戶登陸部分,如圖框選住登陸名,點鼠標右鍵,彈出對話框,選擇“替換為新參數(shù)”彈出對話框參數(shù)名隨意取,建議取通俗易懂的名字,下面我們重點介紹一下參數(shù)的類型?!馜ateTime:很簡單,在需要輸入日期/時間的地方,可以用DateTime類型來替代。其屬性設置也很簡單,選擇一種格式即可。當然也可以定制格式。.●GroupName:暫時不知道何處能用到,但設置比較簡單。在實際運行中,LoadRunner使用該虛擬用戶所在的VuserGroup來代替。但是在VuGen中運行時,GroupName將會是None.●LoadGeneratorName:在實際運行中,LoadRunner使用該虛擬用戶所在LoadGenerator的機器名來代替。.●IterationNumber:在實際運行中,LoadRunner使用該測試腳本當前循環(huán)的次數(shù)來代替。.●RandomNumber:隨機數(shù)。很簡單。在屬性設置中可以設置產(chǎn)生隨機數(shù)的范圍.●UniqueNumber:唯一的數(shù)。在屬性設置中可以設置第一個數(shù)以及遞增的數(shù)的大小。注意:使用該參數(shù)類型必須注意可以接受的最大數(shù)。例如:某個文本框能接受的最大數(shù)為99。當使用該參數(shù)類型時,設置第一個數(shù)為1,遞增的數(shù)為1,但100個虛擬用戶同時運行時,第100個虛擬用戶輸入的將是100,這樣腳本運行將會出錯。注意:這里說的遞增意思是各個用戶取第一個值的遞增數(shù),每個用戶相鄰的兩次循環(huán)之間的差值為1。舉例說明:假如起始數(shù)為1,遞增為5,那么第一個用戶第一次循環(huán)取值1,第二次循環(huán)取值2;第二個用戶第一次循環(huán)取值為6,第二次為7;依次類推。●VuserID:設置比較簡單。在實際運行中,LoadRunner使用該虛擬用戶的ID來代替,該ID是由Controller來控制的。但是在VuGen中運行時,VuserID將會是–1。File:需要在屬性設置中編輯文件,添加內(nèi)容,也可以從現(xiàn)成的數(shù)據(jù)庫中取數(shù)據(jù)(下面我們將會介紹)●UserDefinedFunction:從用戶開發(fā)的dll文件提取數(shù)據(jù)。就目前我認為,這種方式?jīng)]有必要。VuGen支持C語言的語法,在VuGen中重新編寫類似的函數(shù)應該不難。上面的例子中,我們?nèi)‰S機數(shù)即可。點“Properties…..”按鈕,進行屬性設置窗口添入隨機數(shù)的取值范圍為(1-50),選擇一種數(shù)據(jù)格式。在“屬性”中有以下幾個選項:◆EachOccurrence:在運行時,每遇到一次該參數(shù),便會取一個新的值◆Eachiteration:運行時,在每一次循環(huán)中都取相同的值◆Once:運行時,在每次循環(huán)中,該參數(shù)只取一次值這里我們用的是隨機數(shù),選擇EachOccurrence非常合適。下面我們再介紹用數(shù)據(jù)庫中的用戶名來參數(shù)化登陸用戶名??蜻x住登陸名,點鼠標右鍵,彈出對話框,選擇“替換為新參數(shù)”彈出對話框,此時參數(shù)名輸入:name,參數(shù)類型選擇File,如圖點“屬性”按鈕,出現(xiàn)以下窗口注意:參數(shù)的文件名不要使用con.dat、pm.dat或者lpt*.dat等系統(tǒng)裝置名下面我們將會連接數(shù)據(jù)庫,從數(shù)據(jù)表中選擇用戶名。點“數(shù)據(jù)向?qū)А卑粹o,顯示如圖使用第2項,選擇“使用手動指定SQL語句”點下一步,出現(xiàn)如圖窗口添入連接字符串,點“創(chuàng)建”按鈕,選擇事先配置好的ODBC連接。在SQL語句里輸入select查詢語句,出現(xiàn)如圖窗口從哪一行開始取值按列名稱取值從哪一行開始取值按列名稱取值提醒:在參數(shù)數(shù)據(jù)顯示區(qū),最多只能看到100行,如果數(shù)據(jù)超過100行,只能點“編輯”按鈕,進入記事本看。“選擇下一行”有以下幾種選擇:●Sequential:按照順序一行行的讀取。每一個虛擬用戶都會按照相同的順序讀取●Random:在每次循環(huán)里隨機的讀取一個,但是在循環(huán)中一直保持不變●Unique:唯一的數(shù)。注意:使用該類型必須注意數(shù)據(jù)表有足夠多的數(shù)。比如Controller中設定20個虛擬用戶進行5次循環(huán),那么編號為1的虛擬用戶取前5個數(shù),編號為2的虛擬用戶取6-10的數(shù),依次類推,這樣數(shù)據(jù)表中至少要有100個數(shù)據(jù),否則Controller運行過程中會返回一個錯誤。“按編號”指選擇列表中的那一列數(shù)據(jù),從左到右分別是1、2、3依次通常用在有關聯(lián)性的數(shù)據(jù)上面。我們這里取值Sequential即可。完成設置關閉即可4.3單機運行測試腳本經(jīng)過以上的各個步驟后,腳本就可以運行了。運行腳本可以通過菜單或者工具欄來操作。執(zhí)行“運行”命令后,VuGen先編譯腳本,檢查是否有語法等錯誤。如果有錯誤,VuGen將會提示錯誤。雙擊錯誤提示,VuGen能夠定位到出現(xiàn)錯誤的那一行。為了驗證腳本的正確性,我們還可以調(diào)試腳本,比如在腳本中加斷點等,操作和在VC中完全一樣,相信大家誰都不會感到陌生。如果編譯通過,就會開始運行。然后會出現(xiàn)運行結(jié)果。5實施測試5.1選擇腳本,創(chuàng)建虛擬用戶啟用“controller”彈出如圖窗口修改數(shù)量修改數(shù)量選擇剛才錄制并保存好的腳本,添加到方案中,點“確定”出現(xiàn)如圖根據(jù)需要修改虛擬用戶數(shù)量,這里我們?nèi) ?00”根據(jù)實現(xiàn)場景設計,取不同數(shù)字點“編輯計劃”細化方案,計劃名里選擇計劃種類:加壓,緩慢加壓、默認計劃或新建立計劃。默認計劃:同時加載所有vuser,直到完成加壓:每15秒啟動2個vuser持續(xù)時間5分種緩慢加壓::每2分種啟動2個vuser持續(xù)時間10分種這里我們選擇“加壓”出現(xiàn)如圖單位秒內(nèi)同時加載幾個vuser單位秒內(nèi)同時加載幾個vuser點“加壓”標簽設置加壓方法,點“持續(xù)時間”標簽選擇完成時間,點“加壓”標簽選擇退出方法,點“方案開始時間”可以定義時間后自動到點執(zhí)行,并在一個限定的時間范圍內(nèi)結(jié)束,所有設置完畢后,點“ok”返回上一級窗口,點“開始方案”啟動運行,出現(xiàn)如圖窗口Windows資源監(jiān)視窗口打開可用圖中目錄樹,選擇系統(tǒng)資源找到windows資源Windows資源監(jiān)視窗口打開可用圖中目錄樹,選擇系統(tǒng)資源找到windows資源5.2添加windows資源監(jiān)視窗口loadruner默認性能監(jiān)視窗口四個,分別是“運行vuser“、”事務響應時間“、“每秒點擊次數(shù)”最后一個可以根據(jù)用戶自己選擇現(xiàn)實什么窗口。打開可用圖中目錄樹,選擇系統(tǒng)資源,找到windows資源雙擊,則windows資源監(jiān)視窗口便自動替換原窗口如上圖。當然loadrunner也可以同時顯示1-16個窗口,方法是點右鍵,在彈出菜單中選擇“查看圖”選擇顯示的圖數(shù),也可以自定義數(shù)字。5.3添加windows性能計數(shù)器鼠標選擇windows資源監(jiān)視窗口,點擊右鍵彈出菜單中選擇“ADDMeasurements..”彈出如圖窗口點“添加”把監(jiān)視的服務器ip地址輸入,點確定,如圖如果可以正常聯(lián)機到服務器,則在資源度量中會顯示全部計數(shù)器,此時如果點“確定”則系統(tǒng)默認全部選中,在監(jiān)視窗口中會顯示所有性能曲線,無法單獨過濾顯示某條曲線,如果選中某個計數(shù)器后點“添加”則彈出該項目下的其它性能指標,選擇需要的計數(shù)器后點“添加”如圖此時要注意,你登陸客戶端(也就是你裝有l(wèi)oadrunner機器)的用戶應該是管理員身份,同時還要保證該用戶在被監(jiān)視的服務器上也是管理員身份。這樣選擇雖然監(jiān)視窗口中仍會顯示所有性能曲線,但是可以通過鼠標右鍵彈出菜單,選中你指定的某條曲線單獨顯示。方法是雙擊監(jiān)視窗口放大顯示,然后右鍵選擇“僅顯示指定圖”監(jiān)視窗口還可以互相疊加等操作,功能強大,通過右鍵菜單選擇可以進行復雜顯示操作。常用的還有web程序服務器圖、數(shù)據(jù)庫服務器資源圖等,添加方法雷同。計數(shù)器有那些,有什么含義,理想值是多少,可以參見第六章節(jié)。5.4執(zhí)行腳本此時設置完畢后,那就簡單了,點擊“開始方案”注意觀察吧。點一下,ok!點一下,ok!5.4.1分析結(jié)果腳本執(zhí)行完畢后,loadrunner會自動分析結(jié)果,生成分析結(jié)果圖或表,方法是點導航欄“結(jié)果”選現(xiàn),在彈出窗口中選擇“分析結(jié)果”6分析以及監(jiān)視場景在運行過程中,可以監(jiān)視各個服務器的運行情況(DataBaseServer、WebServer等)。監(jiān)視場景通過添加性能計數(shù)器來實現(xiàn)。這一章非常的重要,確定系統(tǒng)瓶頸全靠它了。下面重點講講需要添加那些計數(shù)器,以及那些計數(shù)器代表什么意思。由于Win2000Professional、Server以及AdvancedServer提供的計數(shù)器不完全相同,這里我們討論將以Server為基準。監(jiān)視場景需要在Run視圖中設置然后,出現(xiàn)添加計數(shù)器的對話框其他的操作就和控制面板“性能”中添加性能計數(shù)器的操作一樣,這里不再詳細說明。本章主要說明一下各個系統(tǒng)計數(shù)器的含義(數(shù)據(jù)庫的計數(shù)器不做重點,只是拿SQLServer2000作為例子進行說明。因為數(shù)據(jù)庫各個版本之間差異比較大,請參考您使用的數(shù)據(jù)庫系統(tǒng)的幫助)。6.1Memory相關內(nèi)存是第一個監(jiān)視對象,確定系統(tǒng)瓶頸的第一個步驟就是排除內(nèi)存問題。內(nèi)存短缺的問題可能會引起各種各樣的問題。ObjectCountersDescription(描述)參考值MemoryAvailableMBytes物理內(nèi)存的可用數(shù)(單位Mbytes)。默認情況下IIS5.0使用50%的可用物理內(nèi)存,作為IIS的文件緩存(filecache)。IIS基本占用2.5MB,每個附加連接將在此基礎上占用10KB左右至少要有10%的物理MemoryPage/secPageFaults/secPagesInput/secPagesInput/secPageReads/secTransitionFaults/sec物理內(nèi)存的可用數(shù)(單位Mbytes)。默認情況下IIS5.0使用50%的可用物理內(nèi)存,作為IIS的文件緩存(filecache)。IIS基本占用2.5MB,每個附加連接將在此基礎上占用10KB左右。至少要有10%的物理內(nèi)存值當處理器向內(nèi)存指定的位置請求一頁(可能是數(shù)據(jù)或代碼)出現(xiàn)錯誤時,這就構(gòu)成一個PageFault。如果該頁在內(nèi)存的其他位置,該錯誤被稱為軟錯誤(用TransitionFault/sec數(shù)器衡量);如果該頁必須從硬盤上重新讀取時,被稱為硬錯誤。許多處理器可以在有大軟錯誤的情況下繼續(xù)操作。但是,硬錯誤可以導致明顯的拖延。PageFaults/sec是處理器每秒鐘處理的錯誤頁(包括軟錯誤和硬錯誤)。PagesInput/sec是為了解決硬錯誤頁,從硬盤上讀取的頁數(shù),而PageReads/sec是為了解決硬錯誤,從硬盤讀取的次數(shù)。如果PageReads/Sec比率持續(xù)保持為5,表示可能內(nèi)存不足。Pages/sec是指為解析硬頁錯誤從磁盤讀取或?qū)懭氪疟P的頁數(shù)。Page/sec推薦00-20(如果服務器沒有足夠的內(nèi)存處理其工作負荷,此數(shù)值將一直很高。如果大于80,表示有問題)。這些計數(shù)器的值比較低,說明Web服務器響應請求比較快,否則可能是服務器系統(tǒng)內(nèi)存短缺引起(也可能是緩存太大,導致系統(tǒng)內(nèi)存太少)。PageInput/sec的值可以衡量出硬錯誤頁發(fā)生的速率,通常它的值會于或者等于PageReads/sec。MemoryCacheBytesMemoryCacheBytes文件系統(tǒng)緩存(FileSystemCache)默默認情況下認情況下為50%的可用物理內(nèi)存。如為50%的可IIS5.0運行內(nèi)存不夠時,它會自動整理用物理內(nèi)存緩存。需要關注該計數(shù)器的趨勢變化InternetFileCacheHits%FileCacheHits%是文件緩存命中全部(對于一個InformationFileCache緩存需求的比例,反映了IIS的文件緩大部分是靜ServicesFlushes存設置的工作情況。而FileCacheHits態(tài)網(wǎng)頁組成GlobalFileCacheHits是文件緩存命中的具體值,F(xiàn)ileCache的網(wǎng)站)FileFlushes是自服務器啟動之后文件緩存CacheHits%刷新次數(shù),如果刷新太慢,會浪費內(nèi)存;如果刷新太快,緩存中的對象會太頻繁屬于非常好!的丟棄生成,起不到緩存的作用。通過FileCacheHits和FileCacheFlushes可以得到一個適當?shù)乃⑿轮担▍⒖糏IS的設置ObjectTTL、MemCacheSize、MaxCacheFileSize)MemoryPoolPagedBytesPoolNonpagedBytesPoolPagedBytesPoolNonpagedBytes這兩個計數(shù)器監(jiān)視服務器上各個進程的分頁池字節(jié)數(shù)和非分頁池字節(jié)數(shù)。在訪問數(shù)比較固定的情況下,PoolNonpagedBytes是比較定的,如果訪問數(shù)逐步增加,該值會緩慢的增加ProcessVirtualBytesWorkingSet計數(shù)器VirtualBytes(實VirtualBytes數(shù)器監(jiān)視IIS5.0保留的例inetinfo、虛地址空間的數(shù)量,實例化為inetinfodllhost)WorkingSet(實例進程(IIS運行的核心)和Dllhost進程(隔離/連接池的應用程序必需的)。inetinfo、dllhost)WorkingSet計數(shù)器反映了每個進程使Dllhost#n進程都用的內(nèi)存頁的數(shù)量。系統(tǒng)的內(nèi)存頁(pool要添加計數(shù)器Page)只能由操作系統(tǒng)的核心模塊直接訪問,用戶進程不能訪問。運行IIS5.0的服務器上,負責web連接的線程以及它需要的一些對象都保存在未分頁的池中(nonpagedpool),比如文件句柄和socket連接ProcessPrivateBytes指這個處理不能與其他處理共享的、已分配的當前字節(jié)數(shù)MemoryCommittedBytes是指以字節(jié)表示的確認虛擬內(nèi)存。(確認內(nèi)存是指為磁盤分頁文件在磁盤上保留的空間以便在需推薦不超過物理內(nèi)存的75%要將其寫回磁盤時使用)推薦部超過物理內(nèi)存的75%內(nèi)存問題主要檢查應用程序是否存在內(nèi)存泄漏。如果發(fā)生了內(nèi)存泄漏,Process\PrivateBytes計數(shù)器和Process\WorkingSet計數(shù)器的值往往會升高,同時AvailableBytes的值會降低。內(nèi)存泄漏應該通過一個長時間的,用來研究分析當所有內(nèi)存都耗盡時,應用程序反應情況的測試來檢驗。6.2Processor相關Object(對象)CountersDescription(描述)參考值SytemProcessorQueueLengthProcessorQueueLength是指處理列隊中的線程數(shù)。即使在有多個處理器的計算機上處理器時間也會有一個單列隊。不象磁盤計數(shù)器,這個計數(shù)器僅計數(shù)就緒的線程,而不計數(shù)運行中的線程。如果處理器列隊中總是有兩個以上的線程通常表示處理器堵塞小于2。顯示在由Web服務器所有處理器共享的隊列中等待執(zhí)行的線程數(shù)。處理器瓶頸會導致該值持續(xù)大于2Processor%ProcessorTimeCPU使用率。這是查看處理器飽和狀況的最佳計數(shù)器。顯示所有CPU的線程處理時間。如果一個或多個處理器的該數(shù)值持續(xù)超過90%,則表示此測試的負載對于目前的硬件過于沉重。為多處理器服務器添加該計數(shù)器的0到x個實例小于75%。排除內(nèi)存因素,如果該計數(shù)器的值比較大,而同時網(wǎng)卡和硬盤的值比較低,那么可以定CPU瓶頸SystemContextSwitches/secContextSwitches/sec指計算機上的所有處理器全都從一個線程轉(zhuǎn)換到另一個線程的綜合速率。當正在運行的線程自動放棄處理器時出現(xiàn)上下文轉(zhuǎn)換,由一個有更高優(yōu)先就緒的線程占先或在用戶模式和特權(quán)(內(nèi)核)模式之間轉(zhuǎn)換以使用執(zhí)行或分系統(tǒng)服務。它是在計算機上的所有處理器上運行的所有線程的Thread:ContextSwitches/sec的總數(shù)并且用轉(zhuǎn)換數(shù)量衡量。在系統(tǒng)和線程對象上有上下文轉(zhuǎn)換計數(shù)器如果切換次數(shù)到5000*CPU個數(shù)和10000*CPU個數(shù)中,說明它忙于切換線程而不是處理ASP腳本Processo%PrivilegedTime%PrivilegedTime是在特權(quán)模式下處理線程執(zhí)行代碼所花時間的百分比。當調(diào)用Windows系統(tǒng)服務時,此服務經(jīng)常在特權(quán)模式運行,以便獲取對系統(tǒng)專有數(shù)據(jù)的訪問。在用戶模式執(zhí)行的線程無法訪問這些數(shù)據(jù)。對系統(tǒng)的調(diào)用可以是直接的(explicit)或間接的(implicit),例如頁面錯誤或中斷。不像某些早期的操作系統(tǒng),Windows除了使用用戶和特權(quán)模式的傳統(tǒng)保護模式之外,還使用處理邊界作為分系統(tǒng)保護。某些由Windows為您的應用程序所做的操作除了出現(xiàn)在處理的特權(quán)時間內(nèi),還可能在其他子系統(tǒng)處理出現(xiàn)TimeSwitches/sec(實例化inetinfo和dllhost如果你決定要增加線程字節(jié)池的大小,你應該監(jiān)視這三個計數(shù)器(包括上面的一個)。增加線數(shù)可能會增加上下文切換次數(shù),這樣性能不會上升反而會下降。如果十個實例的上下文切換值非常高,就應該減小線程字節(jié)池的大小ProcessorInterrupts/sec%DPCTimeTime這兩個計數(shù)器能夠反映處理器用在處理中斷以及推遲處理調(diào)用的時間。如果處理器使用率超過Interrupts/sec指處理器每秒鐘接收并維90%且硬件中斷的平均值。正常的線程操作在中斷時懸停。大多數(shù)的系統(tǒng)時鐘每InterruptTime大于隔10毫秒中斷處理器一次,形成了間15%,則處理隔活動的后臺如果處理器使用率超過90%,且Interrupts/sectime大于15%則處理器可能負載過重,并發(fā)生中斷ProcessorInterrupts/sec%DPCTime這兩個計數(shù)器能夠反映處理器用在處理
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)安全保衛(wèi)與應急管理指南(標準版)
- 2025年智能家居產(chǎn)品售后服務規(guī)范
- 法律合規(guī)與風險控制制度
- 2025年醫(yī)療器械使用與維護規(guī)范
- 超市員工績效考核及評價制度
- 超市庫存管理及盤點制度
- 2026年西岸華府幼兒園短期教師招聘備考題庫及完整答案詳解1套
- 養(yǎng)老院老人健康飲食營養(yǎng)師激勵制度
- 2026年青島中遠海運物流供應鏈有限公司招聘備考題庫完整答案詳解
- 2026年舟山市普朱管委會黨政辦公室招聘備考題庫及完整答案詳解1套
- 器官移植術后排斥反應的風險分層管理
- 虛擬電廠關鍵技術
- 事業(yè)單位清算及財務報告編寫范本
- 護坡綠化勞務合同范本
- 臨床績效的DRG與CMI雙指標調(diào)控
- 2026年湛江日報社公開招聘事業(yè)編制工作人員備考題庫及完整答案詳解
- 2025-2026學年人教版數(shù)學三年級上學期期末仿真模擬試卷一(含答案)
- 2025年涼山教師業(yè)務素質(zhì)測試題及答案
- 2026年昭通市威信縣公安局第一季度輔警招聘(14人)筆試模擬試題及答案解析
- 氫能技術研發(fā)協(xié)議
- 2025交管12123學法減分整套試題帶答案解析(全國適用)
評論
0/150
提交評論