loadrunner---<三>---菜鳥對Browser Emulation的思考


之前在一個web是項目做性能測試,發現controller中場景運行的時候,mrdv.exe內存所耗內存在不斷增加,最后報錯停止了

not enough memory for new buffer in LrwSrvNetTaskItem::AllocSrvNetBuf---沒有內存了

然后打開analysis中的監控本機的資源圖,測試機的內存在不斷的較小,一直減小到提示錯誤,最后內存的 剩余量不記得了。在場景運行的過程中,從任務管理器看,內存也是不斷減小。聽測試群中的人說這種現象叫:腳本吃內存了

測試的內容是開發部門提供的http接口,不是錄制的腳本,就是到數據庫中查詢,然后對返回狀態做判斷,判斷時候。不需要考慮申請內存再釋放內存的問題,腳本中除了事務,檢查點沒有添加其他的函數,所以,可以肯定不是腳本的問題(此外,從controller中的vuser的show vuser log查找錯誤出現的位置,有兩處,一處是空白行,一處是提交的請求)

在網上搜,發現是Browser Emulation設置的問題,run-time-setting里面的設置有問題

后來將Browser Emulation的選項都禁止,mrdv占用的內存基本不變了,不再增加。

備注:但是測試了一下登陸mail.163.com中Browser Emulation設置,設置了下載非資源文件的選項的情況下,內存占用比較大,但是並沒有出現內存占用量不斷增加的現象(測試時間約為20分鍾),這個問題有待考慮。。。

下面總結一下Browser Emulation

1--什么是瀏覽器緩存?--

 簡單來說,瀏覽器的緩存就是--使用瀏覽器訪問頁面時,瀏覽器會將一些網頁的文字,圖片,保存到本地的一個文件內。然后,再次使用瀏覽器訪問這個網頁的時候,先前被保存(緩存)的文字和圖片不會從新被下載,而是使用保存在本地的資源。

Browser Emulation就是用來設置腳本回放時,lr模擬瀏覽器緩存策略的

緩存的東西一般都放在C:\Documents and Settings\用戶\Local Settings\Temporary Internet Files下。可以進去打開立面都是些什么--文檔和圖片,而且都是你曾經瀏覽過的界面中信息

2--Browser Emulation選項說明--

詳解見:http://www.rosoo.net/a/201011/10401.html

http://hi.baidu.com/c1425/item/0f4af76fc4f3a20ca1cf0f9d

上面這個連接對瀏覽器的設置,解釋的很好,本人嘗試了對Browser Emulation各種設置,在腳本回放的時候抓包比對,大體上是正確的。

為了方便描述,我們約定用:
A代表Simulate browser cache
B代表Cache URLs requiring content(HTMLs)
C代表Check for newer versions of stored pages every visit to the page
D代表Download non-HTML resources
E代表Simulate a new user on each iteratioin
F代表Clear cache on each iteration

附上help關於Browser Emulation的中文文檔

根據實驗總結如下:

1:Download non-HTML resources  下載非HTML資源。在設置了download non-HTML resource后下載了些什么東西?

提交的請求如下:

 

    web_url("ntesdoor2_2", 
        "URL=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie=1&language=-1&from=web&df=webmail163", 
        "TargetFrame=", 
        "Resource=0", 
        "RecContentType=text/html", 
        "Referer=", 
        "Snapshot=t3.inf", 
        "Mode=HTML", 
        EXTRARES, 
        "Url=http://mimg.127.net/p/js5/5.0.0b1211141530/----={sid}", ENDITEM, 
        "Url=http://mimg.127.net/p/font/js5/v1/--}", ENDITEM, 
        "Url=http://mimg.127.net/p/t.gif", "----}", ENDITEM, 
        "Url=http://mimg.127.net/xm/all/point_club/webmail/img---.jsp?sid={sid}", ENDITEM, 
        "Url=http://mimg.127.net/p/js5/5.0.0b1211141530/img/skin_163blue/top_right.jpg", "Referer=---?sid={sid}", ENDITEM, 
        "Url=http://mimg.127.net/p/js5/5.0.0b1211141530/img/wel/submit.png",--}", ENDITEM, 
        "Url=http://mimg.127.net/p/js5/5.0.0b1211141530/js/product/music.js", "--main.jsp?sid={sid}", ENDITEM, 
        "Url=http://mimg.127.net/p/js5/5.0.0b1211141530/img/skin_163blue/bg.png", "Referer--/js5/main.jsp?sid={sid}", ENDITEM, 
        "Url=http://mimg.127.net/p/js5/5.0.0b1211141530/--/bgx.png", -?sid={sid}", ENDITEM, 
        LAST);

 

