LoadRunner 技巧之 IP欺騙

IP欺騙也是也loadrunner自帶的一個非常有用的功能。

需要使用ip欺騙的原因
1、當某個IP的訪問過於頻繁,或者訪問量過大是,服務器會拒絕訪問請求,這時候通過IP欺騙可以增加訪問頻率和訪問量,以達到壓力測試的效果。
2、某些服務器配置了負載均衡,使用同一個IP不能測出系統的實際性能。LR中的IP欺騙通過調用不同的IP,可很大程度上的模擬實際使用中多IP訪問和並測試服務器均衡處理的能力。
3、有一些網站會限制同一個用戶同一個IP 的登陸。爲了更加真實的模擬實際情況,LoadRunner允許運行的虛擬用戶使用不 同的IP 訪問同一網站。

 

IP欺騙的設置方式

 

打開HP LoadRunner ---->Tools ---->IP Wizard

什麼情況?!我們需要爲自己的電腦配置固定的IP ,配置固定IP的方式,你懂的!

 

下面進入正式的配置過程:

第一步:

create new setting  創建新的設置

  當第一次使用IP欺騙或已經釋放了添加的IP時,就需要選擇這一項創建新有設置。

Load previous settings fro  讀取IP列表文件

  從以前設置的IP地址列表中讀取IP地址

Restore original setting  釋放已經設置的IP 

  釋放已經添加的IP 地址。

選擇默認選中項:create new setting (創建新的設置) ,點擊“下一步”

 

第二步:

讓輸入服務器的IP地址,Loadrunner通過該地址更新路由表。

  客戶端計算機上添加新的IP地址後,服務器需要將該地址添加到路由表,以便能夠識別返回到客戶端的路由。如果服務器和客戶端具有相同的子網掩碼、IP 類和網絡,則不需要修改服務器的路由表。

  如果客戶端和服務器計算機之間有一個路由器,則服務器需要識別經過該路由器的路徑。確保將以下路由添加到服務器路由表:從 Web 服務器到路由器的路由,以及從路由器到負載生成器計算機上的所有 IP 地址的路由。

這裏可以不做任何添加,點擊“下一步”。

 

第三步:

默認顯示本機的IP 地址,當然,我們還需要添加更多的IP 點擊“Add”進入IP添加頁面

第四步:

Class CClass BClass A 表示,我們要使用是的A類、B類還是CIP地址。don't use any of these 不要使用任何,它會把默認的IP與子網掩碼清空。

C類最多隻能模擬255 IP,如果你的需要更多,那麼就需要使用類或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'.

解決方法
1、根據錯誤提示,在run-time setting中的Miscellaneous項中設置“run vuser as a process”;(前面已將教怎麼設置)
 

2、...\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
........
複製代碼

 

3、如果仍然報錯,在菜單欄中點擊Diagnostics->configuration項,將web page diagnostics項改爲:Enable (這一招只能說眼不見心不煩),我覺得還有更好的解決辦法。

 

 

IP欺騙的理解誤區

 

理解誤區

    1、和Generator搞混。以爲添加多個IP後,需要添加多個IP對應的Generator纔可以使用。(同一個Generator只需要以其某一個IP添加到Generator列表中即可以使用其它的IP。)

    2、在上一個錯誤基礎上,對於同一個腳本,創建多個Vuser執行組,然後以不同IP選擇同一個物理Generator來執行。( 實際上,在場景中除非需要在這個Generator上運行多個不同腳本,否則沒有必要多次以不同IP選擇。)

 

其實只要記住兩個要素即可使用這個功能:

     1、 用IP wizard 添加多個IP

     2、在Controller中通過Enable IP Spoofing

 

而在使用IP欺騙功能上應該注意三點:

   1、虛擬IP是同一個Generator上的多個IP,這種分配過程由Controller自動來進行;

   2、對於同一個Generator,你模擬的用戶數量多於IP數量時,將會發生IP重複的現象,否則將隨機分配不同的IP

   3、對於同一個Generator,以其某一個IP添加到Generator中即可,不需要用不同的IP添加多次。

 

 

 

 

發佈了31 篇原創文章 · 獲贊 2 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章