当运行场景时,虚拟用户使用它们所在的 Load Generator 的固定的 IP 地址。同时每个
Load Generator 上运行大量的虚拟用户,这样就造成了大量的用户使用同一 IP 同时访问一个
网站的情况,这种情况和实际运行的情况不符,并且有一些网站会根据用户 IP 来分配资源,
这些网站会限制同一个 IP 的登陆,使用等等。为了更加真实的模拟实际情况,LoadRunner
允许运行的虚拟用户使用不同的 IP 访问统一网站,这种技术称为“IP 欺骗” 。
启用该选项后,场景中运行的虚拟用户将模拟从不同的 IP 地址发送请求。该选项非常
的有用。注意:IP Spoofer 在连接 Load Generators 之前启用。
要使用 IP 欺骗,各个 Load Generator 机器必须使用固定的 IP,不能使用动态 IP(即
DHCP)
使用 IP Spoofer 的步骤如下:
1. 使用 IP Wizard:在“开始”菜单程序中,找到 LoadRunner——Tools——IP Wizard,
运行它
注意:运行 IP Wizard 程序的机器必须使用固定的 IP,不能使用动态 IP.
第一次运行 IP Wizard 需要选择第一项“Create new settings”,如果以前运行过,可
以选择第二项“Load previous settings from file”,选择保存好的文件;第三项用于使用
IP 欺骗进行测试完成后,释放 IP 的过程(因为该机会占用大量的 IP 资源,可能会导
致其他机器没有 IP 可用的尴尬局面,使用该项,可以恢复到原来的状况) 。
这里选择第一项,“Next”,出现 IP Wizard 的第二个窗口`
这里输入 Web Server 的 IP 地址(这里输入应用程序所在的服务器的 IP 地址,IP Wizard 将会检查服务器路
由表是否需要更新,如果需要更新的话,将会产生相应的脚本帮助你来更新服务器路由表,如果服务器和客户端在同一
个网段,这个 IP 可以不填。),然后 Next,出现向导的第三个窗口。
从“From IP”文本框中输入要使用 IP 范围的第一个 IP 值,然后在“Numbers to Add”
输入一个数字,表示 IP 范围的值;假如第一个 IP 为 192.168.6.100,范围大小为 100,
那么 IP Wizard 将会使用 192.168.6.N(100<=N<200) ,当然这个范围内已经使用的 IP
地址除外,否则会引起 IP 冲突。 “Submask”采用默认情况即可,取决于使用的那种类
型的网络 IP,一般局域网内采用 Class C 即可。
然后“OK” ,然后 IP Wizard 开始检查该范围内没有使用的 IP,并把没有使用的 IP
添加到本机的 IP 窗口中。到最后一个窗口,直接点“Finish” ,
使用 IP Wizard 后,最后重新启动机器。
2. 在 Controller 的场景中,启用 IP Spoofer 即可。启用方法很简单(Scenario-->Enable IP Spoofer)。
在使用过程中要注意的几个方面:
1、本地的 IP 不能设置为“自动获取”,必须指定一个静态 IP;
原因:如果设置为“自动获取”,在运行 IP Wizard 时会弹出错误提示;
提示信息为:IP 向导不支持启用 DHCP 的网卡。您的卡启用了 DHCP 或者配置了无效设置。请与系统管理员联
系。
2、添加 IP 欺骗使用的 IP 后,会有提示框提示保存 IP 列表,确定,取消等按钮;建议保存 IP 列表后再确定完成;
原因:保存 IP 列表后,下次使用时,可以直接导入 IP 列表;也可以直接修改保存的 IP 列表文件,再导入;
3、添加 IP 欺骗,和释放 IP,都要重启机器后才会生效;
原因:重启后,网络配置才会生效;
4、在 controller 中使用 ip 欺骗的注意事项;
(1)勾选“场景”->“启用 IP 欺骗器”;
(2)勾选“工具”->“专家模式”;
(3)“工具”->“选项”->“常规”->“多个 IP 地址模式”;
这个选项一定要与当前场景的模式相匹配,也就是说使用本地虚拟 IP 测试时需要选中线程方式,使用负载生成器使用
虚拟 IP 测试时需要选中进程方式
5、设置 IP 欺骗后,验证其是否生效;
有两种方法查看:
(1)可用如下代码段来查看:
char *ip = lr_get_vuser_ip();
if (ip)
lr_output_message("The IP address is %s", ip);
else
lr_output_message("IP spoofing disabled");
注意:如果把上面这一段加入代码中间,第一句要修改下:
char *ip;(这句放在函数起始部位,对变量 ip 进行声明)
ip=lr_get_vuser_ip();(这个和后面的 if-else 语句一起放在要输出的地方)
另:这个在 generator 中是不生效的,所以在回放代码时看到的都是"IP spoofing disabled"。在 contorller 中设置了启用
IP 欺骗,日志中就可以看到;
(2)controller 的运行页,运行完场景后,在通过、失败的虚拟用户处,右键可显示 VUser 日志;
弹出的提示框头几行就有显示当前使用的 IP;
6、使用 IP 欺骗过程中,会有出现下述问题:
启用 IP 欺骗后,运行 1 个虚拟用户的场景都失败;不启用 IP 欺骗后,运行场景通过;
原因:查看失败的虚拟用户,使用的 IP 地址(查看方法可使用第 5 点中的方法),在服务器端通过 ping 等命令查看网络
是否互通;如果服务器 ping 不通虚拟 IP,说明网络设置有问题,检查网络设置。
2
设置 IP 欺骗的原因:(这部分我还是不能很好的理解)
1、当某个 IP 的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过 IP 欺骗可以增加访问频
率和访问量,以达压力测试的效果
2、某些服务器配置了负载均衡,使用同一个 IP 不能测出系统的实际性能。LR 中的 IP 欺骗通过调用不同的 IP,可
很大程度上的模拟实际使用中多 IP 访问和并测试服务器均衡处理的能力。
多个 IP 地址的设置:
可直接在本地连接中增加 IP,或者通过 LR 自带的工具“IP wizard”设置,当然也可以使用其它软件设置,唯
一需要注意的就是注意设置的 IP 的有效性,我在此次测试中使用了 IP wizard,具体操作如下:
(首先,需要注意的是 load Generator 机器必须使用固定的 IP,不能使用动态 IP)
1、开始——程序——lr——tools——IP wizard,此时会打开如下窗口:
三个单选按钮:选择第一个,新增 ip;选择第二个从保存好的文件中获得 ip;选择第三个表示释放所有
添加的 ip(我选择了第一个)
2、next 到如下窗口:
此时需要输入,你将要测试的 web 服务器的 ip,必须正确输入,否则即便是新生成的 ip(负载机器)联接
通过,run 时依然出错。
3、填写好后,next 到如下窗口:
该窗口中可以添加或者删除 ip
4、Add 到以下窗口:
关键是在 from ip 栏输入要产生虚拟 ip 的起始值、需要的虚拟 ip 数量
5、点击 OK
成功添加了所需要的 ip,如果有 ip 已经被占用,会有提示
6、finish:
上面会显示本次增加的 ip,选择 save as 可以将本次增加的 ip 保存成文件,下次直接使用就可以,OK 即可
7、重器计算机才可生效。重启后可以用 ping 和 ipconfig 来检查新添加的 ip 是否成功
在 controller 中的应用:
1、在 conreoller 中,Scenario——选 Enable ip spoofer(允许使用 ip 欺骗)
2、conreoller 中,tools——选 expert mode
3、tools——options——General 中关于线程还是进程的设置必须和 run-time settings 里面的一致,否则 IP 欺骗失
效
4、点 Generators——Add 所有新添加的 IP——每个都去 connect 到 Ready 状态
如果连接成功,任务栏上会有如图显示:
5、添加脚本,Vusers 数量,设置场景,run
注:1、联接新添加 IP 之前,必须开启 lr Agent Process,否则失败
2、如果 run 时候报网络方面错,可以查看防火墙之类的东西,比如关闭卡巴斯基等,此次测试就是因为卡巴
斯基的缘故 run 全部 failed