1.協(xié)議的選擇
Loadrunner的協(xié)議選擇眾多,想正確的選擇腳本協(xié)議,首先要從Loadrunner的
工作原理上深入的理解協(xié)議的作用和意義, Loadrunner啟動后,在任務(wù)欄上有一個loadrunner agent process 進(jìn)程,這個進(jìn)程的一項重要的工作就是監(jiān)視各種協(xié)議的客戶端和服務(wù)器端的通信.只要是能支持的協(xié)議, Loadrunner在錄制的工程中就可以通過腳本語言將通信工程錄制下來,所以要明確被測軟件的通信過程和所使用的協(xié)議, Loadrunner才能正確的錄制腳本。
a.選擇單協(xié)議還是多協(xié)議的關(guān)鍵是你對應(yīng)用的通信細(xì)節(jié)要清楚.可以多問問開發(fā)他們是怎么實現(xiàn)的.比如有個WEB系統(tǒng)需要測試,看上去選擇單協(xié)議 就可以了,但是在和服務(wù)器交互的過程中,瀏覽器下載頁面里的APPLET并且用APPLET和服務(wù)器建立了SOCKET傳輸一些數(shù)據(jù).這種情況下就該選擇 多協(xié)議了.還有一些郵件方面的應(yīng)用一般都要選擇多協(xié)議,郵件系統(tǒng)都會使用到發(fā)送和接受兩種協(xié)議.有些時候不選擇多協(xié)議,腳本也能運行.但你的腳本沒有完全 反映出客戶端和服務(wù)器端的交互過程.選擇錄制腳本的協(xié)議前,還是要多分析一下應(yīng)用系統(tǒng)
b.一般將應(yīng)用軟件分為B/S和C/S結(jié)構(gòu)來選擇協(xié)議, 對于B/S結(jié)構(gòu),,可以選擇WEB(HTTP/HTTML)協(xié)議,;對于C/S結(jié)構(gòu),可以根據(jù)后端數(shù)據(jù)庫的類型來選擇,,如SYBASECTLIB協(xié)議用于測試 后臺數(shù)據(jù)庫為SYBASE的應(yīng)用,,MSSQLSERVER協(xié)議用于測試后臺數(shù)據(jù)庫為SQL SERVER的應(yīng)用;對于沒有數(shù)據(jù)庫的WINDOWS應(yīng)用,,可以選擇WINDOWS SOCKETS這個底層的協(xié)議,;這里需要說明的是,無論使用哪種協(xié)議,,LOADRUNNER的測試流程都基本是一樣的,,只有在設(shè)定細(xì)節(jié)上有所不同,測試人 員只要對被測應(yīng)用的技術(shù)架構(gòu)熟悉了,,就能夠成功完成腳本的錄制,。
2.腳本的錄制
當(dāng)選擇好腳本協(xié)議后,就可以對開始錄制了,如果是B/S架構(gòu)的測試對象,當(dāng)然選擇了web(http/html),接著輸入要測試的URL地址,確定 就OK了。
a.明確腳本的三個部分
LOADRUNNER 將測試腳本分為3個部分,,VUSER_INIT,VUSER_END和ACTION,其中VUSER_INIT和VUSER_END一般用于存放應(yīng)用程序 初始化的腳本和注銷關(guān)閉的腳本,在重復(fù)執(zhí)行的時候,這兩部分的內(nèi)容只執(zhí)行一次.而ACTION部分用于存放實際的操作腳本,這部分腳本可以多次執(zhí)行,測試 人員還可以根據(jù)需要創(chuàng)建多個ACTION 腳本,但不能創(chuàng)建VUSER_INIT和VUSER_END.所以在錄制的時候一定要明確:錄制的流程是否要迭代,如果要一定要放入ACTION部分,。
b.錄制時的腳本開發(fā)
在錄制的時候在屏幕上會有一個懸浮的控制腳本錄制的工具欄,是腳本錄制過程中測試人員和VUGEN交互的主要平臺,每個可用的按鈕都可以執(zhí)行相應(yīng)的操 作,如上圖,測試人員可以新建Action,插入文本檢查點,制定開始結(jié)束事務(wù),也可以在需要測試的功能點插入集合點,或作一些必要的注釋等等…..
3.腳本的開發(fā)與加強(qiáng)
該階段也是腳本錄制階段最重要的部分,為了實現(xiàn)理想中的需求,你可以添加事務(wù),插入集合點,調(diào)整運行時的設(shè)置,參數(shù)化數(shù)據(jù),插入文本圖片檢查點,但是 在這之前必須要確保錄制的腳本能夠跑通,即回放沒有問題,有如下提示圖。
a.添加事務(wù)
除了從總體把握系統(tǒng)的性能問題外,測試工程師可能還要對業(yè)務(wù)中的某一個具體部分的數(shù)據(jù)進(jìn)行分析,來檢測該功能點的性能問題,為了達(dá)到這個目的,就要為 該功能點添加事務(wù),將該功能點用開始與結(jié)束事務(wù)包起來,分析該事務(wù)來了解和把握該功能的性能,。
所謂事務(wù)(TRANSACTION),就是在腳本定義中定義的某段操作(ACTION),更確切的說,就是一段腳本語句.定義事務(wù)時,首先在腳 本中找到事務(wù)的開始和結(jié)束位置,然后分別插入一個事務(wù)起始標(biāo)記,這樣,當(dāng)腳本運行的時候,LOADRUNER會自動在事務(wù)的起始點計時,腳本在運行到事務(wù) 結(jié)束點時計時結(jié)束,系統(tǒng)會自動記錄這段操作的運行時間等性能數(shù)據(jù),;在腳本運行完畢后,系統(tǒng)會在結(jié)果信息中單獨反映每個事務(wù)運行結(jié)果。
事務(wù)的插入操作可以在腳本運行過程中進(jìn)行,也可以在腳本錄制完畢后進(jìn)行,建議在腳本錄制完畢后進(jìn)行.如下圖添加,。
也可以在腳本中插入事務(wù),在樹圖列表下右鍵,選擇在該項之前或之后添加事務(wù),開始和結(jié)束的事務(wù)是成對出現(xiàn),不然腳本會報錯,如下圖:
b.插入集合點
在控制臺執(zhí)行負(fù)載測試,設(shè)置多用戶同時加載并發(fā),并發(fā)過程僅僅體現(xiàn)在開始執(zhí)行的那一剎那,隨著服務(wù)器對請求的響應(yīng)時間的不一致或系統(tǒng)環(huán)境條件的限制,在運行過程中能集合到一點的可能性微乎其微,所以將一定數(shù)量的用戶同時加載并不是真正意義上的并發(fā),。
系統(tǒng)壓力最大的情況是:所有用戶都集中到系統(tǒng)瓶頸的某個點上進(jìn)行操作,從腳本的角度來講,這個點就是執(zhí)行腳本的某一條或一段語句,為了真實模擬 這個最壞的情況,查看系統(tǒng)在最壞情況下的反映。
為了實現(xiàn)測試一個業(yè)務(wù)中途的并發(fā)性能測試,LR中的集合點就孕育而生了,使跑在前面的用戶在該點上等待,讓后面的追趕上來, 將眾多的Vuser集合到一起,來達(dá)到并發(fā)的效果.來幫助測試人員實現(xiàn)真正意義上的并發(fā),。
插入集合點的方法:可以在錄制的時候添加,也可以象添加事務(wù)一樣,在樹圖列表下添加.當(dāng)然如果熟悉集合點的語言的話在腳本中直接插入語言也可 以,。
c.運行時設(shè)置
點擊右上角圖標(biāo),彈出運行時設(shè)置對話框,就可以對迭代次數(shù)和迭代邏輯進(jìn)行設(shè)置,迭代之間的時間的設(shè)置,還可以對網(wǎng)絡(luò)的速度,瀏覽 器,Internet協(xié)議的模擬。
每個 Vuser 腳本都包括三部分:vuser_init、Run (Actions) 和 vuser_end,??梢灾甘?Vuser 在運行腳本時重復(fù)執(zhí)行 Run 部分。每次重復(fù)稱為一次迭代,。 運行多次迭代時,,將不會重復(fù)執(zhí)行 Vuser 腳本的 vuser_init 和 vuser_end 部分。
迭代次數(shù):迭代的次數(shù),。Vuser 將按指定的次數(shù)重復(fù)執(zhí)行所有 Actions,。注意:對于 LoadRunner Controller 和優(yōu)化模塊:如果在計劃設(shè)置中指定了場景或會話步驟持續(xù)時間,則持續(xù)時間設(shè)置將覆蓋 Vuser 迭代設(shè)置,。這意味著,,如果持續(xù)時間被設(shè)置為 5 分鐘(默認(rèn)設(shè)置),Vuser 將在 5 分鐘內(nèi)根據(jù)需要連續(xù)運行任意多次迭代,,即使運行時設(shè)置僅指定一次迭代,。
運行多操作腳本時,可以指明執(zhí)行操作的方法以及 Vuser 執(zhí)行這些操作的方法:操作塊:操作塊是腳本內(nèi)的操作組,。您可以單獨設(shè)置每個塊的屬性 - 其順序、迭代和權(quán)重,。順序:您可以設(shè)置腳本內(nèi)的操作順序,。還可以指明是按順序還是隨機(jī)執(zhí)行操作。迭代:除了設(shè)置整個 Run 部分的迭代次數(shù)以外,,還可以設(shè)置單個操作或操作塊的迭代,。該設(shè)置非常有用,例如,,可以用來模擬一個商業(yè)站點,,您在該站點執(zhí)行了多次查詢查找某個產(chǎn)品,但只 進(jìn)行了一次購買,。權(quán)重:對于隨機(jī)運行其操作的操作塊,,您可以設(shè)置塊內(nèi)每個操作的權(quán)重或百分比。
d.參數(shù)化腳本
眾多用戶都使用相同帳戶登陸或相同的數(shù)據(jù)來測試腳本,對系統(tǒng)造成的壓力與實際情況會有所不同.而對于那些禁止一個用戶多次登陸的系統(tǒng),也就嚴(yán)重到無法 測試的地步了.為了解決這個問題,讓系統(tǒng)更加真實的模擬多用戶使用的實際環(huán)境,LOADRUNNER提供了對腳本進(jìn)行參數(shù)化輸入的功能;讓每個虛擬用戶都 擁有自己的帳戶進(jìn)行登錄和運行,。
所謂的腳本參數(shù)化,就是針對腳本中的某些常量,定義一個或多個包含數(shù)據(jù)源的參數(shù)來取代,讓場景中不同的虛擬用戶在執(zhí)行相同的腳本時,分別使用參 數(shù)數(shù)據(jù)源中的不同數(shù)據(jù)代替這些常量,從而達(dá)到模擬多用戶真實使用系統(tǒng)的目的,。
明確需參數(shù)的數(shù)據(jù),選中該數(shù)據(jù),,右鍵替換為新參數(shù),,打開屬性—>用記事本編輯—>運行腳本,it is over,。
需要注意的是在參數(shù)化屬性頁面的設(shè)置比較復(fù)雜,,下面就講解下設(shè)置的細(xì)節(jié):
- Select next row :多個VU如何取值
- Sequential:按照順序一行行的讀取。每一個虛擬用戶都會按照相同的順序讀取
- Random:在每次循環(huán)里隨機(jī)的讀取一個,但是在循環(huán)中一直保持不變
- Unique :每個VU取唯一的值,。注意:使用該類型必須注意數(shù)據(jù)表有足夠多的數(shù),。
- Same Line As 某個參數(shù)(比如Name):和前面定義的參數(shù)Name 取同行的記錄。通常用在有關(guān)聯(lián)性的數(shù)據(jù)上面,。
- Update value on:多次迭代如何取值
- once在所有的反復(fù)中都使用同一個值
- each iteration則每次反復(fù)都要取新值,,
- each occurrence則只要發(fā)現(xiàn)該參數(shù)就要重新取值,也就是如果一個action中有多個該參數(shù),,每遇到一個就要重新取一個值
- 一個參數(shù)在一個Action中出現(xiàn)多次時
- Random+each iteration 該次迭代中某參數(shù)的取值方法為:本次迭代中參數(shù)第一次取的值,,多次取值不變化
- Random+each occurrence 該次迭代中某參數(shù)的取值方法為:在本次迭代中參數(shù)每次取值都通過Random來變化
- Random+once 在所有迭代中某參數(shù)的取值受第一次取值的影響。第一次取值通過Random來變化,,之后不再改變
參數(shù)化數(shù)據(jù)的準(zhǔn)備:可以通過一些工具來生成需要的數(shù)據(jù),,如果在數(shù)據(jù)庫中有現(xiàn)成的數(shù)據(jù)也可以通過數(shù)據(jù)庫導(dǎo)出來達(dá)到目的,只要選擇數(shù)據(jù)向?qū)?,連接到數(shù)據(jù)庫服 務(wù)器,,輸入SQL語句即可,如下圖