欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
3.2 錄制用戶(hù)行為 - AJava
 
核心提示:3.2 錄制用戶(hù)行為 錄制腳本是模擬用戶(hù)行為的第一步,通過(guò)錄制用戶(hù)行為產(chǎn)生的協(xié)議從而生成Vuser Script。當我們對函數比較熟悉的時(shí)候,可以?huà)仐変浿频倪^(guò)程,而采用手工編寫(xiě)。在大多數情況下,我們會(huì )在錄制生成的腳本上根據實(shí)際需求進(jìn)一步進(jìn)行修改,這樣效率更

3.2  錄制用戶(hù)行為

錄制腳本是模擬用戶(hù)行為的第一步,通過(guò)錄制用戶(hù)行為產(chǎn)生的協(xié)議從而生成Vuser Script。當我們對函數比較熟悉的時(shí)候,可以?huà)仐変浿频倪^(guò)程,而采用手工編寫(xiě)。在大多數情況下,我們會(huì )在錄制生成的腳本上根據實(shí)際需求進(jìn)一步進(jìn)行修改,這樣效率更高。

3.2.1  錄制流程

錄制用戶(hù)行為轉化為腳本一般是按照以下步驟進(jìn)行的,如圖3.6所示。

在開(kāi)始菜單中找到LoadRunner程序項并打開(kāi)Application,找到Virtual User Generator,選擇文件菜單下的“新建”功能,創(chuàng )建腳本。

3.2.2  協(xié)議選擇

在前面我們知道性能測試是基于協(xié)議的,所以首先要選擇匹配的協(xié)議,如果協(xié)議錯誤將會(huì )導致無(wú)法錄制用戶(hù)行為,選擇過(guò)多會(huì )導致錄制內容的冗余,而選擇不足又會(huì )導致漏錄的情況發(fā)生。新建腳本首先需要選擇協(xié)議類(lèi)型,在VuGen中分為單協(xié)議和多協(xié)議兩種情況。

圖3.6  VuGen錄制流程

單協(xié)議(New Single Protocol Script)

在單協(xié)議情況下,所要錄制的對象只使用唯一的協(xié)議,如圖3.7所示。

圖3.7  單協(xié)議選擇界面

通過(guò)Category可以對協(xié)議進(jìn)行分類(lèi),方便查找。

多協(xié)議(New Multiple Protocol Script)

在需要錄制的對象使用多于一種協(xié)議的情況下,應該選擇多協(xié)議,并且將這些協(xié)議都進(jìn)行添加,否則會(huì )因為漏選協(xié)議而無(wú)法正?;胤拍_本,如圖3.8所示。

圖3.8  多協(xié)議選擇界面

確定系統使用協(xié)議最簡(jiǎn)單的方法就是詢(xún)問(wèn)開(kāi)發(fā)人員,特別是C/S架構使用的協(xié)議可能比較特殊,甚至有可能是自行開(kāi)發(fā)的協(xié)議包規范。另外一種方法就是通過(guò)網(wǎng)絡(luò )掃描工具攔截數據包,確定協(xié)議類(lèi)型。

由于絕大多數性能測試都是基于B/S架構下的HTTP協(xié)議,所以后面的章節主要針對HTTP,在高級腳本開(kāi)發(fā)中會(huì )涉及部分非HTTP協(xié)議的腳本開(kāi)發(fā)內容。

3.2.3  錄制選項

在選擇合適的協(xié)議后準備開(kāi)始錄制,而選擇不同的協(xié)議后彈出的錄制窗口和錄制選項也不盡相同。

這里選擇Web(HTTP/HTML)協(xié)議(模擬瀏覽器和Web服務(wù)器之間的協(xié)議交互),如圖3.9所示。

彈出Start Recording窗口,如果沒(méi)有彈出可以使用Vuser菜單下的Start Recording或Ctrl+R組合鍵啟動(dòng)錄制過(guò)程,如圖3.10所示。

  

圖3.9  選擇Web協(xié)議            圖3.10  Start Recording窗口(Internet應用)

Applications Type

首先需要設置的是Application type,VuGen中提供了Internet Applications和Win32 Applications兩種應用的錄制選項。

Internet Applications:指需要錄制的對象是一個(gè)網(wǎng)絡(luò )應用(基于瀏覽器)。

Program to record:指需要錄制的程序名,VuGen默認支持的Web客戶(hù)端是IE,也建議不要使用任何第三方的瀏覽器來(lái)錄制,避免出現不兼容。從Load Runner 9.1版本開(kāi)始已經(jīng)能夠很好地兼容IE 7.0(最新版本9.5仍然沒(méi)有提供對IE 8.0的支持)。

URL Address:錄制開(kāi)始所需要訪(fǎng)問(wèn)的URL地址,也就是第一個(gè)請求所需要訪(fǎng)問(wèn)的   頁(yè)面。

Working directory:用來(lái)指定代碼的工作目錄。

Win32 Applications是用來(lái)支持Win32的標準客戶(hù)端,如果客戶(hù)端是自行開(kāi)發(fā)的,請使用該選項,如圖3.11所示。

Program to record:需要錄制的應用程序,我們可以通過(guò)后面的

 按鈕將訪(fǎng)問(wèn)的應用程序添加進(jìn)來(lái)。