回放日志如下

 

沒有設置 D

Action.c(71): Redirecting http://entry.mail.163.com/---- (redirection depth is 0)      [MsgId: MMSG-26694]                                                                                                                                                                                                                                                                                     
Action.c(71): To location "http://twebmail.mail.163.com/---?sid=----"      [MsgId: MMSG-26693]                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                   
Action.c(71): web_url("ntesdoor2_2") was successful, 8048 body bytes, 1786 header bytes, 13 chunking overhead bytes      [MsgId: MMSG-26385]                                                                                                                                                                                                                                                                                                                                       
Action.c(91): web_add_cookie was successful      [MsgId: MMSG-26392]                                                                                                                                                                                                                                                                                                                                                                                                               
Action.c(93): web_add_cookie was successful      [MsgId: MMSG-26392]                                                                                                                                                                                                                                                                                                                                                                                                               

設置 D選項,在提交請求的時候下載了很多資源

Action.c(64): Registering web_reg_save_param was successful      [MsgId: MMSG-26390]                                                                                                                                                                                                                                                             
Action.c(69): Registering web_reg_find was successful      [MsgId: MMSG-26390]                                                                                                                                                                                                                                                                   
Action.c(71): Redirecting http://entry.mail.163.com/----- (redirection depth is 0)      [MsgId: MMSG-26694]                                                                                                                                                   
Action.c(71): To location "http://twebmail.mail.163.com/js5/main.jsp?sid=----"      [MsgId: MMSG-26693]                                                                                                                                                                                                             
Action.c(71): Found resource "http://mimg.127.net/p/js5/5.0.0b1211141530/css/skin_163blue.css" in HTML "http://twebmail.mail.163.com/js5/main.jsp?sid=RBvmkshsJeynolIpsgssFmmypvBcgtxl"      [MsgId: MMSG-26659]                                                                                                                                 
Action.c(71): Found resource "http://mimg.127.net/external/js5pd163.js" in HTML http://---.jsp?sid=---mypvBcgtxl      [MsgId: MMSG-26659]                                                                                                                                                       
Action.c(71): Found resource "http://mimg.127.net/external/js5public163.js" in HTML http://twebmail.---=RBvmksh---gs--y--xl      [MsgId: MMSG-26659]                                                                                                                                                   
Action.c(71): Downloading resource http://mimg.127.net/p/js5/5.0.--.css (specified by argument number 10)      [MsgId: MMSG-26577]                                                                                                                                                                               
Action.c(71): Downloading resource "http://mimg.127.net/p/font/js5/v1/neteasefont-regular.eot" (specified by argument number 13)      [MsgId: MMSG-26577]                                                                                                                                                                                       
Action.c(71): Downloading resource "http://mimg.127.net/p/t.gif" (specified by argument number 16)      [MsgId: MMSG-26577]                                                                                                                                                                                                                     
Action.c(71): Downloading resource "http://mimg.127.net/xm/all/point_club/webmail/img/-(specified by argument number 22)      [MsgId: MMSG-26577]                                                                                                                                                                       
Action.c(71): Downloading resource "http://mimg.127.net/p/js5/5.0.0b1211141530/img/wel/submit.png" (--number 25)      [MsgId: MMSG-26577]                                                                                                                                                                                   
Action.c(71): Downloading resource http://mimg.127.net/p/js5/5.0.0b1211141530/js/--.js (specified-number 28)      [MsgId: MMSG-26577]                                                                                                                                                                                   
Action.c(71): Downloading resource http://mimg.127.net/p/js5/5.0.0b1211141530/img/-/bgx.png (specified by argument number 34)      [MsgId: MMSG-26577]                                                                                                                                                                             
Action.c(71): Found resource "http://mimg.127.net/logo/163logo.gif" in HTML http://twebmail.mail.163.com/js5/main.jsp?sid=------l      [MsgId: MMSG-26659]                                                                                                                                                           

