LoadRunner自動(dòng)化測(cè)試工具的應(yīng)用_第1頁(yè)
LoadRunner自動(dòng)化測(cè)試工具的應(yīng)用_第2頁(yè)
LoadRunner自動(dòng)化測(cè)試工具的應(yīng)用_第3頁(yè)
LoadRunner自動(dòng)化測(cè)試工具的應(yīng)用_第4頁(yè)
LoadRunner自動(dòng)化測(cè)試工具的應(yīng)用_第5頁(yè)
已閱讀5頁(yè),還剩31頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、LoadRunner自動(dòng)化測(cè)試工具的應(yīng)用(講稿)(由于工作繁忙,時(shí)間倉(cāng)促,講稿均在下班后寫成,加上LRS大精深,本人水平有限,敬請(qǐng)各位提出批評(píng)和建議,文中吸收了深圳軟件測(cè)試論壇兩位板主的觀點(diǎn),在此表示感謝)第一部分:Loadrunner的簡(jiǎn)介L(zhǎng)oadRunner?是一種預(yù)測(cè)系統(tǒng)行為和性能的工業(yè)級(jí)標(biāo)準(zhǔn)性能測(cè)試負(fù)載測(cè)試工具。通過以 模擬上千萬用戶實(shí)施并發(fā)負(fù)載及實(shí)時(shí)性能監(jiān)測(cè)的方式來確認(rèn)和查找問題,LoadRunner能夠?qū)φ麄€(gè)企業(yè)架構(gòu)進(jìn)行測(cè)試。通過使用LoadRunner ,企業(yè)能最大限度地縮短測(cè)試時(shí)間,優(yōu)化性能和加速應(yīng)用系統(tǒng)的發(fā)布周期。目前企業(yè)的網(wǎng)絡(luò)應(yīng)用環(huán)境都必須支持大量用戶,網(wǎng)絡(luò)體系架構(gòu)中含各類

2、應(yīng)用環(huán)境且由不 同供應(yīng)商提供軟件和硬件產(chǎn)品。難以預(yù)知的用戶負(fù)載和愈來愈復(fù)雜的應(yīng)用環(huán)境使公司時(shí)時(shí)擔(dān) 心會(huì)發(fā)生用戶響應(yīng)速度過慢,系統(tǒng)崩潰等問題。這些都不可避免地導(dǎo)致公司收益的損失。Mercury Interactive 的LoadRunner能讓企業(yè)保護(hù)自己的收入來源,無需購(gòu)置額外硬件而最 大限度地利用現(xiàn)有的IT資源,并確保終端用戶在應(yīng)用系統(tǒng)的各個(gè)環(huán)節(jié)中對(duì)其測(cè)試應(yīng)用的質(zhì) 量,可靠性和可擴(kuò)展性都有良好的評(píng)價(jià)。LoadRunner是一種適用于各種體系架構(gòu)的負(fù)載測(cè)試工具,它能預(yù)測(cè)系統(tǒng)行為并優(yōu) 化系統(tǒng)性能。LoadRunner的測(cè)試對(duì)象是整個(gè)企業(yè)的系統(tǒng),它通過模擬實(shí)際用戶的操作行為 和實(shí)行實(shí)時(shí)性能監(jiān)測(cè),來

3、幫助您更快的查找和發(fā)現(xiàn)問題。此外,LoadRunner能支持廣范的協(xié)議和技術(shù),為您的特殊環(huán)境提供特殊的解決方案。安裝注意事項(xiàng):LR的版本:目前常見的:LR7.0,LR7.51,LR7.6,LR7.8,每個(gè)版本差別蠻大的,大家盡量使用高版本。本文以LR7.8為例。操作系統(tǒng)選擇:L班個(gè)比較底層的軟件,最好為Windows 2000,因?yàn)閃2k的穩(wěn)定性和兼容性都不錯(cuò),有人把LR裝在WinXp下面,是有問題的,出錯(cuò)現(xiàn)象:"應(yīng)用程序正常初始化(0xc0000005)失敗。是由于安裝錯(cuò)誤。在 win2003,winXP 下安裝LR后會(huì)出現(xiàn)如此情況。License問題:LR勺license是區(qū)分類

4、型的,一般是按協(xié)議和時(shí)間,用戶數(shù)量來區(qū)分的, 比如:License for LoadRunner 7.51 (Type : Global 500 Time Limited 時(shí)效:1 年) 就 表示支持所有協(xié)議,最大 500VU,時(shí)間:1年。三種安裝類型:Standalone Installation , Network Installation , Network Installation and shortcuts四種安裝方式: Typical Installation , Load Generator, MI Listener , Custom Installation 我們根據(jù)實(shí)際情況選