Program arguments:指程序參數,在某些應用程序后需要添加一些參數才能運行,這里提供的是填寫(xiě)參數的位置。

圖3.11  Start Recording窗口(Win32應用)

Record into Action:錄制的內容會(huì )被存放在A(yíng)ction中,Action是VuGen提供的一種類(lèi)似于函數的腳本塊,通過(guò)將不同的操作存放在不同的Action中實(shí)現代碼的高內聚低耦合。

這里可以單擊New按鈕來(lái)新建Action。

VuGen默認提供了以下3個(gè)Action:

Ÿ Vuser_init

Ÿ Action

Ÿ Vuser_end

這里可以先簡(jiǎn)單介紹一下這 3個(gè)Action有什么不同,在LoadRunner中用戶(hù)的初始化操作應該存放在Vuser_init中,用戶(hù)的結束操作存放在Vuser_end中,因為這兩個(gè)Action在后面的Run Logic默認設置中是處在腳本最先運行和最后運行的位置,并且在負載時(shí)Vuser_init和Vuser_end只會(huì )在開(kāi)始和結束時(shí)被運行一次。而 Action用來(lái)存放用戶(hù)的操作,可以當做普通的函數在負載時(shí)會(huì )被反復運行。

Record the application startup:?jiǎn)螕鬙K按鈕后VuGen會(huì )啟動(dòng)我們需要錄制的應用,這個(gè)選項是指一旦啟動(dòng)了應用后就將開(kāi)始錄制應用收發(fā)的協(xié)議數據。

為了確保錄制出來(lái)的腳本簡(jiǎn)潔有效,在開(kāi)始錄制前需要對錄制選項進(jìn)行一定的設置。

錄制選項

在不同的協(xié)議下錄制選項各不相同,這里介紹基于Web(HTTP/HTML)協(xié)議錄制選項的設置,如圖3.12所示。

圖3.12  HTML協(xié)議錄制選項

General

Ÿ Script:基于Web(HTTP/HTML)協(xié)議的Vuser腳本是使用C語(yǔ)言作為標準的。在不同的協(xié)議下,所使用的語(yǔ)言也不相同。在Script選項中提供了一些對于腳本的基本設置。

例如這里可以通過(guò)Maximum number of lines in action file設置每個(gè)Action中的最大代碼行數。

Ÿ Protocols:協(xié)議列表,在這里會(huì )列出錄制前選中的所有協(xié)議,通過(guò)修改協(xié)議前的選項來(lái)決定使用什么協(xié)議來(lái)錄制腳本,在多協(xié)議的時(shí)候可以通過(guò)這個(gè)功能切換錄制所使用的協(xié)議或補錄某些協(xié)議的內容,如圖3.13所示。

Ÿ Recording:錄制選項用于設置Web(HTTP/HTML)使用什么樣的錄制方式來(lái)獲得腳本,這里提供了兩大類(lèi)的錄制方式,如圖3.14所示。

Ÿ HTML-based Script:這種方式錄制出來(lái)的腳本是基于HTML的,以HTML操作為錄制級別,非HTML操作不進(jìn)行錄制。由于現在使用的B/S架構網(wǎng)站都是基于 HTML,也就是說(shuō)訪(fǎng)問(wèn)的頁(yè)面都是從一個(gè)HTML跳轉到另外一個(gè)HTML,那么錄制的時(shí)候只需要得到針對HTML的請求即可。

       

圖3.13  協(xié)議激活列表                        圖3.14  錄制級別選項

下面打開(kāi)HTML Advanced…高級選項,彈出如圖3.15所示的對話(huà)框。

圖3.15  HTML-based script高級設置

Script type提供了基于HTML方式下的兩種不同的腳本類(lèi)型。

1.高級選項下的Script type腳本類(lèi)型選項

Ø  A script describing user actions

基于解釋用戶(hù)行為的腳本,后面提示使用類(lèi)似web_link、web_submit_form等的函數,這種腳本錄制出來(lái)有些類(lèi)似于QTP,具體描述了用戶(hù)進(jìn)行了什么操作。

現在我們使用這種方式錄制一個(gè)腳本(打開(kāi)Web Tours網(wǎng)站,然后單擊sign up now),錄制完成后可以得到以下腳本:

                       web_add_cookie("login=admin%2Czh; DOMAIN=127.0.0.1");

                       web_url("WebTours",

                       "URL=http://127.0.0.1:1080/WebTours/",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=",

                       "Snapshot=t1.inf",

                       "Mode=HTML",

                       LAST);

                       web_link("sign up now",

                       "Text=sign up now",

                       "Snapshot=t2.inf",

                       LAST);

下面我們簡(jiǎn)單分析一下這個(gè)腳本的組成。

web_add_cookie("login=admin%2Czh; DOMAIN=127.0.0.1");

這個(gè)函數是由LoadRunner提供的,根據函數的名稱(chēng)也可以大概猜到其功能,函數web_add_cookie()主要負責為Vuser腳本添加一個(gè)cookie信息。

web_url("WebTours",

                           "URL=http://127.0.0.1:1080/WebTours/",

                           "Resource=0",

                           "RecContentType=text/html",

                           "Referer=",

                           "Snapshot=t1.inf",

                           "Mode=HTML",

                           LAST);

