Loadrunner的Virtual User Generator 提供人指令碼的錄製功能,對於初學者來說,這大大的降低了編寫指令碼的門檻,loadrunner提供兩種錄製指令碼的方式:Html_based script和Url-based script ,初學者疑惑這兩種方式有什麼不同? 在這裡我們來做個簡單分析。
下面我們來分別通過兩種方式來錄製百度首頁,對比一下他們之間有什麼不同。
HTML方式的指令碼:

Action()
{ web_url("www.baidu.com",
"URL=http://www.baidu.com/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t3.inf",
"Mode=HTML",
EXTRARES,
"Url=http://s1.bdstatic.com/r/www/img/i-1.0.0.png", ENDITEM,
"Url=http://s1.bdstatic.com/r/www/img/bg-1.0.0.gif", ENDITEM,
"Url=/favicon.ico", "Referer=", ENDITEM,
"Url=http://suggestion.baidu.com/su?wd=&cb=window.bdsug.sugPreRequest&sid=1440_2031_1945_1788&t=1362056239875", ENDITEM,
"Url=http://suggestion.baidu.com/su?wd=%E8%99%AB%E5%B8%88&p=3&cb=window.bdsug.sug&sid=1440_2031_1945_1788&t=1362056247256", ENDITEM,
"Url=http://suggestion.baidu.com/su?wd=%E8%99%AB%E5%B8%88%20&p=3&cb=window.bdsug.sug&sid=1440_2031_1945_1788&t=1362056247969", ENDITEM,
"Url=http://suggestion.baidu.com/su?wd=%E8%99%AB%E5%B8%88%20%E5%8D%9A%E5%AE%A2%E5%9B%AD&p=3&cb=window.bdsug.sug&sid=1440_2031_1945_1788&t=1362056251016", ENDITEM,
LAST); return 0;
}

URL方式的指令碼:

Action()
{ web_url("www.baidu.com",
"URL=http://www.baidu.com/",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t67.inf",
"Mode=HTTP",
LAST); web_concurrent_start(NULL); web_url("shouye_b5486898c692066bd2cbaeda86d74448.gif",
"URL=http://www.baidu.com/img/shouye_b5486898c692066bd2cbaeda86d74448.gif",
"Resource=1",
"RecContentType=image/gif",
"Referer=http://www.baidu.com/",
"Snapshot=t68.inf",
LAST); web_url("gs.gif",
"URL=http://www.baidu.com/cache/global/img/gs.gif",
"Resource=1",
"RecContentType=image/gif",
"Referer=http://www.baidu.com/",
"Snapshot=t69.inf",
LAST); web_url("tangram-1.3.4c1.0.js",
"URL=http://s1.bdstatic.com/r/www/cache/global/js/tangram-1.3.4c1.0.js",
"Resource=1",
"RecContentType=application/javascript",
"Referer=http://www.baidu.com/",
"Snapshot=t71.inf",
LAST); web_url("home-2.5.js",
"URL=http://s1.bdstatic.com/r/www/cache/global/js/home-2.5.js",
"Resource=1",
"RecContentType=application/javascript",
"Referer=http://www.baidu.com/",
"Snapshot=t72.inf",
LAST); web_url("u-1.3.4.js",
"URL=http://s1.bdstatic.com/r/www/cache/user/js/u-1.3.4.js",
"Resource=1",
"RecContentType=application/javascript",
"Referer=http://www.baidu.com/",
"Snapshot=t73.inf",
LAST); web_concurrent_end(NULL); web_url("i-1.0.0.png",
"URL=http://s1.bdstatic.com/r/www/img/i-1.0.0.png",
"Resource=1",
"RecContentType=image/png",
"Referer=http://www.baidu.com/",
"Snapshot=t70.inf",
LAST); web_concurrent_start(NULL); web_url("su",
"URL=http://suggestion.baidu.com/su?wd=&cb=window.bdsug.sugPreRequest&sid=1431_2031_1944_1788&t=1362056977341",
"Resource=1",
"RecContentType=baiduapp/json",
"Referer=http://www.baidu.com/",
"Snapshot=t74.inf",
LAST); web_url("favicon.ico",
"URL=http://www.baidu.com/favicon.ico",
"Resource=1",
"RecContentType=image/x-icon",
"Referer=",
"Snapshot=t75.inf",
LAST); web_concurrent_end(NULL); return 0;
}

Html_based script是loadrunner的預設模式,即預設模式,也就是通常說的高層次模式,一般優先選擇這種模式這種模式錄製的指令碼相對簡短,便於閱讀。它把類屬一個頁面的請求放在一個web_url中。
Url-based script即通常所說的低層次錄製模式,這種模式錄製的指令碼相對長,不利於閱讀,但指令碼更直觀,它把客戶端向伺服器端傳送的每一個請求都放在一個單獨的web_url中,即一個請求對應一個web_url,頁面和圖片分別生成對應的web_url,相對Html_based script模式把類屬一個頁面的請求放在一個web_url中的方式,Url-based script模式的指令碼更直觀。
如何從指令碼辨別使用哪種模式錄製?
我們可以從指令碼web_url中“mode”的值區分,Html_based script模式下mode的值為“html”,Url-based script模式下mode的值為“http”。還有Html_based script模式記錄為web_submit_form,而Url-based script模式記錄為web_submit_data。
兩種錄製方式優點對比:
(一)HTML 錄製
優點:減少了捕獲動態值的需要。
(1)資源從記憶體中取出且在回放時下載。因此,指令碼比其他的錄製方式更小且更容易閱讀。
(2)由於只有較少的硬編碼指令碼,因此只有較少的動態數值需要關聯。
(3)可以插入圖片檢查之類的語句以檢查結果是否正確。
(4)因為HTML模式回放時需要積極地解析返回的資訊,因此它可能會比其他錄製模式更加佔用資源。然而,HTML模式record/replay有相當大的改善,使得差異最小化且微不足道。
(5)HMTL錄製級別會為每一個HTML使用者動作產生一個單獨的步驟。而且HTML方式產生的指令碼非常簡潔和直述,易於閱讀。
(二)URL 錄製
優點:指令碼具有靈活性和可量測性。
(1)腳本回放過程中,不再搜尋記憶體和Cache。
(2)指令碼更具可擴充套件性。支援頁面上的Java Applets和ActiveX物件。
(3)URL錄製級別把對伺服器每個物件的請求,都錄製成一個單獨的請求。對業務過程有更好的控制。
如何選擇兩種模式?
1、基於瀏覽器的應用程式推薦使用HTML-Based Script。
2、不是基於瀏覽器的應用程式推薦使用URL-Based Script。
3、如果基於瀏覽器的應用程式中包含了Java Script,applet等並且該指令碼向伺服器產生了請求,比如DataGrid的分頁按鈕等,也要使用URL-Based Script方式錄製。
4、基於瀏覽器的應用程式中使用了HTTPS安全協議,使用URL-Based Script方式錄製。
5、錄製過程中不要使用瀏覽器的“後退”功能,LoadRunner對其支援不太好。
Tips:指令碼錄製過程中,可以根據需要在HTML級別和URL級別之間靈活地切換,以獲得最佳的效果。
原文連結:http://www.cnblogs.com/fnng/archive/2013/02/28/2937805.html