5、擇,我用 Standalone Installation和Custom Installation安裝,安裝所有組件。我現(xiàn)在要用LoadRunner測(cè)一個(gè)C/S系統(tǒng),請(qǐng)問該用什么協(xié)議?經(jīng)常有新手問:為什么我用LR錄完之后VuGen里產(chǎn)生不了腳本?這就是協(xié)議選擇的問題了,LR支持的協(xié)議和應(yīng)用非常廣泛,很少有人能用完這么多協(xié)議,我們就常見的大多數(shù)人用的加以討論:對(duì)于常見的, b/s系統(tǒng),選擇 Web(Http/Html),測(cè)一個(gè)C/S系統(tǒng),根據(jù)C/S結(jié)構(gòu)所用到的后臺(tái)數(shù)據(jù)庫(kù)來選擇不同的協(xié)議,如果后臺(tái)數(shù)據(jù)庫(kù)是 sybase ,則采用sybaseCTlib 協(xié)議,如果是 sql server ,則使用MS

6、 sql server的協(xié)議,至于 oracle 數(shù)據(jù)庫(kù)系統(tǒng),當(dāng)然就使用 oracle 2-tier 協(xié)議。對(duì)于沒有數(shù)據(jù)庫(kù)的 c/s (ftp,sm tp )這些可以選擇 windwos wockets 協(xié)議。至于其他的ERP , EJB (需要ejbdetector .jar ),選擇相應(yīng)的協(xié)議即可 .LR的基本原理:通過Agent進(jìn)程,監(jiān)視各種協(xié)議的 client 與server端的通訊,用LR的一套C語言函數(shù)來 錄制腳本,所以只要LR支持的協(xié)議,就不會(huì)存在捕捉不到的,這是它與Loadtest , WR Robot(Gui)錄制腳本的很大一個(gè)區(qū)別。WR必須對(duì)識(shí)別對(duì)象,才能錄制到。然后它調(diào)用

7、這些腳本向服務(wù)器端發(fā)出請(qǐng)求,接受服務(wù)器的返回。至于服務(wù)器內(nèi)部如何處理,它不關(guān)心。測(cè)試腳本分配所遵循的幾個(gè)原則:1. 腳本是越小越好,就像寫 code 一樣的,不要太長(zhǎng),盡量做到一個(gè)功能( Transaction ) 一個(gè)腳本。如果有些功能是連續(xù)的,必須先做上一個(gè),才能工作下一個(gè),那就只好放在一起了。2. 但是要結(jié)合用戶實(shí)際使用情況,一般在一個(gè)系統(tǒng)中是多個(gè)用戶使用多個(gè)功能,某些功 能使用的頻率更大一些,我們?cè)阡浿颇_本之前就要設(shè)計(jì)好,某個(gè)腳本會(huì)跑幾個(gè)用戶, 一共需要多少個(gè)腳本,能滿足性能測(cè)試的需求3. 有些人喜歡在LR中測(cè)試幾乎所有的功能,其實(shí)這樣不合適,我們把最常用的、 使用頻率最高的、最多人用

8、的拿出來測(cè)試。對(duì)于WE的程序,對(duì)于你所關(guān)注的內(nèi)容沒什么影響的操作,你可以不錄制,可以暫停,這需要試的,比如一些查詢,通常,選擇條件的頁(yè)面都可以不錄制 ,但對(duì)于一些頁(yè)面有可能要傳遞參數(shù),就需要錄制了 ,這就要自己試了例子:Test case nameVuser numberTotal 50Vuser numberTotal 20IterationTest case 1: merchants create schedule and costing sheet104200Test case 2: Merchant run report-5 concurrent users (3 merchants,

9、2 vendors).51200Test case 3: merchant edit costing sheet FOB and create production schedule94200Test case 4: merchant reply schedule tasks63300Test case 5: vendor reply schedule tasks73200Test case 6: vendor edit costing sheet73200Test case 7: merchant create topic,vendor reply topic41100Test case 8

10、: imports reply schedule and do classification.2110第二部分:錄制腳本:錄制腳本前需要理解的幾個(gè)基本概念:1. 事務(wù)(Transaction )事務(wù)(Transaction )是這樣一個(gè)點(diǎn),我們?yōu)榱撕饬磕硞€(gè)action的性能,需要在action的開始和結(jié)束位置插入這樣一個(gè)范圍,這樣就定義了一個(gè)transaction , LoadRunner運(yùn)行到該事務(wù)的開始點(diǎn)時(shí),LoadRunner就會(huì)開始計(jì)時(shí),直到運(yùn)行到該事務(wù)的結(jié)束點(diǎn),計(jì)時(shí)結(jié)束。這個(gè)事務(wù)的 運(yùn)行時(shí)間在結(jié)果中會(huì)有反映。插入事務(wù)操作可以在錄制過程中進(jìn)行,也可以在錄制結(jié)束后進(jìn)行。LoadRunne

11、r運(yùn)行在腳本中插入不限數(shù)量的事務(wù)。比如一個(gè)單據(jù),把從登錄到保存成功退出整個(gè)作為一個(gè)腳本,對(duì)于需要關(guān)注的保存,輸入的幫助定義為單獨(dú)的事務(wù),以取得響應(yīng)時(shí)間,需要響應(yīng)時(shí)間的設(shè)事務(wù) 腳本中事務(wù)的代碼如下:1si't_transact i on (Subnti tBookDat;tn間代碼是具體事務(wù)的操作lr_end_transaetionC'SubmitBookDatLR_AUT0);2. 集合點(diǎn)(Rendezvous;)集合點(diǎn):是一個(gè)并發(fā)訪問的點(diǎn), 在測(cè)試計(jì)劃中,可能會(huì)要求系統(tǒng)能夠承受1000人同時(shí)提交 數(shù)據(jù),在LoadRunner中可以通過在提交數(shù)據(jù)操作前面加入集合點(diǎn),這樣當(dāng)虛擬用