這個(gè)函數的內容很多,不過(guò)從URL=http://127.0.0.1:1080/WebTours/可以看出實(shí)現訪(fǎng)問(wèn)網(wǎng)站首頁(yè)是通過(guò)這個(gè)函數實(shí)現的,也就是說(shuō)在地址欄里輸入地址后按回車(chē)鍵的操作其實(shí)就是進(jìn)行了這個(gè)函數的模擬請求。

web_link("sign up now",

                           "Text=sign up now",

                           "Snapshot=t2.inf",

                           LAST);

web_link是使用A script describing user actions選項才可以得到的,這個(gè)函數就是單擊sign up now連接的操作,在這個(gè)函數中說(shuō)明了需要單擊的鏈接名。

補充:web_link()函數詳解

web_link()函數用來(lái)模擬用戶(hù)單擊一個(gè)超鏈接的操作。VuGen會(huì )記錄訪(fǎng)問(wèn)頁(yè)面后服務(wù)器返回的內容中有多少個(gè)超鏈接。當使用web_link()函數時(shí),只要寫(xiě)出正確的鏈接名,VuGen會(huì )自動(dòng)查找并訪(fǎng)問(wèn)頁(yè)面中該鏈接名所指向的URL地址。

web_link()函數的基本語(yǔ)法如下所示:

web_link(“在測試結果中顯示的名稱(chēng)”,“TEXT=需要單擊的超鏈接名”,LAST);

Ÿ 在測試結果中顯示的名稱(chēng)

也被稱(chēng)作步驟名,在測試結果中顯示的名稱(chēng)是指在腳本運行完成后,打開(kāi)Test Result,在link函數后的名稱(chēng)(此處為sign up now),如圖3.16所示。

這是通過(guò)web_link(“sign up now”,….)來(lái)實(shí)現的,我們能夠在測試結果中方便、快速地定位。

Ÿ 需要單擊的超鏈接名

單擊的鏈接是通過(guò)Text=來(lái)說(shuō)明的,等號后的內容就是需要單擊的鏈接。這里需要注意,如果Text后的鏈接名不存在,那么就會(huì )得到以下錯誤:

Action.c(17): Error -27995: Requested link ("Text=signupnow") not found     [MsgId: MERR-27995]

Action.c(17): web_link("sign up now") highest severity level was "ERROR", 0 body bytes, 0 header bytes                             [MsgId: MMSG-26388]

該錯誤信息提示單擊的signupnow這個(gè)鏈接不存在,整個(gè)web_link函數是錯誤的。

“Snapshot=t2.inf”用來(lái)說(shuō)明該操作后的內容會(huì )被抓圖保存到文件t2.inf中。最后的LAST表明這個(gè)函數的結束。

例如:想要該腳本去點(diǎn)擊WebTours首頁(yè)上的administration鏈接,我們只需要將web_link函數修改為:

web_link("click administration",

                           "Text=administration",

                           LAST);

回放腳本看看是否正確通過(guò),并進(jìn)入管理頁(yè)面。

思考:

如果一個(gè)頁(yè)面中有多個(gè)同名的鏈接,使用web_link()該如何處理?

Ord這個(gè)關(guān)鍵字可以幫助你,在VuGen中很多函數都使用這個(gè)參數來(lái)判斷對象的次序。

例如要單擊頁(yè)面上的第二個(gè)鏈接,那么可以這樣寫(xiě):

web_link("click link",

                   "Text=link",

                   Ord=2,

                   LAST);

在這里需要注意,同名鏈接的先后順序是根據HTML代碼的解釋順序(從左往右,從上往下)來(lái)確定的。

使用HTML-base script下的A script describing user actions好處是腳本簡(jiǎn)潔,基于用戶(hù)操作進(jìn)行模擬,淺顯易懂,并且自身就包含了對象檢查過(guò)程,無(wú)須校驗。其缺點(diǎn)是當頁(yè)面中存在多個(gè)同名鏈接時(shí)難以區分。所以我們建議使用下面一種腳本模式:A script containing  explicit URLs only (e.g. web_url, web_submit_data)。

小練習:

嘗試使用該錄制方式錄制MsPetshop購物網(wǎng)站首頁(yè)單擊一個(gè)鏈接的腳本。

錄制后在腳本中可以看到如下的內容:

web_link("BIRDS","Text=Birds",LAST);

這是單擊BIRDS鏈接所帶來(lái)的結果,在前面說(shuō)過(guò)Text=后的內容是所單鏈接的正文,那么為什么明明界面上該鏈接名顯示的是“BIRDS”,但這樣寫(xiě)腳本回放會(huì )提示“無(wú)法找到這個(gè)鏈接”,而寫(xiě)成“Birds”就可以成功呢?

如果仔細查看一下MsPetshop網(wǎng)站的源代碼,就會(huì )發(fā)現這個(gè)鏈接確實(shí)是Birds,但為什么看到的是BIRDS呢?檢查一下該網(wǎng)站的CSS文件就會(huì )明白了。

VuGen腳本都是針對HTML源代碼操作的,到底web_link如何識別單擊對象的呢?或者這類(lèi)腳本中的“對象識別”是如何做到的?在錄制后的腳本中切換到Tree模式,如圖3.17所示。