在web_url()中Resource屬性的解釋: Resource - A value indicating whether the URL is a resource:
0 – the URL is not a resource  :resource=0 URL為非資源
1 – the URL is a resource :resource=1 URL為資源

從以上日志可以看到,下載的都是web_url()中EXTRARES資源列表里的資源。若將上面的腳本以url_based的方式錄制,web_url()這個請求如下

web_url("ntesdoor2_2", 
        "URL=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie=1&language=-1&from=web&df=webmail163", 
        "Resource=0", 
        "RecContentType=text/html", 
        "Referer=", 
        "Snapshot=t4.inf", 
        "Mode=HTTP", 
        LAST);

    web_concurrent_start(NULL);

    web_url("skin_163blue.css", 
        "URL=http://mimg.127.net/p/js5/5.0.0b1211141530/css/skin_163blue.css", 
        "Resource=1", 
        "RecContentType=text/css", 
        "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid=----", 
        "Snapshot=t5.inf", 
        LAST);

    web_url("js5pd163.js", 
        "URL=http://mimg.127.net/external/js5pd163.js", 
        "Resource=1", 
        "RecContentType=application/x-javascript", 
        "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid=----------------", 
        "Snapshot=t7.inf", 
        LAST);

    web_url("js5public163.js", 
        "URL=http://mimg.127.net/external/js5public163.js", 
        "Resource=1", 
        "RecContentType=application/x-javascript", 
        "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid=---------------", 
        "Snapshot=t9.inf", 
        LAST);

    web_url("p1.js", 
        "URL=http://mimg.127.net/p/js5/5.0.0b1211141530/js/p1.js", 
        "Resource=1", 
        "RecContentType=application/x-javascript", 
        "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid=---------------", 
        "Snapshot=t10.inf", 
        LAST);

    web_url("p0.js", 
        "URL=http://mimg.127.net/p/js5/5.0.0b1211141530/js/p0.js", 
        "Resource=1", 
        "RecContentType=application/x-javascript", 
        "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid=---------------", 
        "Snapshot=t11.inf", 
        LAST);

    web_url("163logo.gif", 
        "URL=http://mimg.127.net/logo/163logo.gif", 
        "Resource=1", 
        "RecContentType=image/gif", 
        "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid--------", 
        "Snapshot=t12.inf", 
        LAST);

    web_url("fix_v3_min.js", 
        "URL=http://mimg.127.net/p/js5/5.0.0b1211141530/js/fix_v3_min.js", 
        "Resource=1", 
        "RecContentType=application/x-javascript", 
        "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid-------------", 
        "Snapshot=t17.inf", 
        LAST);

    web_concurrent_end(NULL);

    web_url("base64_compress.css", 
        "URL=http://mimg.127.net/p/js5/5.0.0b1211141530/css/base64_compress.css", 
        "Resource=1", 
        "RecContentType=text/css", 
        "Referer=http://twebmail.mail.163.com/js5/main.jsp?-------", 
        "Snapshot=t6.inf", 
        LAST);

    web_url("neteasefont-regular.eot", 
        "URL=http://mimg.127.net/p/font/js5/v1/neteasefont-regular.eot", 
        "Resource=1", 
        "RecContentType=application/octet-stream", 
        "Referer=http://twebmail.mail.163.com/js5/main.jsp?------------", 
        "Snapshot=t8.inf", 
        LAST);

    web_concurrent_start(NULL);

    web_url("121030_js5jifen_509x289.jpg", 
        "URL=http://mimg.127.net/xm/all/point_club/-------
"RecContentType=image/jpeg", "Referer=http://twebmail.mail.163.com/js5/main.--", "Snapshot=t13.inf", LAST); web_url("top_right.jpg", "URL=http://mimg.127.net/p/js5/5.0.0b1211141530/img/skin_163blue/top_right.jpg", "Resource=1", "RecContentType=image/jpeg", "Referer=http://twebmail.mail.163.com/js5/main.jsp?---
   LAST); web_url(
"t.gif", "URL=http://mimg.127.net/p/t.gif", "Resource=1", "RecContentType=image/gif", "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid=----------------", "Snapshot=t15.inf", LAST); web_url("submit.png", "URL=http://mimg.127.net/p/js5/5.0.0b1211141530/img/wel/submit.png", "Resource=1", "RecContentType=image/png", "Referer=http://twebmail.mail.163.com/js5/main.-----------", "Snapshot=t16.inf", LAST); web_concurrent_end(NULL); web_concurrent_start(NULL); web_url("music.js", "URL=http://mimg.127.net/p/js5/5.0.0b1211141530/js/product/music.js", "Resource=1", "RecContentType=application/x-javascript", "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid=-----------------", "Snapshot=t18.inf", LAST); web_url("bg.png", "URL=http://mimg.127.net/p/js5/5.0.0b1211141530/img/skin_163blue/bg.png", "Resource=1", "RecContentType=image/png", "Referer=http://twebmail.mail.163.com/js5/main.jsp?sid=-------------------", "Snapshot=t19.inf", LAST); web_concurrent_end(NULL);

 