12、戶運(yùn)行到提交數(shù)據(jù)的集合點(diǎn)時(shí),LoadRunner就會(huì)檢查同時(shí)有多少用戶運(yùn)行到集合點(diǎn),如果不到1000人,LoadRunner就會(huì)命令已經(jīng)到集合點(diǎn)的用戶在此等待,當(dāng)在集合點(diǎn)等待的用戶達(dá)到1000人時(shí),LoadRunner命令1000人同時(shí)去提交數(shù)據(jù),并發(fā)訪問的目的。 注意:集合點(diǎn)經(jīng)常和事務(wù)結(jié)合起來使用,常放在事務(wù)的前面,集合點(diǎn)只能插入到Action部分,vuser init和vuser end中不能插入集合點(diǎn)。集合點(diǎn)函數(shù)如下:lr_rendezvous ( ?Subnii tQueryData ');加入集合點(diǎn)之后,在后面運(yùn)行過程中可以看到VU勺狀態(tài),會(huì)等待集合。3. IP Spoofe

13、r (IP 欺騙)當(dāng)運(yùn)行場(chǎng)景時(shí),虛擬用戶使用它們所在的Load Generator 的固定的IP地址。同時(shí)每個(gè)Load Generator 上運(yùn)行大量的虛擬用戶,這樣就造成了大量的用戶使用同一IP同時(shí)訪問一個(gè)網(wǎng)站的情況,這種情況和實(shí)際運(yùn)行的情況不符,并且有一些網(wǎng)站會(huì)根據(jù)用戶IP來分配資源,這些網(wǎng)站會(huì)限制同一個(gè)IP的登陸,使用等等。為了更加真實(shí)的模擬實(shí)際情況,LoadRunner允許運(yùn)行的虛擬用戶使用不同的IP訪問統(tǒng)一網(wǎng)站,這種技術(shù)稱為"IP欺騙”。啟用該選項(xiàng)后,場(chǎng)景中運(yùn)行的虛擬用戶將模擬從不同的IP地址發(fā)送請(qǐng)求。該選項(xiàng)非常的有用。注意:IP Spoofer 在連接Load Gener

14、ators 之前啟用。要使用IP欺騙,各個(gè)LoadGenerator機(jī)器必須使用固定的IP,不能使用動(dòng)態(tài)IP (即DHCP)。LoadRunner主要功能是模擬多用戶對(duì)系統(tǒng)進(jìn)行負(fù)載壓力測(cè)試,默認(rèn)情況下,多用戶的生成器都是LocalHost ,有些應(yīng)用需要不同的IP訪問,為了模擬真實(shí)操作,我們還必須模擬多個(gè)IP,IP Wizard工具就提供了生成多個(gè)ip的功能,IP Wizard是一個(gè)單獨(dú)的程序,我們可以在開始菜 單里面找到,你可以添加一個(gè)局域網(wǎng)內(nèi)的IP段。添加后重啟,在Win2k下使用Ipconfig/all 查看到很多虛擬的IP,最后要在Controller 里面選擇enable ip sp

15、oofer.4. (Text/Image )檢查點(diǎn)對(duì)于查詢類的腳本,一定要添加檢查點(diǎn),以保證在測(cè)試時(shí)結(jié)果的正確性.因?yàn)長(zhǎng)RR要檢測(cè)到網(wǎng)頁(yè)的響應(yīng),就認(rèn)為是pass而并不管當(dāng)前網(wǎng)頁(yè)內(nèi)容的正確性.在進(jìn)行壓力測(cè)試時(shí),為了檢查 Web 服務(wù)器返回的網(wǎng)頁(yè)是否正確,VuGe尻許我們插入Text/Imag 檢查點(diǎn),這些檢查點(diǎn)驗(yàn)證網(wǎng)頁(yè)上是否存在指定的Text或者Image,還可以測(cè)試在比較大的壓力測(cè)試環(huán)境中,被測(cè)的網(wǎng)站功能是否保持正確。檢查點(diǎn)的含義和 WinRunner中的檢查點(diǎn)功能基本上一致,這里就不再作過多的說明。舉個(gè)例子:當(dāng)我用loadrunner做壓力測(cè)試的時(shí)候,它的確能反饋給我各種服務(wù)器性能的數(shù)據(jù),但