這里可以看到在錄制后的內容中有幾個(gè)標簽,除了web_url()請求發(fā)送后的頁(yè)面返回截圖,還有兩個(gè)標簽,一個(gè)是Client Request,另一個(gè)是Server Response,在這兩個(gè)標簽中的內容就是VuGen錄制的客戶(hù)端發(fā)給服務(wù)器端的HTTP請求格式和服務(wù)器返回的HTTP請求內容。選擇Server Response標簽,可以看到返回內容的格式分解,如圖3.18所示。

           

圖3.17  Tree模式下的Page View           圖3.18  Tree模式下的Server Response

在這里可以看到Form的說(shuō)明和Links的內容,而web_link()和web_submit_data()能夠識別對象的基礎就是這里的服務(wù)器返回內容分解,也就是說(shuō)能夠單擊的鏈接一定在這個(gè)Links內。這就是VuGen的對象識別技術(shù)和對象庫。

Ø  A script containing explicit URLs only

該選項確定基于URL請求的腳本錄制類(lèi)型。與基于用戶(hù)行為模擬的不同之處在于,這種錄制方式不考慮任何用戶(hù)操作,只考慮客戶(hù)端發(fā)送的請求,注重系統實(shí)際上做了什么。

將腳本類(lèi)型切換為這種形式,然后錄制和前面在Web Tours上點(diǎn)擊鏈接操作相同的例子,停止后會(huì )得到以下腳本。

                       web_add_cookie("login=admin%2Czh; DOMAIN=127.0.0.1");

                       web_url("WebTours",

                       "URL=http://127.0.0.1:1080/WebTours/",

                       "TargetFrame=",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=",

                       "Snapshot=t1.inf",

                       "Mode=HTML",

                       LAST);

                       web_url("sign up now",       "URL=http://127.0.0.1:1080/WebTours/login.pl?username=&password=&getInfo=true",

                       "TargetFrame=body",

                       "Resource=0",

                       "RecContentType=text/html",

                       "Referer=http://127.0.0.1:1080/WebTours/home.html",

                       "Snapshot=t2.inf",

                       "Mode=HTML",

                       LAST);

看看有什么不同的地方,web_link()函數被web_url()替代了,前面提過(guò)web_url()函數的作用是實(shí)現地址請求的過(guò)程。

補充:web_url()函數詳解

web_url()函數可以模擬用戶(hù)請求,它也是在腳本中最常使用的函數之一。

web_url()函數的基本語(yǔ)法如下所示:

web_url(“在測試結果中顯示的名稱(chēng)”,“URL=需要訪(fǎng)問(wèn)的超鏈地址”,LAST);

和web_link不同的地方在于這里只需要在URL=后填寫(xiě)需要訪(fǎng)問(wèn)的地址即可,和在IE地址欄中輸入的內容相同,使用web_url的好處是沒(méi)有任何請求的前后依賴(lài)關(guān)系,只負責發(fā)送一個(gè)標準的Get HTTP請求。

如果需要訪(fǎng)問(wèn)51Testing論壇,可以直接這樣寫(xiě):

web_url("51testing","URL=http://bbs.51testing.com",LAST);

除了以上這些元素,在錄制出來(lái)的web_link或者web_url函數中經(jīng)常還能看到如下所示的大量?jì)热荩?/p>

EXTRARES

"Url=../bite.jpg", "Referer=http://192.168.0.200", ENDITEM,

"Url=../title.gif", "Referer= http://192.168.0.200", ENDITEM,

……

這一段內容說(shuō)明在載入這個(gè)頁(yè)面時(shí)還有其他圖片或者附屬資源需要下載。

web_link()和web_url()函數都是頁(yè)面訪(fǎng)問(wèn)型函數,實(shí)現HTTP請求中的GET方法,如果需要提交表單,實(shí)現HTTP請求中的POST方法,那么需要使用web_submit_form()或web_submit_data()函數。

補充:web_submit_form()函數詳解

該函數會(huì )自動(dòng)檢測在當前頁(yè)面上是否存在form,然后將后面的ITEMDATA數據進(jìn)行傳送。例如錄制在Web Tours網(wǎng)站上登錄操作,可以得到以下代碼:

                       web_submit_form("login.pl",

                       "Snapshot=t3.inf",

                       ITEMDATA,

                       "Name=username", "Value=admin", ENDITEM,

                       "Name=password", "Value=123456", ENDITEM,

                       "Name=login.x", "Value=0", ENDITEM,

                       "Name=login.y", "Value=0", ENDITEM,

                       LAST);

隱藏的表單數據系統會(huì )自行發(fā)送。

補充:web_submit_data()函數詳解

和web_submit_form()函數不同,web_submit_data()函數無(wú)須前面的頁(yè)面支持,直接發(fā)送給對應頁(yè)面相關(guān)數據即可。錄制Web Tours網(wǎng)站登錄,代碼會(huì )變?yōu)椋?/p>

                       web_submit_data("login.pl",

                       "Action=http://127.0.0.1:1080/WebTours/login.pl",

                       "Method=POST",

                       "TargetFrame=body",

                       "RecContentType=text/html",

                       "Referer=http://127.0.0.1:1080/WebTours/nav.pl?in=home",

                       "Snapshot=t5.inf",

                       "Mode=HTML",

                       ITEMDATA,

                       "Name=userSession", "Value=100084.208748481fVtiAiVptiHfDAiiiptiiQcf", ENDITEM,

                       "Name=username", "Value=admin", ENDITEM,

                       "Name=password", "Value=123456", ENDITEM,

                       "Name=JSFormSubmit", "Value=off", ENDITEM,

                       "Name=login.x", "Value=0", ENDITEM,

                       "Name=login.y", "Value=0", ENDITEM,

                       LAST);

