zoukankan      html  css  js  c++  java
  • 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 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:UsersAdministratorAppDataLocalTemp  就是你运行脚本的目录,找到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)HPLoadRunnerdatmdrv.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添加多次。

     

     

     本地的IP设置不能为“自动获取”,必须指定一个静态IP

    如果本地是动态获取IP,在运行IP Wizard时会弹出提示:

    The IP wizard does not support DHCP-enabled network cards.

    Your cards are either DHCP-enabled or configured with invalid settings.

    Please contact your system administrator.

    此时只需要将IP地址改成静态IP地址就可以了

    2、 所添加的IP只能是局域网内的网段

    只能添加192段,127段,10段IP地址

    3、添加IP地址

    第一步:

    运行 LoadRunner- Tools-IP Wizard

    第二步:

    选择create new setting,点击“下一步”

    此时出现的页面是让输入服务器的IP地址,通过该地址更新路由表。

    客户端计算机上添加新的IP地址后,服务器需要将该地址添加到路由表,以便能够识别返回到客户端的路由。如果服务器和客户端具有相同的子网掩码、IP 类和网络,则不需要修改服务器的路由表。

    注意: 如果客户端和服务器计算机之间有一个路由器,则服务器需要识别经过该

    路由器的路径。确保将以下路由添加到服务器路由表:从 Web 服务器到路由器

    的路由,以及从路由器到负载生成器计算机上的所有 IP 地址的路由。

    第三步:

    在输入服务器地址的页面中不输入任何地址,直接点击“下一步”

    进入IP添加页面

    点击“add”进行添加

    第四步:

    在from ip 输入框中输入起始ip,在Number to输入框中输入ip地址的位数

    输入正确的子网掩码

    选中“verify that new ip addresses are not already used”

    点击“ok”,此时IP Wizard会自动按照设置生成IP地址,并且将已经占用的IP列出

    第五步:

    确认可用IP地址列表内容后,点击“ok”

    此时IP Wizard提示需要重新启动计算机,点击“save as”保存IP列表

    点击“ok”,重新启动计算机

    第六步:

    计算机重新启动后,在运行行中输入:CMD,在DOS命令窗口中输入:IPCONFIG,此时便可看到虚拟的IP地址均已经被启用


    4、在loadrunner中使用虚拟IP

    第一步:

    打开controller,在controller中,选择 Scenario-〉Enable IP Spoofer,此项设置允许使用IP欺骗。

    第二步:

    设计场景:

    有两种方案来设计场景

    1、 本地使用虚拟IP设计场景(不带负载生成器使用localhost进行)

    在设置该类场景时,在场景中添加一个录制好的脚本,该脚本中添加如下代码便可看到虚拟用户在使用哪个IP地址进行消息发送,该场景是通过线程方式进行。

    char * ip;

    ip=lr_get_vuser_ip();

    if (ip)

    {

       lr_vuser_status_message("The ip address is %s",ip);

    }

    else

    lr_vuser_status_message("IP spoofing disabled");

        在controller中执行该脚本时,查看虚拟用户运行状态,便可看到当前虚拟用户使用的哪个IP地址发送消息

    2、 负载生成器使用虚拟IP设计场景

    在设置该类场景时,需要添加负载生成器,建立负载生成器时输入创建的虚拟IP,每个负载生成器为一个虚拟用户组,该场景是通过进程方式进行性能测试。

    如何添加负载生成器创建场景在这里就不多描述了。

    但需要注意,选中Tools下的Expert mode,启动专家模式

    再点击Tools下的options

    在Genearl选项卡中设置已线程方式或进程方式进行性能测试,这个选项一定要与当前场景的模式相匹配,也就是说使用本地虚拟IP测试时需要选中线程方式,使用负载生成器使用虚拟IP测试时需要选中进程方式

    5、使用虚拟IP测试完成后

    打开IP Wizard,释放所有虚拟IP。

    重新启动计算机


    注意:

    利用 ip wizard增加的ip地址,可以通过在cmd输入ipconfig /all命令进行察看ip,还可以在网上邻居—属性—本地连接—属性—internet协议(tcp/ip)的属性—高级—ip设置中察看ip地址,我们可以在这里添加ip地址,删除ip地址。其中这里的添加ip地址功能等于利用loadrunner中的ip wizard增加的ip地址。
    1、设置的虚拟ip地址与是否在自己网段内没有影响,如:自己的ip为:154.16.45.84,设置的10个虚拟ip:192.168.1.1.....192.168.1.10。
    2、最好是设置完ip后要重新启动机器,ping一下,在cmd中察看一下(config /all)。
    3、在controller中打开Scenario - Enable IP Spoofer,和Tools > Expert mode(这一项我不知道有什么用途,请高手指名)。
    4、一定要把程序中的LoadRunner Agent Process打开,要不然连接不上。Advanced settings 》 Agent configurations进行相应的设置。

    5、要虚拟很多IP的情况:在一台机上虚拟的IP跨网段的处理,可通过在服务器端添加路由来实现。

    例:
    【服务器】IP:192.168.0.1
    【测试机】IP:192.168.0.2
    测试机上添加的虚拟IP: 192.168.10.1~254

    那么在【服务器】端执行以下命令:
    route add 192.168.10.0 mask 255.255.255.0 192.168.0.2
    注:【格式: route add 虚拟IP网段号 mask 255.255.255.0 测试】

     

    contrl机上配置ip虚拟即可。负载机和服务器中间通过路由转发的话,会导致访问服务器还是原来的几个ip。

    那是因为不同ip的客户端经过路由时,会封装成一个IP跳包,在服务器端log日志中还是显示的是原来的ip

    建议客户端和服务器在内网做测试,或者中间接交换机进行ip欺骗。

     

    -------------------------

    误区2:

    IP欺骗是个老生长谈的问题,但是仍然有很多人没有搞清楚,甚至最近一些已经出版的LoaRunner图书上也没有解释清楚。

          这么简单的功能操作步骤哪里有误区呢,常见的下面需要2点:

          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添加多次。

           如果要想配置这个功能,则应该使用专家模式,详情可以参考《LoadRunner性能测试实战》4.3.5节。
    -本文出自天天软件测试社区(http://www.365testing.com/bbs/),原文地址:http://www.365testing.com/bbs/thread-32749-1-1.html

  • 相关阅读:
    C# BackgroundWorker使用总结
    C#如何优雅的结束一个线程
    C#线程中安全访问控件(重用委托,避免繁复的delegate,Invoke)总结
    C#异步方法调用(四大方法详解)
    C# Winform 跨线程更新UI控件常用方法汇总
    走进异步编程的世界
    走进异步编程的世界
    走进异步编程的世界
    Unity-Redis数据存储
    untiy
  • 原文地址:https://www.cnblogs.com/shengs/p/4467853.html
Copyright © 2011-2022 走看看