16、是在做B/S結(jié)構(gòu)系統(tǒng)的測(cè)試的時(shí)候,去發(fā)現(xiàn)如下問題:loadrunner不能正確判斷操作是否成功,比如登錄,我要測(cè)試200人同時(shí)登錄,但是我的login.jsp 里面沒有正確的關(guān)閉數(shù)據(jù)庫(kù)的連接,導(dǎo)致登錄100人后,建立了 100個(gè)數(shù)據(jù)庫(kù)連接,第101 一個(gè)人登錄的時(shí)候,由于超出數(shù)據(jù)庫(kù)連接的最大數(shù), 所以,jsp程序拋出了一個(gè)數(shù)據(jù)庫(kù)異常。但是頁(yè)面的走向是正確的,所以 loadrunner會(huì)認(rèn)為程序是正確執(zhí)行的,但是事實(shí)卻并非如此5. LR都本復(fù)用問題作為一款優(yōu)秀的負(fù)載測(cè)試工具,LR勺測(cè)試腳本有很好的復(fù)用性,參數(shù)化后的腳本,在應(yīng)用沒什么大的變化的情況下,一直是可以用的。甚至你在A服務(wù)器錄制的腳本,如

17、果做測(cè)試的時(shí)候,需要轉(zhuǎn)移到B服務(wù)器上,你只需要用查找替換的功能將A服務(wù)器的IP地址換成B服務(wù)器就可以使用。6.理解 Correlation(關(guān)聯(lián))關(guān)聯(lián)是用來解決腳本中存在的動(dòng)態(tài)數(shù)據(jù)問題的.在7.8中,當(dāng)你回放一次后,LR會(huì)自動(dòng)錄找你錄制的時(shí)候和回放時(shí)候的差別,找出動(dòng)態(tài)數(shù)據(jù),并作成參數(shù)。舉個(gè)我作的動(dòng)態(tài)數(shù)據(jù)的例子,當(dāng)用戶登錄時(shí),會(huì)產(chǎn)生一個(gè) Sessionid號(hào),訪問結(jié)束后,該 Sessionid便會(huì)失效。我錄制的時(shí)候,在 腳本里面獲取到了該 Sessionid,但當(dāng)我再回放的時(shí)候,這個(gè) Sessionid已經(jīng)無效了,所以,我 需要把這個(gè)Sessionid作為一個(gè)動(dòng)態(tài)數(shù)據(jù),當(dāng)我一登錄的時(shí)候,便獲取一

18、個(gè)新的有效的 Sessionid ,然后通過 web_reg_save_param(" WC SParam_Text2 ", "LB=ProcessID=", "RB=;", "Ord=1", "RelFrameId=1","Search=body",LAST);函數(shù)把它保存下來。那么后面用到的頁(yè)面中就可以調(diào)用WCSParam_Text卷個(gè)參數(shù)使用這個(gè)新的Sessionid號(hào)。這是個(gè)動(dòng)態(tài)數(shù)據(jù)很典型的例子, web_submit _data("w_onload_che

19、ck.asp","Action=http:/gsserver3/cwbase/sys/userlogin/w_onload_check.asp","Method=POST","TargetFrame=","RecContentType= text/ht ml","Referer=http:/gsserver3/cwbase/sys/userlogin/index.asp","Snapshot =t3.inf","Mode=HTML",ITEMDA

20、TA,"Name=hdclentip", "Value= chenjing", ENDITEM,"Name=hdProcessID", "Value=F8E5ACCD372845C38C7E1981A342F703", ENDITEM,"Name=selInstanceid", "Value=T01", ENDITEM,"Name= T xtUserID", "Value=RY BH", ENDITEM,"Name= T xt

21、Password", "Value= cwpass", ENDITEM,"Name= T xtkjdate", "Value=2003.01.06", ENDITEM,"Name=selInstancetxt", "Value=性能測(cè)試用(中型數(shù)據(jù)庫(kù))",ENDITEM,"Name=selInstance", "Value= T 01", ENDITEM,LAST);web_url("loginpage.aspx","

22、;URL=http:/gsserver3/cwbase/sys/menushow/loginpage.aspx?ProcessID=WCSParam_Text2 ","TargetFrame=","Resource=0","RecContentType= text/ht ml","Referer=","Snapshot =t4.inf","Mode=HTML",LAST);左邊界,右邊界到底是個(gè)什么概念,理食軍 web_reg_save_param 函數(shù), int

23、web_reg_save_param (const char *ParamName, <List of Attributes>, LAST);第一部分:參數(shù)名字,用雙引號(hào)括起,逗號(hào)分開;第二部分:List of Attributes ,包括:LB、RB RelFrameID、Ord、Search、SaveOffset、SaveLen 等,第三部分:LAST結(jié)束標(biāo)志。LB是左邊界,R握右邊界,比如說吧,程序中有這么一個(gè)賦值,ProcessID=A53625E18440FCE81F26DCE712E65EB如果ProcessID的值是動(dòng)態(tài)的,我想使用動(dòng)態(tài)變量,那我設(shè)定查找左邊界為L(zhǎng)B=

24、ProcessID=,右邊界為;的字符,如果找到了,就替換成變量.Search是指查找范圍,就是說在哪里查找這些值,可以取這樣幾個(gè)值,我們一般設(shè)為ALL, Body 等即可。Headers (Search only the headers),Body (search only Body data, not headers),Noresource (search only the html body, excluding all headers and resources),ALL (search Body and headers). The default value is ALL.RelFr

25、amelD: The hierarchy level of the HTML page relative to the requested URL.一般取1ORD: This parameter, also known as Instance, indicates the ordinal or instance of the match. 一般取 1LR7.8已經(jīng)為用戶定義好了很多類型的關(guān)聯(lián),我們可以自己定義 Newrule ,不過我在錄制腳 本的時(shí)候一般把系統(tǒng)的那些都關(guān)掉,定義自己的,只是有的時(shí)候,它不能自動(dòng)關(guān)聯(lián),就干脆手 工作了。需要關(guān)聯(lián)的地方:一般是在有主鍵,不允許記錄重復(fù),和一些主程序

26、中傳遞過來的參 數(shù),在后面要用到等情況才使用關(guān)聯(lián)的,你可以先執(zhí)行一遍,如果有些地方不允許重復(fù)可參數(shù) 值無效,就會(huì)出錯(cuò)的,根據(jù)錯(cuò)誤提示你可以判斷出來,就知道需要關(guān)聯(lián)了。一般需要關(guān)聯(lián)的不 多,我現(xiàn)在遇到的就是進(jìn)程號(hào),以及表的主鍵。我這里有個(gè)Correlation 的官方文檔,大家下去可以自己看看。以錄制Web(Http/Html)協(xié)議為例講述一下LR的腳本的錄制LR的腳本是C語言代碼,LR有自己的一整套函數(shù)接口,可以供外部調(diào)用,在 VUGen里面敲Lr_ 就可以看到了。Web(Http/Html),腳*本身分INIT , ACTION ENtE部分,各部分的解釋:INIT部分可以理解為初始部分,A

27、CTION可以理解為事務(wù)部分,也是測(cè)試的主體,EN配退出結(jié)束。重復(fù)的時(shí)候,僅重復(fù) action部分。我們一般把登錄部分放在init ,退出放到end,只會(huì)執(zhí)行一次,或者有的時(shí)候,各部分反復(fù)的次數(shù) 不一樣,分成多個(gè)action,可以單獨(dú)設(shè)定反復(fù)次數(shù)。(如果需要在登陸操作設(shè)集合點(diǎn),那么登陸操作也要放到Action中,因?yàn)関user_init中不能添加集合點(diǎn)) vuser_init , Action Actionl Action2 Action3Aclioni vuser_endInit, login#include "web_api.h"#include "lrw_c