這樣就可以看清,設置了下載D( download non-html resource),下載的資源都是resource=1的url.

這樣看來,以HTML-based錄制的腳本,提交函數中的resource=0,設置D后,下載的是extrares部分的資源

以URL-based錄制的腳本,設置D后,下載的是resource=1 url 中資源

即,用以resource=0標識的url不是資源,是一個必須的請求。用resource=1標識,說明這個url請求的是個資源

2--對發包量的影響--

設置D,會造成發包量增加很多以外,其他選項的設置基本上對發包數量影響不是很大。而且會大量增加TCP的連接數

所以選擇D選項要慎重,很耗測試機的資源。

3--TCP連接數的影響--

E是與TCP連接數相關的,因為是模擬一個新的用戶,要斷開所有連接,建立新的連接。所以選擇了E,會增加TCP的連接數 

 (none什么都沒設置)左邊為第一次迭代的日志,右邊是第二次迭代的日志,有一些不同,但是目前能力有限看不懂,重定向的一些東西.此外第二次迭代的請求的body的部分明顯比第一次的要小(tcp/ip協議的基礎知識要補充)

 

    web_url("ntesdoor2", 
        "URL=http://entry.mail.163.com/coremail/fcg/ntesdoor2?lightweight=1&verifycookie=1&language=-1&from=web&df=webmail163", 
        "TargetFrame=", 
        "Resource=0", 
        "RecContentType=text/html", 
        "Referer=", 
        "Snapshot=t2.inf", 
        "Mode=HTML", 
        LAST);

 

 A:Simulate browser cache,模擬瀏覽器緩存后,lr提交的收到body要比什么都不設置要大(日志中顯示的應該是收到的響應,請求的長度沒有那么大,而且TCP包沒有分片)

AB:Cache URLs requiring content(HTMLs)&&Simulate browser cache,這個回放的日志與上面的就有明顯的差別了,在第二次迭代時多了retrieving data from cache from ----,在第一迭代的時候保存了cache,第二次迭代取緩存內容(),web_url(“mail.163.com”)返回body是0,他使用了緩存的部分

 

 ABEF:其中E,F選項使每次運行都模擬一個新用戶,並且每次跌倒都清除了cache,所有沒有retrieving data from cache.並且在Action(38)這部分的日志是一樣的,但是第二次迭代的響應body更小一些

ABE:沒有設置F,迭代之間沒有清理緩存,日志中出現了Retrieving data  from cache,web_url("mail.163.com")返回body為0.這個是因為lr沒有發送訪問mail.163.com這個請求還是什么原因?

 

到抓到的包里去看一下,這個請求對應的包是GET / HTTP/1.1 里面的內容是request URI:mail.163.com/l.在設置B的抓包文件里這個包只被發送了一次,而在其他抓包文件中都是出現2次(因為迭代了兩次)。根據ABE與ABEF設置的區別,可以明確看出,迭代之間清理緩存之間的差別了。設置了B后,對服務器的壓力變小了。

 

E:設置了模擬新用戶,在沒有設置A時,web_url(“ntestdoor2”)這個請求返回的body字節數較小。

 

EF:這個與E的日志基本一樣,在消息的字節數上也沒有什么差別

 

通過以上實驗可以得出以下結論:

1--如不設置瀏覽器緩存A,兩次迭代中body字節數基本相同.如設置了A,第二次迭代中,響應body字節數會小一些

2--若設置了B,第二次迭代時,發包數會略小,有些請求不向服務器發送,使用了lr的緩存