其中Action說(shuō)明提交表單的處理頁(yè)面,Method表明提交數據的方式。

當使用web_submit_data()函數時(shí),隱藏表單的數據也會(huì )被記錄下來(lái)作為ITEMDATA數據提交給服務(wù)器。

這里介紹了在HTTP頁(yè)面中最常用的4個(gè)頁(yè)面函數 web_link()、web_url()、web_submit_form()、web_submit_data(),通過(guò)這些函數可以實(shí)現大多數頁(yè)面訪(fǎng)問(wèn)的請求和數據提交的過(guò)程。除了這4個(gè)函數,還有一個(gè)函數可能會(huì )經(jīng)??吹剑簑eb_custom_request()。當請求比較特別時(shí),VuGen無(wú)法簡(jiǎn)單使用以上4個(gè)函數進(jìn)行表述,那么錄制后便會(huì )出現web_custom_request()函數,這個(gè)函數的作用是自定義HTTP請求規則。該函數更適合在使用自定義的HTTP請求規則中處理二進(jìn)制內容。具體格式請參考幫助文檔。

2.高級選項下的Non HTML-generated elements(e.g. JavaScript,VBScript,ActiveX, Applets)選項這個(gè)選項是對非標準的HTML元素的處理方式,VuGen有以下3種處理方式:

Ÿ Record within the current script step

對于JavaScript等內容直接作為web_url下的附屬信息記錄。

Ÿ Record in separate steps and use concurrent groups

對于相關(guān)的內容新建一個(gè)web_url來(lái)處理。

Ÿ Do not record

不錄制額外的內容。

在默認情況下選擇直接錄制在web_url下,如果某些內容錄制會(huì )導致腳本回放錯誤,那么可以不錄制該內容。

URL-BASE Script:是基于URL請求的腳本錄制方式,會(huì )錄制得到所有的HTTP請求。選擇該選項會(huì )錄制所有的HTTP請求,導致腳本包含大量的 web_url()函數,參考前面HttpWatch獲得的HTTP交互過(guò)程,VuGen只是將所有的請求抓取出來(lái),并且對每個(gè)請求均生成一個(gè) web_url()函數來(lái)進(jìn)行模擬。

思考:

什么時(shí)候應該用HTML-BASE Script?什么時(shí)候應選擇URL-BASE Script?

一般來(lái)說(shuō)如果是標準使用IE訪(fǎng)問(wèn)的B/S架構,應該使用HTML-BASE下的A script containing explicit URLs only方式來(lái)錄制腳本,這種腳本基于URL請求完成,不會(huì )帶有任何前后依賴(lài)的內容。而如果是一個(gè)非IE標準的C/S架構,建議使用URL-BASE Script來(lái)錄制腳本,這樣可以確保不會(huì )遺漏任何HTTP請求。

例如:如果使用HTTP進(jìn)行數據傳送,而數據內容是存放在.dat文件中的,那么使用HTML-BASE Script就無(wú)法錄制到對該.dat文件的操作,而使用URL-BASE Script就可以錄制出來(lái)。

Network

Port Mapping提供了對于端口映射的處理規則,在默認情況下不需要進(jìn)行任何設置,VuGen會(huì )自動(dòng)根據協(xié)議確定端口名,對該端口進(jìn)行監控和錄制,但是如果使用了非標準的端口進(jìn)行數據傳輸偶爾會(huì )出現VuGen能發(fā)現數據包的收發(fā)操作,但是無(wú)法正確錄制出腳本的情況,這時(shí)就需要使用Port Mapping來(lái)指揮VuGen識別端口名和協(xié)議類(lèi)型。

下面我們來(lái)錄制一個(gè)電子郵件收發(fā)的腳本,選擇協(xié)議為SMTP+POP3,如圖3.19所示。

圖3.19  在多協(xié)議情況下添加POP3和SMTP兩個(gè)協(xié)議

我們使用MDaemon搭建了一個(gè)本地電子郵件服務(wù)器,使用郵件的客戶(hù)端為Becky!。在選擇應用窗口中填寫(xiě)Becky!客戶(hù)端的信息,如圖3.20所示。

單擊OK按鈕開(kāi)始錄制,可以看到在客戶(hù)端收發(fā)電子郵件的時(shí)候,Recording中的events一直在變化,如圖3.21所示。

      

圖3.20  選擇Win32應用添加錄制對象為B2.exe           圖3.21  Rocording Bar

這說(shuō)明VuGen可以識別到該協(xié)議并且將協(xié)議交互截取下來(lái),但是打開(kāi)腳本,就可能會(huì )出現腳本完全沒(méi)有內容的情況,那么這個(gè)時(shí)候需要手動(dòng)幫助VuGen來(lái)進(jìn)行識別協(xié)議內容的工作。

