LoadRunner錄製HTTP腳本問題合集

1 錄製腳本問題

1.1 HTTP 腳本問題

1.11 LoadRunner錄製腳本時爲什麼不彈出IE瀏覽器?

1.一臺主機上安裝多個瀏覽器時,LoadRunner錄製腳本經常遇到不能打開瀏覽器的情況,可以用下面的方法來解決。

啓動瀏覽器,打開Internet選項對話框,切換到高級標籤,去掉「啓用第三方瀏覽器擴展(需要重啓動)」的勾選,然後再次運行VuGen即可解決問題

LoadRunner錄製HTTP腳本問題合集一

  提示:通常安裝Firefox等瀏覽器後,都會勾選上面得選項,導致不能正常錄製。因此建議運行LoadRunner得主機上保持一個乾淨的測試環境。

2.在系統中安裝了多個瀏覽器需在「program to record」中指定需要啓動的瀏覽器的可執行文件。

LoadRunner錄製HTTP腳本問題合集一

3.覽器的版本應與loadrunner的版本一致。

LR 8--------àIE6

LR9---------àIE7

LR11--------àIE8

4.操作系統有關

windows server 在有數據執行保護,應將vugen.exe加入不受系統的保護項。

LoadRunner錄製HTTP腳本問題合集一

1.12 錄製腳本爲空

LR錄製是客戶端與服務器的數據交互,只有在有交互的時候纔可以錄製到腳本。

  A、(1) 交互方式若是通過客戶端的server進行交互,則在script中選擇最後一個track processes created as COM local servers ,把script裏的最後一個選項選上就好了。

LoadRunner錄製HTTP腳本問題合集一

(2)若是非客戶端與服務器的交互操作,在頁面上點前進或後退,如果頁面是從緩存中取出來的,那麼也就沒有和服務器數據交互,所以也錄製的爲空腳本。 在windows註冊表中禁用緩存就好了.

(3)協議選擇錯誤,b/s不一定走http協議,還可能是https(hypertext transfer protocol over secure socket layer)協議。

LoadRunner錄製HTTP腳本問題合集一

B、選擇internet選項裏的連接裏的局域網設置的代理不能選,因爲LR在錄製的時候會動態選擇。

C、網頁裏的惡意代碼,檢測的時候響應LR錄製腳本[用工具檢測惡意代碼,然後卸載惡意代碼,例如:Ad_Aweare] ,這個可能性不大。

D、防病毒軟件和防火牆,在錄製時暫時關閉。

E、 因爲LR自身原因報錯或者有些腳本不能錄製下來,錄製時最好選用view script,此時會報錯,但能錄下腳本,是因爲LR無法解析,可以手工修改,而view tree 就直接停止了。

1.13 錄製Web腳本時,生成的腳本中存在亂碼該如何解決?

第一步:

LoadRunner錄製HTTP腳本問題合集一

錄製腳本前,打開錄製選項配置對話框Record-Options,進入到Advanced標籤,先勾選「Support charset」,然後選擇中支持UTF-8。再次錄製,就不會出現中文亂碼問題了。

第二步:服務器響應報文中顯示亂碼

若是錄製的腳本在切換到Server Response中,所有的中文全部變成亂碼,如「勌縗仫訆」。

原因是服務器端沒有把響應的編碼設置爲gb2312,在IIS中找到Web.Config文件,在<system.web>….</system.web>節加入<globalization requestEncoding="gb2312" responseEncoding="gb2312" fileEncoding="gb2312"/>後再次錄製腳本,亂碼變中文。

還有另一種情況:是錄製的腳本里有亂碼,但是不影響回放,測試中需要對其進行參數化,我們可以通過字符串編碼轉換的函數lr_convert_string_encoding( const char *sourceString, const char *fromEncoding, const char *toEncoding, const char *paramName)進行轉換:

lr_convert_string_encoding(lr_eval_string("{name}"),LR_ENC_SYSTEM_LOCALE,LR_ENC_UTF8,"str");

strcpy(tmp,lr_eval_string("{str}"));

第三步:回放過程中,LR的快照中顯示亂碼

解決方案:

在Run-time settings下Browser Emulation中點擊change。。按鈕

LoadRunner錄製HTTP腳本問題合集一

在User-Agent對話框中更改Browser的類型和版本。

1.14 ERROR:not found the correlation ParameterMemorry violation

1.關聯錯誤,檢查關聯的內容是否正確,左右邊界取值是否準確很多時候,在關聯的左右邊界中是不分大小寫的。

2.關聯較多時如果左右邊界不唯一,會出現左右邊界分不清的情況,參數值也會取不到。

解決辦法有兩種:一、左右邊界可以取長點直到可以唯一標識關聯參數時;二、如果需要的關聯很多,可以利用ORD控制(ord用來確定第幾次出現的值,是要關聯的值 ,默認值爲1,就是第一次出現的值爲關聯的值,而設置成ALL則表示關聯全部存在於左右邊界的值,ord=all時可以使用參數數組)。在9.x的版本中提供了三個關於Ord的主要函數:

lr_paramarr_len

lr_paramarr_idx

lr_paramarr_random

1.15 關聯報錯:Action.c(20): Error -26377: No match found for the requested parameter "xxxxxx". Check whether the requested boundaries exist in the response data. Also, if the data you want to save exceeds 1024 bytes, use web_set_max_html_param_len to increase the parameter size [MsgId: MERR-26377]