28、usto m_body.hvuser_init()登錄的腳本可以放在這里)1. 錄制前的選項(xiàng)設(shè)置:36HTML-based Script,腳本中采用Script腳本容易維護(hù),容易理解。URL-based Script ,腳本中的表示采用基于URL的方式,解釋:1.基于瀏覽器的應(yīng)用程序推薦使用 HTML頁(yè)面的形式來表示,這種方式的 2.不是基于瀏覽器的應(yīng)用程序推薦使用 不是很好閱讀。解釋:1.是否記錄錄制過程中的ThinkTime,如果記錄,還可以設(shè)置最大值,一般我不記錄這個(gè)值Inteineit ProlacolL Recording:-BrowserRecording ProxyAdvance

29、dInternet Ptotocol: CorrelationEnable correfetion during 陀codingCarielatiDnBfueMartini BroadMiswri InterSlage rwpSAP MstDyfiinniei PeopleSoft SiebelE-ifvefJFlijrinefApplicahon - Applicalion_1 - Enabled Enabled Rufes:Ru<2Disabled Rdes:2 .通知Vugen去重新設(shè)置每個(gè) action 之間的Http context ,缺智是需要的。3 .完整記錄錄制過程的lo

30、g ,4 .保存一個(gè)本地的 snapshot ,可以加速顯示5 .把html的title 放到web_reg_find 函數(shù)里面6. 支持的字符集標(biāo)準(zhǔn)7. Http header的錄制,我們采用缺省即可,不需要用web_add_header去錄制非標(biāo)準(zhǔn)的header信息 對(duì)錄制的content的內(nèi)容進(jìn)行filter ,不作為resource處理的。Recording OplbornWhan DetectedF Issue a popup oe$£ge and lei me decide pn'meL Perform coEelalian :,i scxipt-HntMcve

31、vhe momei Mer 占成 Hem la &il§ dtseriptioh.OK |Cane® IU« DafaUte Hep解釋:這個(gè)就是我么前面提到的關(guān)聯(lián),系統(tǒng)已經(jīng)預(yù)先設(shè)置好了一些常見的關(guān)聯(lián)rules,我們錄制腳本之前,可以把系統(tǒng)的都關(guān)掉,定義自己的,只是有的時(shí)候,它不能自動(dòng)關(guān)聯(lián),就干脆手工 關(guān)聯(lián)。這里比較重要,我還有一個(gè)專門的PPT文檔是詳細(xì)講這個(gè)的,大家可以到我的網(wǎng)站上下載。2. 現(xiàn)在可以開始錄制腳本了,我給出幾段已經(jīng)錄制好的腳本。lr_rendezvous("createpreproduction schedule ")

32、;lr_start_transaction("create pre production schedule");web_url("Folder.jsp_4”,"URL=/xpc71/jsp/com/folder/Folder.jsp”,"Resource=0”,"RecContentType=text/html”,"Referer=/xpc71/LoginAction.do”,"Snapshot=t10.inf","Mode=H

33、TML”,LAST);web_url("TemplateAdminAction.do","URL=/xpc71/TemplateAdminAction.do?forwardID=1”,"Resource=0”,"RecContentType=text/html”,"Referer=/xpc71/LoginAction.do","Snapshot=t11.inf","Mode=HTML”,LAST);可以自己手工,也可以讓corr