3--設置了EF,清理了lr的緩存后,B的設置就對第二次迭代不起作用了

lr模擬真實瀏覽器的程度?

清除掉所有緩存

使用ie訪問兩次mail.163.com(自動登錄,沒有刪除cookies),分析包的情況

清理掉緩存后,使用ie自動登錄mail.163.com發包量在1400左右,連接數25個左右,第二次登錄發包量在300左右,連接數為13個左右

這樣在做壓力測試時候,根據不同的業務需求就可以清楚對瀏覽器進行設置了。

如果想要真實的模擬全新的用戶去訪問網站,D這個選項就要設置(瀏覽器的全部設置都要勾選),如果模擬的用戶已經瀏覽過這個網站,那么默認的瀏覽器設置是比較適合的(ABEF)

備注:在lr和controller中運行的腳本不會改變本地的瀏覽器緩存文件,lr中回放腳本時,需要緩存文件也不是從本地緩存文件取的,而是在autologinmail163(腳本目錄)\data目錄下,lr把緩存的東西放在那里。

在C:\Program Files\HP\LoadRunner\bin\vslick\win\vslick\vsdelta\C\Documents and Settings\用戶\Local Settings\Temp

這個是lr在C\Documents and Settings\YanFa\Local Settings\Temp建立的一個存放臨時文件目錄 

 

 

web_url 中對EXTRARES的補充

EXTRARES中的內容說明載入頁面時,還有其他圖片或是附屬資源需要下載,由於默認的web_url函數或是web_link函數使用HTML Mode,所以無論腳本中是否存在EXTRARES字段,完成函數時都會自動下載HTML對應的所有資源。

實驗場景一:

步驟1:使用HTML-based URL only模式登陸www.baidu.con首頁

以下是腳本:

web_url("www.baidu.com",
"URL=http://www.baidu.com/",
"TargetFrame=",
"Resource=0",
"RecContentType=text/html",
"Referer=",
"Snapshot=t1.inf",
"Mode=HTML",
EXTRARES,
"Url=http://s1.bdstatic.com/r/www/cache/static/global/img/icons_e540198d.png", ENDITEM,
"Url=http://s1.bdstatic.com/r/www/cache/static/sug/js/bdsug_e259ada8.js", ENDITEM,
"Url=http://passport.baidu.com/passApi/js/uni_login_wrapper.js?cdnversion=1404797934687&_=1404797934578", ENDITEM,
"Url=/favicon.ico", "Referer=", ENDITEM,
"Url=http://suggestion.baidu.com/su?wd=&zxmode=1&json=1&p=3&sid=5015_1450_7570_5224_6995_7540_7532_7443_6504_6018_7202_7379_6708_7418_7414&cb=jQuery110204499035349637204_1404797934579&_=1404797934580", ENDITEM,
//"Url=http://nsclick.baidu.com/v.gif?pid=201&pj=www&fm=behs&tab=tj_duty&query=&un=&path=http%3A%2F%2Fwww.baidu.com%2F&wd=&rsv_sid=5015_1450_7570_5224_6995_7540_7532_7443_6504_6018_7202_7379_6708_7418_7414&t=1404797984890", ENDITEM,
LAST);

步驟2:然后run time setting 中選擇download non-HTML resourse方式回放,並查看回放log