這個問題是因爲存放參數的緩衝區大小默認爲1024個字節,也就是1k,比較小。應該根據需要進行調整。

解決方法:

web_set_max_html_param_len()函數可以自定義關聯返回值存放的參數的最大長度,且一定要寫在關聯函數前面.

1.16 問題描Error-27257: Pendingweb_reg_save_param/ reg_find/create_html_param[_ex] request(s) detected and reset at the end ofiteration number 1

解決方法:web_reg_save_param位置放錯了,應該放到請求頁面前面。且在插入文本檢查點時,正確寫入 web_reg_find的參數值,通常TextPfx和TextSfx中會包含特殊字符如:雙引號,等特殊字符,需要進行轉義(用斜槓)例如:

web_reg_find("Search=Body",

"SaveCount=Welcome",

"TextPfx=歡迎<a class="drop" id="viewpro" onMouseOver="showMenu(this.id)">",

"TextSfx=</a>",

LAST);

1.17 爲什麼腳本中添加了檢查方法Web-find,但是腳本回放時卻沒有執行?

由於檢查點功能會耗費一定的資源,因此LoadRunner默認關閉了對文本及圖像的檢查。要想開啓檢查功能,必須修改運行時的配置Run-time Setting。

LoadRunner錄製HTTP腳本問題合集一

  進入「Run-time Setting」對話框,依次進入「Internet Protocol→Preferences」,勾選Checks下的「Enable Image and text check」選項即可。

  檢查執行結果時推薦使用web_reg_find方法。

1.18 一些Web虛擬用戶腳本錄製後立刻回放沒有任何問題,但是當設置迭代次數大於1時,如果進行回放則只能成功迭代一次。爲什麼從第二次迭代開始發生錯誤?

這種現象多是由於在「Run-time Setting」的「Browse Emulation」的設置中,勾選了「Simulate a new user on each iteration」及其下面的選項「Clear cache on each iteration」這兩個選項的含義是每次迭代時模擬一個新的用戶及每次迭代時清除緩存。

由於腳本迭代時,init和end只能執行一次,如果每次都模擬一個新的用戶並清除緩存,則用戶登錄信息將一併刪除,迭代式可能會出現問題。

LoadRunner錄製HTTP腳本問題合集一

1.19 LoadRunner請求無法找到:在錄製Web協議腳本回放腳本的過程中,會出現請求無法找到的現象,而導致腳本運行停止。

錯誤現象:Action.c(41): Error -27979: Requested form. not found [MsgId: MERR-27979]

Action.c(41): web_submit_form. highest severity level was 「ERROR」,0 body bytes, 0 header bytes [MsgId: MMSG-27178]」這時在tree view中看不到此組件的相關URL。

錯誤分析:所選擇的錄製腳本模式不正確,通常情況下,基於瀏覽器的Web應用會使用「HTML-based script」模式來錄製腳本;而沒有基於瀏覽器的Web應用、Web應用中包含了與服務器進行交互的Java Applet、基於瀏覽器的應用中包含了向服務器進行通信的JavaScript/VBScript代碼、使用HTTPS安全協議,這時則使用「URL-based script」模式進行錄製。

解決辦法:打開錄製選項配置對話框進行設置,在「Recording Options」的「Internet Protocol」選項裏的「Recording」中選擇「Recording Level」爲「HTML-based script」,單擊「HTML Advanced」,選擇「Script. Type」爲「A script. containing explicit」。然後再選擇使用「URL-based script」模式來錄製腳本。

LoadRunner錄製HTTP腳本問題合集一

注: HTML-based 方式和URL-based 方式的區別

HTML-based 方式對每個頁面錄製形成一條語句,對LoadRunner來說,在該模式下,訪問一個頁面,首先會與服務器之間建立一個連接獲取頁面的內容,然後從頁面中分解得到其他的元素(component),然後建立幾個連接分別獲取相應的元素。

URL-based 方式將每條客戶端發出的請求錄製成一條語句,對LoadRunner來說,在該模式下,一條語句只建立一個到服務器的連接,LoadRunner提供了web_concurrent_start和web_concurrent_end函數模擬HTML-based的工作方式。

如何決定選擇何種錄製方式?

1、如果應用是WEB應用,首選是HTML-based方式;

2、如果應用是使用HTTP協議的非WEB應用,首選是URL-based方式;

3、如果WEB應用中使用了java applet程序,且applet程序與服務器之間存在通訊,選用URL-based方式;

4、如果WEB應用中使用的javascript、vbscript腳本與服務器之間存在通訊(調用了服務端組件),選用URL-based方式。

1.20 在錄製一個應用的過程中,需要進行查詢操作,若查詢的返回結果過多,引起後續的腳本無法繼續錄製。

這是由於loadrunner所能處理的數據條目小於返回的數據條目,導致了loadrunner不能處理返回的值。可以通過修改vugen.ini文件中的CmdSize=xxxxxxx的值,使得loadrunner所能處理的數據條目大於查詢返回的數據條目。










本文轉自 小強測試幫 51CTO博客,原文鏈接:http://blog.51cto.com/xqtesting/2069232,如需轉載請自行聯繫原作者