IP欺騙也是也loadrunner自帶的一個很是有用的功能。html
須要使用ip欺騙的緣由:
一、當某個IP的訪問過於頻繁,或者訪問量過大是,服務器會拒絕訪問請求,這時候經過IP欺騙能夠增長訪問頻率和訪問量,以達到壓力測試的效果。
二、某些服務器配置了負載均衡,使用同一個IP不能測出系統的實際性能。LR中的IP欺騙經過調用不一樣的IP,可很大程度上的模擬實際使用中多IP訪問和並測試服務器均衡處理的能力。
三、有一些網站會限制同一個用戶同一個IP 的登錄。爲了更加真實的模擬實際狀況,LoadRunner容許運行的虛擬用戶使用不 同的IP 訪問同一網站。web
IP欺騙的設置方式
打開HP LoadRunner ---->Tools ---->IP Wizard服務器
什麼狀況?!咱們須要爲本身的電腦配置固定的IP ,配置固定IP的方式,你懂的!網絡
下面進入正式的配置過程:app
第一步:負載均衡
create new setting 建立新的設置性能
當第一次使用IP欺騙或已經釋放了添加的IP時,就須要選擇這一項建立新有設置。測試
Load previous settings fro 讀取IP列表文件網站
從之前設置的IP地址列表中讀取IP地址url
Restore original setting 釋放已經設置的IP
釋放已經添加的IP 地址。
選擇默認選中項:create new setting (建立新的設置) ,點擊「下一步」
第二步:
讓輸入服務器的IP地址,Loadrunner經過該地址更新路由表。
客戶端計算機上添加新的IP地址後,服務器須要將該地址添加到路由表,以便可以識別返回到客戶端的路由。若是服務器和客戶端具備相同的子網掩碼、IP 類和網絡,則不須要修改服務器的路由表。
若是客戶端和服務器計算機之間有一個路由器,則服務器須要識別通過該路由器的路徑。確保將如下路由添加到服務器路由表:從 Web 服務器到路由器的路由,以及從路由器到負載生成器計算機上的全部 IP 地址的路由。
這裏能夠不作任何添加,點擊「下一步」。
第三步:
默認顯示本機的IP 地址,固然,咱們還須要添加更多的IP 。點擊「Add」進入IP添加頁面。
第四步:
Class C、Class B、Class A 表示,咱們要使用是的A類、B類仍是C類IP地址。don't use any of these 不要使用任何,它會把默認的IP與子網掩碼清空。
(C類最多隻能模擬255 個IP,若是你的須要更多,那麼就須要使用A 類或B類)
from ip 輸入框中輸入起始ip
Number to 輸入框中輸入ip地址的個數,也就是說咱們須要成多少個用於欺騙的IP
(我上面的配置是從110開始,按順序生成5個)
Submask根據IP類型輸入正確的子網掩碼
選中「verify that new ip addresses are not already used」,點擊「OK」。
此時IP Wizard會自動按照設置生成IP地址,而且將已經佔用的IP列出。點擊「完成」
第五步:
點擊「save as」按鈕,能夠將咱們設置的IP 保存成一個文件,之後再設置的時候,是在第一步裏,咱們能夠選擇第二個選項(Load previous settings fro),從文件導入IP 。
點擊「ok」,IP Wizard開始幫咱們成成IP 。
在命令提示符號輸入ipconfig命令驗證:
第六步:
打開loadrunner ---> Controller ,選擇Scenario--->Enable IP Spoofer ,此項打勾後表示容許使用IP欺騙。
建立測試腳本(IP欺騙)
通過上面的配置,你真的已經知道如何使用IP欺騙了麼?或者你真的理解了IP欺騙?如何證實你已經使用了IP欺騙?
Action() { //驗證IP欺騙代碼 char * ip ; ip = lr_get_vuser_ip(); if (ip) lr_output_message("當前虛擬用戶使用的IP爲: %s", ip); else lr_output_message("[enable IP spoofing ]選項沒有被啓用!"); lr_start_transaction("百度首頁"); //設置事務開始 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); lr_end_transaction("百度首頁",LR_AUTO); //設置事務結束 return 0; }
在VUGen中運行上面腳本,結果必定是:[enable IP spoofing ]選項沒有被啓用!
備註:爲何要在腳本里加事物,這也是loadrunner11比較蛋疼的一個問題,當我修改過action循環次數後,再用Controller 跑腳本時,Passed Transactions 爲顯示爲0 。固然,腳本自己沒有任何問題,在腳本中添加事物能夠預防這個問題的發生。
OK! 別急着保存腳本導入到Controller運行。打開菜單Vuser --->run-time settings
切換到Log選項
勾選全部log,否則等一下你會納悶,爲何只能看到第一個虛擬用戶的log。
切換到Miscellaneous選項
這裏選擇虛擬用戶是以進程仍是線程的方式運行。下面你可能會遇到的問題是要對這裏進行修改的。
作完這幾步能夠把腳本保存,導入到Controller運行。
驗證IP欺騙
第一步:選擇Scenario--->Enable IP Spoofer ,此項打勾後表示容許使用IP欺騙。(這裏前面已經說過,這裏只是再提醒一下)
第二步:勾選「Tools」—「Export Mode」
第三步:「Tools」—「Options」—「General」
這裏又有一個設置以進程方式或線程方式進行性能測試。這裏和run-time settings 裏的設置是什麼關係?
這個選項必定要與當前場景的模式相匹配,也就是說使用本地虛擬IP測試時須要選中線程方式,使用負載生成器使用虛擬IP測試時須要選中進程方式。
第四步:
運行腳本,查看虛擬用戶log
在腳本運行頁面,點擊Vusers...----> 右鍵點擊虛擬用戶,在彈出的菜單中打開「show Vuser log」 能夠看到每一個用戶使用的IP是不一樣的。
固然,還有另外一種查看日誌的方式:
菜單欄:Results ---> Results Settings...
C:\Users\Administrator\AppData\Local\Temp 就是你運行腳本的目錄,找到log\目錄下面,也能夠查看日誌。
遇到的錯誤
在運行腳本的過程當中發現有很多的錯誤請求,因而,找開查看發現如下錯誤提示:「Error: Socket descriptor not found. Hint: the problem might be solved applying the following: (1) Update Run-Time Settings to Run Vuser as a process. (2) Add the following line into mdrv.dat, [lr_socks] section: 'ExtCmdLineConc=-UsingWinInet Yes'.」
解決方法:
一、根據錯誤提示,在run-time setting中的Miscellaneous項中設置「run vuser as a process」;(前面已將教怎麼設置)
二、...\Program Files (x86)\HP\LoadRunner\dat\mdrv.dat
查找[lr_socks] 在後面添加「 ExtCmdLineConc=-UsingWinInet Yes 」,以下:
.............. [lr_socks] ExtPriorityType=hook WINNT_EXT_LIBS=lr_socks.dll WIN95_EXT_LIBS=lr_socks.dll LINUX_EXT_LIBS=liblr_socks.so SOLARIS_EXT_LIBS=liblr_socks.so HPUX_EXT_LIBS=liblr_socks.sl AIX_EXT_LIBS=liblr_socks.so LibCfgFunc=lr_socks_configure ExtMessageQueue=0 SecurityMode=On ExtCmdLineConc=-UsingWinInet Yes ........
三、若是仍然報錯,在菜單欄中點擊Diagnostics->configuration項,將web page diagnostics項改成:Enable (這一招只能說眼不見心不煩),我以爲還有更好的解決辦法。
理解誤區:
一、和Generator搞混。覺得添加多個IP後,須要添加多個IP對應的Generator纔可使用。(同一個Generator只須要以其某一個IP添加到Generator列表中便可以使用其它的IP。)
二、在上一個錯誤基礎上,對於同一個腳本,建立多個Vuser執行組,而後以不一樣IP選擇同一個物理Generator來執行。( 實際上,在場景中除非須要在這個Generator上運行多個不一樣腳本,不然沒有必要屢次以不一樣IP選擇。)
其實只要記住兩個要素便可使用這個功能:
一、 用IP wizard 添加多個IP;
二、在Controller中經過Enable IP Spoofing。
而在使用IP欺騙功能上應該注意三點:
一、虛擬IP是同一個Generator上的多個IP,這種分配過程由Controller自動來進行;
二、對於同一個Generator,你模擬的用戶數量多於IP數量時,將會發生IP重複的現象,不然將隨機分配不一樣的IP。
三、對於同一個Generator,以其某一個IP添加到Generator中便可,不須要用不一樣的IP添加屢次。