打開(kāi)錄制選項,找到Port Mapping,如圖3.22所示。

圖3.22  Port Mapping主界面

這里需要為POP3和SMTP添加一個(gè)端口規則,讓VuGen強制去錄制這個(gè)端口的協(xié)議內容(搞錯了的話(huà)會(huì )出導致無(wú)錄制內容)。單擊New Entry按鈕添加兩個(gè)端口,設置POP3使用110端口,SMTP使用25端口,如圖3.23所示。

這里的Target Server(目標服務(wù)器)可以進(jìn)行明確設置,也可以默認設置為(Any Server)即任意服務(wù)器,但是端口必須要寫(xiě)明,并且該端口對應的Service ID協(xié)議類(lèi)型也必須選擇正確,錄制方式(Record Type)選擇Direct即可。

同理再添加一個(gè)SMTP的協(xié)議端口,檢查一下端口規則是否正確,如圖3.24所示。

設置完成后,現在再來(lái)錄制一下協(xié)議,即可錄制出來(lái)了(VuGen的版本越高出現錄制錯誤的概率越低,在9.1版本后很少出現這種有Events但是沒(méi)有腳本的情況)。

Http Properties

Advanced:這里可以設置在錄制HTTP過(guò)程中的一些高級選項,如圖3.25所示。

圖3.23  新建Port Mapping規則

圖3.24  新建Port Mapping下的SMTP和POP3規則后

圖3.25  錄制選項下的高級設置

Reset context for each action:錄制中每個(gè)action之間是否需要重置context。context中存放請求發(fā)送返回后的數據信息,比如服務(wù)器返回的html、 cookie、session等。選擇了這個(gè)選項,Action之間會(huì )清空相關(guān)內容,那么基于行為模擬的函數web_link()會(huì )由于沒(méi)有前文而無(wú)法運行,系統自動(dòng)錄制成為基于數據請求的函數web_url()。

Save snapshot resources locally:在本地保存資源截圖。

Generate web_reg_find functions for page titles:是否需要為每一個(gè)頁(yè)面自動(dòng)生成web_reg_find檢查點(diǎn)函數(檢查點(diǎn)函數參考第3.8節)來(lái)檢查標題的變更。選中該選項后,會(huì )自動(dòng)生成對標題的檢查規則,回放腳本時(shí)會(huì )驗證每個(gè)標題是否和錄制時(shí)相同。其中Generate web_reg_find fuctions for sub-frames為子框架生成檢查點(diǎn)函數。由于大多數情況頁(yè)面的標題都是動(dòng)態(tài)的,檢查標題是否不變沒(méi)有太大的意義,所以這個(gè)選項一般不做選擇。

Add comment to script for HTTP errors while recording:錄制過(guò)程中如果出錯則添加相關(guān)的注釋內容。

Support charset:很多時(shí)候我們訪(fǎng)問(wèn)的網(wǎng)站都是中文的,使用VuGen錄制時(shí)經(jīng)常會(huì )遇到中文變成亂碼的事情,這是由于中文網(wǎng)站一般都是使用UTF-8的編碼方式來(lái)顯示中文的,這時(shí)就需要讓VuGen也支持該編碼格式。打開(kāi)這個(gè)選項,確保UTF-8可用,再錄制一下腳本,中文亂碼的問(wèn)題就會(huì )解決了。如果網(wǎng)站使用的是非UTF-8的編碼規則,那么就不要選擇該選項,否則也會(huì )導致亂碼??梢酝ㄟ^(guò)使用HttpWatch掃描網(wǎng)站來(lái)確認頁(yè)面是否采用了UTF-8的編碼方式。

Recording Engine:這是一個(gè)兼容性的選項,可以使用以前的錄制引擎來(lái)錄制腳本,注意選擇該選項后需要重新啟動(dòng)VuGen,新建腳本才能切換到老的引擎上。

Recording schemes:這里可以對錄制的內容進(jìn)行過(guò)濾。

Headers:可以錄制服務(wù)器返回HTTP請求包中的數據包頭,如圖3.26所示。

在默認情況下是不錄制HTTP Header的,如果有些數據存放在Header中,那么在這里就可以設置需要錄制那些內容,如圖3.27所示。

        

圖3.26  設置是否錄制HTTP headers           圖3.27  設置錄制的HTTP headers種類(lèi)

比如這里需要錄制服務(wù)器返回的Encoding編碼信息,選中Accept-Encoding并單擊OK按鈕確認(HTTP header的含義參考前面的HTTP分析)即可。錄制的結果可以發(fā)現腳本中附加了web_add_header()函數。

Content Types:對于錄制的正文內容進(jìn)行過(guò)濾,如圖3.28所示。

圖3.28  設置是否錄制HTTP content

在默認情況下所有的正文內容都會(huì )被錄制下來(lái),如果不需要錄制圖片等內容,可以在下面的規則中過(guò)濾掉多余的內容,如圖3.29所示。

Non-Resources:設置需要錄制的請求格式,如圖3.30所示。

         

圖3.29  設置錄制的HTTP content類(lèi)別     圖3.30  設置那些文件格式作為Non-Resurce處理