Action.c(12): Found resource "http://www.baidu.com/img/baidu_jgylogo3.gif" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): Found resource "http://www.baidu.com/img/bdlogo.gif" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): Downloading resource "http://s1.bdstatic.com/r/www/cache/static/global/img/icons_e540198d.png" (specified by argument number 10) [MsgId: MMSG-26577]
Action.c(12): Downloading resource "http://s1.bdstatic.com/r/www/cache/static/sug/js/bdsug_e259ada8.js" (specified by argument number 12) [MsgId: MMSG-26577]
Action.c(12): Downloading resource "http://passport.baidu.com/passApi/js/uni_login_wrapper.js?cdnversion=1404797934687&_=1404797934578" (specified by argument number 14) [MsgId: MMSG-26577]
Action.c(12): Downloading resource "http://www.baidu.com/favicon.ico" (specified by argument number 16) [MsgId: MMSG-26577]
Action.c(12): Downloading resource "http://suggestion.baidu.com/su?wd=&zxmode=1&json=1&p=3&sid=5015_1450_7570_5224_6995_7540_7532_7443_6504_6018_7202_7379_6708_7418_7414&cb=jQuery110204499035349637204_1404797934579&_=1404797934580" (specified by argument number 19) [MsgId: MMSG-26577]
Action.c(12): Downloading resource "http://nsclick.baidu.com/v.gif?pid=201&pj=www&fm=behs&tab=tj_duty&query=&un=&path=http%3A%2F%2Fwww.baidu.com%2F&wd=&rsv_sid=5015_1450_7570_5224_6995_7540_7532_7443_6504_6018_7202_7379_6708_7418_7414&t=1404797984890" (specified by argument number 21) [MsgId: MMSG-26577]
Action.c(12): Found resource "http://www.baidu.com/cache/global/img/gs-2.0.gif" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): Found resource "http://s1.bdstatic.com/r/www/cache/static/jquery/jquery-1.10.2.min_f2fb5194.js" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): Found resource "http://s1.bdstatic.com/r/www/cache/static/global/js/all_async_popstate_3c4b1620.js" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): web_url("www.baidu.com") was successful, 109742 body bytes, 4095 header bytes, 47 chunking overhead bytes [MsgId: MMSG-26385]

結論1:回放日志可以看到,下載的資源共有11項,紅色6項,綠色5項。其中紅色部分與錄制的腳本中EXTRARES中的資源一致

步驟3:將腳本中EXTRARES全部注釋掉,再次以run time setting 中選擇download non-HTML resourse方式回放,並查看回放log

Action.c(12): Found resource "http://www.baidu.com/img/baidu_jgylogo3.gif" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): Found resource "http://www.baidu.com/img/bdlogo.gif" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): Found resource "http://www.baidu.com/cache/global/img/gs-2.0.gif" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): Found resource "http://s1.bdstatic.com/r/www/cache/static/jquery/jquery-1.10.2.min_f2fb5194.js" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): Found resource "http://s1.bdstatic.com/r/www/cache/static/global/js/all_async_popstate_3c4b1620.js" in HTML "http://www.baidu.com/" [MsgId: MMSG-26659]
Action.c(12): web_url("www.baidu.com") was successful, 83482 body bytes, 2262 header bytes, 34 chunking overhead bytes [MsgId: MMSG-26385]

結論2:回放日志中只有步驟2中綠色的資源是被下載的

步驟4:注銷對EXTRARES的注釋,以run time setting 中不選中download non-HTML resourse方式回放(即不下載資源),並查看回放log

Action.c(12): web_url("www.baidu.com") was successful, 15025 body bytes, 562 header bytes, 13 chunking overhead bytes   [MsgId: MMSG-26385]

結論3:沒有任何下載資源的記錄

場景二:以url-based方式錄制登陸www.baidu.com的首頁,

步驟1:以download non-HTML回放

Action.c(6): web_url("www.baidu.com") was successful, 15032 body bytes, 562 header bytes, 13 chunking overhead bytes [MsgId: MMSG-26385]
Action.c(15): web_concurrent_start was successful [MsgId: MMSG-26392]
Action.c(17): Registering web_url("jquery-1.10.2.min_f2fb5194.js") was successful [MsgId: MMSG-26390]
Action.c(25): Registering web_url("baidu_jgylogo3.gif") was successful [MsgId: MMSG-26390]
Action.c(33): Registering web_url("bdlogo.gif") was successful [MsgId: MMSG-26390]
Action.c(41): Registering web_url("gs-2.0.gif") was successful [MsgId: MMSG-26390]
Action.c(49): Registering web_url("all_async_popstate_3c4b1620.js") was successful [MsgId: MMSG-26390]
Action.c(57): web_concurrent_end was successful, 68464 body bytes, 1743 header bytes [MsgId: MMSG-26386]
Action.c(61): web_url("icons_e540198d.png") was successful, 16903 body bytes, 332 header bytes [MsgId: MMSG-26386]
Action.c(69): web_concurrent_start was successful [MsgId: MMSG-26392]
Action.c(71): Registering web_url("bdsug_e259ada8.js") was successful [MsgId: MMSG-26390]
Action.c(79): Registering web_url("uni_login_wrapper.js") was successful [MsgId: MMSG-26390]
Action.c(87): Registering web_url("favicon.ico") was successful [MsgId: MMSG-26390]
Action.c(95): Registering web_url("su") was successful [MsgId: MMSG-26390]
Action.c(103): web_concurrent_end was successful, 9380 body bytes, 1424 header bytes [MsgId: MMSG-26386]