34、elate定義一個(gè)動(dòng)態(tài)參數(shù)web_reg_save_param( "WCSParam_Diff2", "LB= name='", "RB='”, "Ord=7”, "Search=Body", "RelFrameId=1", LAST );web_submit_form("ScheduleCreationAction.do","Snapshot=t12.inf",ITEMDA TA,"Name=PTName", &quo

35、t;V alue=(schedule_name)", ENDITEM,"Name=headerTempID”, "V alue=preProductionHeaderTemplate", ENDITEM,"Name=selectHeader", "V alue=1", ENDITEM,"Name=schTempID", "V alue=preProductionDetailTemplate", ENDITEM, LAST);web_url("Folder.jsp_5

36、”,"URL=/xpc71/jsp/com/folder/Folder.jsp”,"Resource=0","RecContentType=text/html","Referer=/xpc71/LoginAction.do","Snapshot=t13.inf","Mode=HTML",LAST);lr_end_transaction("create pre production schedule"

37、, LR_AUTO);lr_rendezvous("createcs");lr_start_transaction("create cs");web_submit_data("CostingPreCreateAction.do","Action=/xpc71/CostingPreCreateAction.do","Method=POST”,"RecContentType=text/html","Referer=http:/172.17.16.

38、5/xpc71/ScheduleCreationAction.do","Snapshot=t14.inf","Mode=HTML",ITEMDA TA,"Name=scheduleID", "V alue=(schedule_id", ENDITEM,"Name=scheduleName", "V alue=(schedule_name", ENDITEM,"Name=VS022264”, "V alue=Spring 2004", E

39、nDITEM,"Name=VS372264", "V alue=ANF", ENDITEM,"Name=( WCSParam_Diff2 ", "V alue=test001", ENDITEM,"Name=dParentID", "V alue=", ENDITEM,"Name=itemID", "V alue=", ENDITEM,"Name=ifRegen", "V alue=Y", END

40、ITEM,"Name=editable", "V alue=true", ENDITEM,"Name=calendar", "V alue=", ENDITEM,"Name=respPartyID", "V alue=", ENDITEM,"Name=respPartyName", "V alue=", ENDITEM,"Name=listParentID”, "V alue=-1", ENDITEM,&q

41、uot;Name=shareParty", "Value=", ENDITEM, LAST);web_url("menuAction.do_3”,"URL=/xpc71/menuAction.do?currentMenu=3&operation=changeMenuOnly”, "Resource=0”,"RecContentType=text/html”,"Referer=/xpc71/LoginAction.do”,"Snap

42、shot=t15.inf","Mode=HTML”,LAST);web_url("Folder.jsp_6”,"URL=/xpc71/jsp/com/folder/Folder.jsp”,"Resource=0","RecContentType=text/html","Referer=/xpc71/LoginAction.do”,"Snapshot=t16.inf","Mode=HTML", LAS

43、T);lr_end_transaction("create cs", LR_AUTO );解釋:1.幾個(gè)函數(shù)的解釋:1) int WHHH (const char * Nameconst char * url ,<List of Attributes>, EXTRARES, <List of Resource Attributes>,LAST );這個(gè)函數(shù)load 指定的 web頁(yè)面.* Name頁(yè)面的nameurl :頁(yè)面的url , Resource :指示the URL是否是一個(gè)資源。0,不是,1,是。RecContentType :錄制腳本過

44、程中,Header 響應(yīng)的類型,e.g. text/html , application/x- javascriptReferer -參考 web頁(yè)的 the URLSnapshot - snapshot 文件名(擴(kuò)展名 inf), correlation的時(shí)候要的。Mode - 錄制的級(jí)另U : HTML or HTTPLast -屬性列表的結(jié)束標(biāo)志。2) int HHSHHHHm ( const char *StepName,/頁(yè)面文件名<List of attributes>,ITEMDATA,/Item 數(shù)據(jù)<List of data>,EXTRARES, &l

45、t;List of Resource Attributes,LAST );這個(gè)函數(shù)以 GET and POST requests 發(fā)送 form。*StepName :In the following example, theHlimildllM function submits a form using the POSTmethod:WmsHHHdllM("customerinfo,asp","Action=http:/lazarus/webflight/customerinfo.asp","Method=POST","T

46、argetFrame=","EncType=multipart/www-urlencoded""RecContentType=text/html”ITEMDATA,"name=flight”, "value=6593", ENDITEM,"name=reserveFlight", "value=Next >",ENDITEM,LAST);這是java、JavaScript 使用POST法發(fā)送form的例子lrapi.web.submit_data ("Finder.as

47、p","Action=http:/mercury/library/Finder.asp",new String( /options"Method=POST","RecContentType=text/html”,"Referer=http:/mercury/library/finder.asp","Mode=HTML",new String/data"Name=BookTitle”, "Value=Mansfield Park", lrapi.web.ENDITEM

48、,"Name=AuthorBook”, "Value=Austen, Jane", lrapi.web.ENDITEM, lrapi.web.LAST);3.腳本的參數(shù)化如果用戶在錄制腳本過程中,填寫提交了一些數(shù)據(jù),比如創(chuàng)建一個(gè)新的document o這些操作都被記錄到了腳本中。當(dāng)多個(gè)虛擬用戶運(yùn)行腳本時(shí),都會(huì)提交相同的記錄,這樣做會(huì)被應(yīng)用 禁止,會(huì)出錯(cuò),這樣也不符合實(shí)際的運(yùn)行情況,而且有可能引起沖突。為了更加真實(shí)的模擬實(shí) 際環(huán)境,需要各種各樣的輸入。參數(shù)化輸入是一種不錯(cuò)的方法參數(shù)化包含以下兩項(xiàng)任務(wù): 在腳本中用參數(shù)取代常量值。 設(shè)置參數(shù)的屬性以及數(shù)據(jù)源。參數(shù)化僅可

49、以用于一個(gè)函數(shù)中的參量。你不能用參數(shù)表示非函數(shù)參數(shù)的字符串。另外,不是所 有的函數(shù)都可以參數(shù)化的。我舉一個(gè)例子來說明,還是我么上面那個(gè)腳本,web_submit_form("ScheduleCreationAction.do","Snapshot=t12.inf",ITEMDA TA,"Name=PTName", "V alue= performance0001 ", ENDITEM,"Name=headerTempID”, "V alue=preProductionHeaderTemplate

50、", ENDITEM,"Name=selectHeader", "V alue=1", ENDITEM,"Name=schTempID", "V alue=preProductionDetailTemplate", ENDITEM, LAST);因?yàn)槊看蝿?chuàng)建文檔的時(shí)候,需要用不同的名字,系統(tǒng)禁止同名,如果同名就回出錯(cuò),所以要把PTNam值參數(shù)化,我們只要選中"performance0001 ",然后點(diǎn)鼠標(biāo)右鍵,選擇"Replace with a parameter."

51、;,出現(xiàn)以下窗口 :參數(shù)類型解釋:DateTime :很簡(jiǎn)單,在需要輸入日期/時(shí)間的地方,可以用 DateTime類型來替代。其屬性設(shè)置也很簡(jiǎn)單,選擇一種格式即可。當(dāng)然也可以定制格式。Group Name:暫時(shí)不知道何處能用到,但設(shè)置比較簡(jiǎn)單。在實(shí)際運(yùn)行中,LoadRunner使用該虛擬用戶所在的 Vuser Group來代替。但是在VuGen中運(yùn)行時(shí),Group Name 將會(huì)是NoneLoad Generator Name :在實(shí)際運(yùn)行中, LoadRunner使用該虛擬用戶所在 Load Generator的機(jī)器名來代替。Iteration Number :在實(shí)際運(yùn)行中,LoadRunn

52、er使用該測(cè)試腳本當(dāng)前循環(huán)的次數(shù)來Random Number隨機(jī)數(shù)。很簡(jiǎn)單。在屬性設(shè)置中可以設(shè)置產(chǎn)生隨機(jī)數(shù)的范圍Unique Number :唯一的數(shù)。在屬性設(shè)置中可以設(shè)置第一個(gè)數(shù)以及遞增的數(shù)的大小。 注意:使用該參數(shù)類型必須注意可以接受的最大數(shù)。例如:某個(gè)文本框能接受的最大數(shù)為99。當(dāng)使用該參數(shù)類型時(shí),設(shè)置第一個(gè)數(shù)為1,遞增的數(shù)為1,但100個(gè)虛擬用戶同時(shí)運(yùn)行時(shí),第100個(gè)虛擬用戶輸入的將是100,這樣腳本運(yùn)行將會(huì)出錯(cuò)。 注意:這里說的遞增意思是各個(gè)用戶取第一個(gè)值的遞增數(shù),每個(gè)用戶相鄰的兩次循 環(huán)之間的差值為1。舉例說明:假如起始數(shù)為1,遞增為5,那么第一個(gè)用戶第一 次循環(huán)取值1,第二次循環(huán)

53、取值2;第二個(gè)用戶第一次循環(huán)取值為 6,第二次為7; 依次類推。Vuser ID :設(shè)置比較簡(jiǎn)單。在實(shí)際運(yùn)行中,LoadRunner使用該虛擬用戶的ID來代替,該ID是由Controller 來控制的。但是在 VuGen中運(yùn)行時(shí),Vuser ID 將會(huì)是 -1。User Defined Function :從用戶開發(fā)的dll文件提取數(shù)據(jù)。File :需要在屬性設(shè)置中編輯文件,添加內(nèi)容,也可以從現(xiàn)成的數(shù)據(jù)庫(kù)中取數(shù)據(jù)我們將會(huì)重點(diǎn)介紹這種參數(shù)類型,這也是LR的缺省參數(shù)類型,就是把準(zhǔn)備好的數(shù)據(jù)放在文件或者用sql語句從數(shù)據(jù)庫(kù)中取出來,讓 VU來讀取。尚 Paranieter ListNewParam

54、心 xhedule_id 5chedule_namsNewDeleteParamster Wpe; Fie三'這是LR7. 8新增加的東西a Select next row”有以下幾種選擇:多個(gè) VUffl何取值Sequential :按照順序一行行的讀取。每一個(gè)虛擬用戶都會(huì)按照相同的順序讀取Random:在每次循環(huán)里隨機(jī)的讀取一個(gè),但是在循環(huán)中一直保持不變Unique :每個(gè)VlM唯一的值。 注意:使用該類型必須注意數(shù)據(jù)表有足夠多的數(shù)。比如 Controller中設(shè)定20個(gè)虛擬用戶進(jìn)行5次循環(huán),那么編號(hào)為1的虛擬用戶取前5個(gè)數(shù),編號(hào)為2的虛擬用戶取6-10的數(shù),依次類推,這樣數(shù)據(jù)表中

55、至少要有100個(gè)數(shù)據(jù),否則Controller運(yùn)行過程中會(huì)返回一個(gè)錯(cuò)誤。SameLine As某個(gè)參數(shù)(比如Name :和前面定義的參數(shù) Name取同行的記錄。通常用在 有關(guān)聯(lián)性的數(shù)據(jù)上面。這個(gè)也是很有用的,比如有時(shí)候我們要求指定VUX讀取指定數(shù)據(jù),就可以這樣定義: 創(chuàng)建參數(shù)文件,共兩列,假設(shè)userID , DOCID userid設(shè)定取數(shù)方式是unique,DOCID則設(shè)成thesame line as userid,如果第一行數(shù)據(jù)為0001,DOC1,則如果用戶0001登錄成功,在打開文檔時(shí), 便會(huì)打開DOC1:程"Update value on ”有如下幾種選擇:多次迭代如何

56、取值once在所有的反復(fù)中都使用同一個(gè)值,each iteration則每次反復(fù)都要取新值,each occurrence則只要發(fā)現(xiàn)該參數(shù)就要重新取值,也就是如果一個(gè)action中有多個(gè)該參數(shù),每遇到一個(gè)就要重新取一個(gè)值。第三部分:創(chuàng)建運(yùn)行場(chǎng)景Run-Time Setting :TD中,和TD的連接,LR可以很方便的和 TD連接,把腳本放在Te$tD(rector Connection.,& Create Controller jcerario.“ QW5出切可以連接丁。Compare Snapshots using WindrffRegenerate Reiser.EBCDIC Tr

57、anslation,.F7General Options.,。Recording Options. Ctrl+F7Customize,.場(chǎng)景類型的選擇:錄制好腳本之后,就可以把腳本加入到場(chǎng)景里面去了,這里首先介紹一下LR有2種大的場(chǎng)景類型:,LR的場(chǎng)景類型,1. Manual Scenario :該項(xiàng)要完全手動(dòng)的設(shè)置場(chǎng)景,這項(xiàng)下面還可以設(shè)置為每一個(gè)腳本分配要 運(yùn)行的虛擬用戶的百分比,可在Controller的Scenario菜單下設(shè)置。2.Goal Oriented Scenario :如果你的測(cè)試計(jì)劃是要達(dá)到某個(gè)性能指標(biāo),比如:每秒多少點(diǎn)擊,每秒多少transactions,能到達(dá)多少 VU

58、某個(gè)Transaction 在某個(gè)范圍 VU (500 1000)內(nèi)的反應(yīng)時(shí)間等等,那么就可以使用面向目標(biāo)的場(chǎng)景。選擇手工場(chǎng)景,添加腳本到場(chǎng)景中,場(chǎng)景的設(shè)置:Design :設(shè)計(jì)測(cè)試場(chǎng)景的靜態(tài)部分,設(shè)置模擬用戶生成器、模擬用戶數(shù)量、模擬用戶組等。Run:設(shè)計(jì)測(cè)試的動(dòng)態(tài)部分,主要指添加性能計(jì)數(shù)器,在腳本運(yùn)行的過程中可以通過這些計(jì)數(shù) 器反饋的數(shù)據(jù)。建立了測(cè)試場(chǎng)景后,我們可以對(duì)Edit Schedule進(jìn)行設(shè)置,設(shè)置測(cè)試開始執(zhí)行的時(shí)間,對(duì)于手動(dòng)設(shè)計(jì)的測(cè)試還可以設(shè)定它的持續(xù)時(shí)間,以及何時(shí)起用或禁止調(diào)用模擬用戶。Schedule Duildci壬 L Gcl-ecde Nmie: iDefajll: G

59、cheajleSJeiJjt DdliniiiunttnJ VE |lXr»<iQn Kwf LuwiiL ich&dule bj« GrouplW*原“胡奸也里J Load alVusC$ crnJtahBDUIp尸"<* Start Ti- "sasevev : : (HHrhdMSS)髯躇鑫野曜刑幾g呈階瞬上"峻r I m.i命近 dl Vujjjrs Wimv H un.(北1 此bnu *li Upbunntrd'u .hdl Id'irtu Leuri uUJ Jis dl VUit: s Isduh the=tdLh)itdtl| Deadt ScheduleSched

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論