這里需要分析一下VuGen根據什么原理錄制出來(lái) web_url()這種請求,其實(shí)它是根據HTTP請求中的返回格式來(lái)確定的。在默認情況下,VuGen認為text/html這種返回格式的內容是非資源的正文,需要錄制出來(lái),如果你希望將其他格式的請求也單獨作為web_url()來(lái)進(jìn)行錄制,那么在這里應添加對應的Content Type。例如添加image/gif,那么再次錄制腳本時(shí)就會(huì )發(fā)現,所有的gif圖片請求都被作為一個(gè)單獨的web_url()函數進(jìn)行處理。各種 HTTP請求的文件類(lèi)型可以先通過(guò)HttpWatch進(jìn)行掃描確定,如圖3.31所示。

Correlation:是否打開(kāi)腳本錄制時(shí)的自動(dòng)關(guān)聯(lián)選項,如圖3.32所示。

   

圖3.31  通過(guò)HttpWatch獲得HTTP返回請求的文件類(lèi)型  圖3.32  邊錄制邊進(jìn)行關(guān)聯(lián)設置

如果不是很清楚這個(gè)功能請先取消選擇,否則可能會(huì )導致在錄制過(guò)程中VuGen錯誤自動(dòng)關(guān)聯(lián),導致腳本回放直接失敗。我們將會(huì )在后面介紹關(guān)聯(lián)時(shí)再來(lái)研究它。

3.2.4  開(kāi)始錄制

當設置好錄制選項后,單擊OK按鈕啟動(dòng)錄制。

首先看到的是Recording Bar,如圖3.33所示。稍后會(huì )看到IE或者指定的應用程序啟動(dòng),當進(jìn)行操作時(shí)Events也會(huì )隨之變化,說(shuō)明VuGen錄制得到了一些協(xié)議交互的內容。

圖3.33  Recording Bar

在錄制前需要根據需求確定需要錄制的用戶(hù)行為,而錄制后需要通過(guò)后面的設置來(lái)將腳本設置為完全模擬用戶(hù)行為的Vuser Script。

3.2.5  插入命令

在錄制的過(guò)程中可以通過(guò)Recording Bar添加一些命令。例如可以切分腳本,將錄制的內容存放在不同的腳本塊中,也可以添加事務(wù)的開(kāi)始點(diǎn)和結束點(diǎn),還可以添加集合點(diǎn)和注釋。

3.2.6  結束錄制

當錄制結束后,單擊Stop按鈕,或者使用Ctrl+F5組合鍵停止錄制,所有客戶(hù)端和服務(wù)器交互協(xié)議會(huì )被放在Generation Log內,VuGen隨后會(huì )對協(xié)議交互進(jìn)行分析,最終生成腳本。

錄制完成后,可以在Recording Log中查看相關(guān)錄制信息,如圖3.34所示。而錄制中的events條數就是Recording Log中的信息行數。

圖3.34  Recording Log錄制日志內容

VuGen能支持多種協(xié)議,其關(guān)鍵就在于日志中的開(kāi)頭。

[Network Analyzer (25bc:2bb0)] -------------------------------------------

[Network Analyzer (25bc:2bb0)] Load Network Traffic Analyzers:

[Network Analyzer (25bc:2bb0)]     Analyzer Module: WPLUS (value=)

[Network Analyzer (25bc:2bb0)]     Analyzer Module: WebBase (value=GetHttp ProtocolAnalyzer:api_http_filter.dll)

[Network Analyzer (25bc:2bb0)]     + Network Analyzer: api_http_filter.dll @ GetHttpProtocolAnalyzer Loaded!

[Network Analyzer (25bc:2bb0)]     + Interception Auditors: WinInetWplus InterceptionAudit:api_http_filter.dll

[Network Analyzer (25bc:2bb0)]     Analyzer Module: QTWeb (value=)

[Network Analyzer (25bc:2bb0)]     Analyzer Module: local_server (value=)

[Network Analyzer (25bc:2bb0)] ----------------------------------------

在這段日志中可以看到,對HTTP的解析是通過(guò)api_http_filter.dll庫文件實(shí)現的。VuGen通過(guò)類(lèi)似于插件的形式來(lái)完成對多種協(xié)議的支持,只要有這類(lèi)的dll文件,就可以完成對該類(lèi)協(xié)議的錄制。

另一方面錄制得到的所有客戶(hù)端請求和服務(wù)器返回信息將會(huì )保存在Generation Log中,如圖3.35所示。

錄制得到的VuGen腳本就是通過(guò)Generation Log生成的。如果錄制結束時(shí)出錯或者錯誤修改后,想回到最初的狀態(tài),那么可以使用Tools菜單下的Regenerator Script功能來(lái)重新生成腳本。

圖3.35  Generation Log請求日志內容

3.2.7  回放驗證

腳本生成后可以單擊菜單欄上的Run按鈕也可直接按F5鍵回放腳本,如圖3.36所示。

運行前也可以通過(guò)Shift+F5組合鍵檢查腳本的語(yǔ)法規則,對腳本進(jìn)行編譯。

回放中可以在Replay Log日志欄中看到腳本執行的日志信息,當腳本回放完成后,如何驗證回放結果呢?

這里可以打開(kāi)View菜單下的Test Results,如圖3.37所示。

   

圖3.36  工具條上的執行按鈕                圖3.37  Test Results測試結果報告

在這個(gè)測試結果報告中,可以得到整個(gè)腳本回放的記錄,還有相關(guān)截圖,Passed狀態(tài)說(shuō)明腳本運行正常,得到了服務(wù)器的反饋。

Passed并不能說(shuō)明腳本完成了相關(guān)操作,只能說(shuō)明服務(wù)器端正確接收到了客戶(hù)端的請求并且返回了相應的數據,但是并不代表操作在邏輯上是正確的。

3.2.8  錄制回放常見(jiàn)問(wèn)題

錄制錯誤

1.錄制本機WebTours或錄制本地網(wǎng)站無(wú)法打開(kāi)

當使用Vista或者Windows 2008操作系統時(shí),會(huì )出現該問(wèn)題。這是由于在本地Windows\System32\drivers\etc\host文件中多了下面這行內容:

::1             localhost

將其刪除后即可恢復正常。

2.錄制網(wǎng)頁(yè)時(shí),瀏覽器剛打開(kāi)就自動(dòng)關(guān)閉,或者瀏覽器無(wú)響應

這是由于在IE中打開(kāi)了第三方插件支持導致的,一般安裝了QTP會(huì )出現這個(gè)問(wèn)題。只需要打開(kāi)IE的屬性菜單,找到高級選項,將其中的第三方插件支持關(guān)閉即可。

3.開(kāi)始錄制時(shí)瀏覽器出現錯誤

這個(gè)問(wèn)題一般是由于系統安裝的問(wèn)題或IE版本不兼容導致的。VuGen 9.1最高兼容IE 7.0。

4.錄制網(wǎng)頁(yè)操作后沒(méi)有任何腳本

VuGen錄制只支持IE,對于第三方的瀏覽器不能很好地兼容。

5.錄制本機頁(yè)面可以打開(kāi)但是沒(méi)有錄制到任何Events

在錄制時(shí)請求的地址為127.0.0.1或Localhost時(shí),偶爾會(huì )出現該問(wèn)題,換成系統真實(shí)IP地址即可。

6.錄制的時(shí)候總是提示無(wú)法訪(fǎng)問(wèn)服務(wù)器

可以考慮檢查一下IE的代理服務(wù)器設置。在Load Runner 8.x中經(jīng)常會(huì )出現VuGen中的代理設置自動(dòng)覆蓋IE 7.0的現象。

回放錯誤

在某些情況下,回放腳本會(huì )遇到失敗的情況,一般導致腳本回放失敗的原因無(wú)非以下幾種:

1.腳本中的數據存在動(dòng)態(tài)部分

例如腳本是訪(fǎng)問(wèn)一個(gè)圖片,但是再次回放的時(shí)候該圖片已經(jīng)在服務(wù)器上被刪除了,那么腳本回放時(shí)自然就會(huì )出現錯誤,提示該對象無(wú)法找到。解決方法是修改代碼,刪除無(wú)用的對象,或者通過(guò)關(guān)聯(lián)處理動(dòng)態(tài)數據。

2.腳本沒(méi)有錄制到所有的協(xié)議請求

當系統使用多種協(xié)議時(shí),如果我們選擇的錄制協(xié)議沒(méi)有全部包含,就會(huì )出現漏錄請求的情況,而在回放時(shí)由于缺乏部分請求的模擬,就會(huì )導致后續的請求內容被服務(wù)器拒絕,自然就會(huì )出現回放失敗的情況。解決方法是通過(guò)分析確認系統協(xié)議,確保所有請求被錄制。

3.系統存在問(wèn)題

從某些角度來(lái)說(shuō),VuGen是一種基于協(xié)議的木馬,可能會(huì )被部分殺毒軟件或防火墻干擾和影響,導致無(wú)法正常訪(fǎng)問(wèn)服務(wù)器。解決方法是在錄制時(shí)關(guān)閉不必要的防火墻和殺毒軟件。

4.腳本中添加了不合適的關(guān)聯(lián)或檢查點(diǎn)函數

在錄制選項中打開(kāi)了自動(dòng)錄制關(guān)聯(lián)規則后,錄制出來(lái)的腳本會(huì )自動(dòng)添加符合規則的關(guān)聯(lián)函數,而如果在回放時(shí)關(guān)聯(lián)函數無(wú)法捕獲到符合規則的目標則會(huì )提示錯誤。解決方法建議在深入了解關(guān)聯(lián)后再啟用該功能。對于檢查點(diǎn)函數,關(guān)閉Fail功能即可。

5.服務(wù)器連接錯誤

服務(wù)器無(wú)法連接,導致腳本回放失敗。

一般來(lái)說(shuō)回放錯誤可以通過(guò)日志或者Test Results中的截圖定位,當有一定的代碼調試能力后,就能夠輕松解決。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
action
web
LoadRunner中HTML模式與URL模式的區別
用LR做性能測試后的一點(diǎn)總結(1) - [LoadRunner] - 51Testing軟件測試論壇 軟件測試 | 軟件缺陷跟蹤 | 軟件配置工具 | 測試用例設計 | Web測試 | 自動(dòng)化測試工具
LoadRunner教程:構建Vuser腳本
LR之關(guān)聯(lián)
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久