結論1:綠色的部分為產生流量的記錄,第一個並行提交的部分web_concurrent_start was successful [MsgId: MMSG-26392]與場景一中的EXTRARES的資源一致,第二部分為自動下載的HTML資源,下載的資源量與以HTML-based的download non-HTML回放也基本一致

步驟2:以非download non-HTML方式進行回放

Action.c(6): web_url("www.baidu.com") was successful, 15039 body bytes, 726 header bytes, 13 chunking overhead bytes [MsgId: MMSG-26385]
Action.c(15): web_concurrent_start was successful [MsgId: MMSG-26392]
Action.c(17): Resource "http://s1.bdstatic.com/r/www/cache/static/jquery/jquery-1.10.2.min_f2fb5194.js" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(25): Resource "http://www.baidu.com/img/bdlogo.gif" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(33): Resource "http://www.baidu.com/cache/global/img/gs-2.0.gif" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(41): Resource "http://www.baidu.com/img/baidu_jgylogo3.gif" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(49): Resource "http://s1.bdstatic.com/r/www/cache/static/global/js/all_async_popstate_3c4b1620.js" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(57): web_concurrent_end was successful [MsgId: MMSG-26392]
Action.c(61): Resource "http://s1.bdstatic.com/r/www/cache/static/global/img/icons_e540198d.png" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(69): web_concurrent_start was successful [MsgId: MMSG-26392]
Action.c(71): Resource "http://s1.bdstatic.com/r/www/cache/static/sug/js/bdsug_e259ada8.js" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(79): Resource "http://passport.baidu.com/passApi/js/uni_login_wrapper.js?cdnversion=1404799873328&_=1404799873203" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(87): Resource "http://www.baidu.com/favicon.ico" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(95): Resource "http://suggestion.baidu.com/su?wd=&zxmode=1&json=1&p=3&sid=7574_5229_1460_7571_5223_6995_7539_7532_7442_6505_6018_7202_7134_6888_7384_7414&cb=jQuery110206677635930335499_1404799873204&_=1404799873205" not downloaded (resource downloading not requested) [MsgId: MMSG-27299]
Action.c(103): web_concurrent_end was successful [MsgId: MMSG-26392]

結論2:從日志中可以看出,只有紅色的部分URL產生了流量,其他資源其實並沒有被下載,沒有產生流量,URL,HTML模式以非download non-HTML resource產生的流量也是基本一致的

(url方式是將所有的資源單獨用一個web_url提交,所以URL方式錄制腳本中web_url數=html方式的EXTRARES+自動下載的資源+主請求)

場景三:

用抓包的方式,查看登錄www.baidu.com的交互流程

 

關於web_url 中對EXTRARES的補充結論如下:

1、 EXTRARES中如果請求的地址和主請求相同不會產生新的流量(這句話意思我不太懂,自己理解的意思就是如果EXTRARES中的請求資源與主請求的url是一樣的,就不會產生流量)

2、錄制到的EXTRARES不是簡單的將圖片拆出,而是住請求請求不到的內容

3、錯誤的EXTRARES會產生額外的請求

4、EXTRARES中的內容說明載入頁面時,還有其他圖片或是附屬資源需要下載,由於默認的web_url函數或是web_link函數使用HTML Mode,所以無論腳本中是否存在EXTRARES字段,完成函數時都會自動下載HTML對應的所有資源。EXTRARES段是一種擴展驗證機制,驗證這些對象是否存在,如果EXTRARES中的請求並不在返回內,那么回放腳本會比真實情況略微增加帶寬的使用

以上結論摘自《性能測試進階指南》

對比以上4步驟可以與結論做一下對應:

步驟2中紅色部分為web_url中的EXTRARES部分,綠色部分為:HTML Mode,所以無論腳本中是否存在EXTRARES字段,完成函數時都會自動下載HTML對應的所有資源,所以當腳本中EXTRARES部分被注釋掉,再次回放,日志就只剩綠色的部分了。

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM