LoaRunner性能测试系统学习教程:场景设计实践之IP欺骗技术(2)
上期我们讲到LoaRunner性能测试场景设计实践之集合点,这期我们讲的是LoaRunner性能测试场景设计实践之IP欺骗技术。
IP欺骗技术
在场景运行时,每台负载发生器计算机上的Vuser都使用其计算机的固定IP地址。这样就不能模拟用户使用不同计算机的真实情况。
应用程序服务器和网络设备用IP地址标识客户端。应用程序服务器经常缓存来自同一台计算机的客户端信息。网络路由器则尝试缓存源信息和目标信息来优化吞吐量。如果许多用户使用同一个IP地址,服务器和路由器都将尝试进行优化处理。由于同一台负载发生器计算机上的Vuser具有相同的IP地址,因此服务器和路由器优化不反映真实情况。
使用LoadRunner的多IP地址功能,可以用许多IP地址来标识在一台计算机上运行的多个Vuser。这样,服务器和路由器将认为Vuser来自不同的计算机,因此测试环境更加真实。
当然LoadRunner在设计的时候就想到这个问题了,这就是IP欺骗技术。但是在使用IP欺骗时需要注意IP Spoofer要在连接Load Generator之前启用,并且各负载发生器计算机必须使用固定IP,不能使用动态IP(即DHCP)。
IP Spoofer设置
1.点击“开始”菜单→“所有程序
”→Mercury LoadRunner→Tools→IP Wizard,弹出IP Wizard配置对话框,如图所示。
2.在这里选择一种方式进行设置,如果以前保存过这类文件,可以选择“Load Previous settings from(从文件中加载以前的设置)”,然后选择该文件即可。
3.也可以选择
“Create new settings(创建一个新的设置)”。
4.点击“下一步”按钮。如果计算机中安装了多个网卡,那么要选择用于这些IP地址的网卡,然后点击“下一步”按钮,在弹出的对话框中设置服务器的IP地址,如图所示。
5.点击“下一步”按钮将看到该计算机的IP地址列表。点击“添加”按钮可以定义地址范围,如图所示。
6.在该对话框中选择计算机的IP地址类型。指定要创建的IP地址数。选中“Verify that new IP addresses are not already(验证新的IP地址未被使用)”复选框,以指示IP向导对新地址进行检查,LoadRunner会自动检查新添加的IP在同一网段中是否已被使用,如果IP已经被使用,那么这些IP将不会被添加进来,只有未被使用的IP地址才会被添加进来,点击“确定”按钮继续。
7.完成之后,IP欺骗向导会显示出IP变更统计的对话框,如图所示。
在该对话框中,可以点击按钮将本次添加的IP保存成“.ips”文件,下次再使用时就可以直接加载此文件。
完成之后,系统会提示重启计算机,重启计算机后,设置的IP欺骗有效,重启后为了确认虚拟IP是否都生效,可以在“开始”→“运行”,输入“cmd”,在弹出的命令窗口输入“ipconfig/all”,就能看到生效的所有IP。
还可以使用lr_get_vuser_ip函数来得到当前虚拟用户的IP地址,在脚本中加入下面的代码即可。
char*ip;ip = lr_get_vuser_ip();if(ip)lr_output_message("The IP address is %s",ip);elselr_output_message("IP spoofing disabled");
场景运行时,如果虚拟IP生效的话,打开每个Vuser的日志,就可以看见他们各自的IP。
而在实际使用过程中,经常发现,客户端和服务器之间存在一个路由器,出现这种情况怎么办呢?其实在使用IP欺骗技术时,服务器需要将这些地址添加到路由表中,以识别返回客户端的路由。如果服务器和客户端具有相同的子网掩码、IP类和网络,那么不需要修改服务器的路由表。如果客户端和服务器之间有路由器,那么必须手动让服务器将这些地址添加到路由表中,这样服务器才能识别经过该路由器的路径。
在设置完成IP欺骗的最后一步,不要重启计算机,此时在临时文件夹Temp里生成两个文件,一个是用于UNIX操作系统的unix_routing.sh文件,一个是用于Windows操作系统的nt_routing.bat文件。两个文件的内容如下:
nt_routing.bat文件:
REM This is a bat file to add IP addresses to the routing table of a server
REM Replace [CLIENT_IP] with the IP of this machine (Load Generator) that the server already recognizes
REM This script should be executed on the server machine
route ADD 192.168.14.22 MASK 255.255.255.255 [CLIENT_IP] METRIC 1
route ADD 192.168.14.23 MASK 255.255.255.255 [CLIENT_IP] METRIC 1
route ADD 192.168.14.25 MASK 255.255.255.255 [CLIENT_IP] METRIC 1
unix_routing.sh文件:
# Bourne shell script to add IP addresses to the routing table of a server
# To run replace [CLIENT_IP] with the IP of this machine (Load Generator) that the server already recognizes
# Then chmod +x unix_routing.sh
# and finally execute this script on the server
#!/bin/sh
route add 192.168.14.22 [CLIENT_IP] 255.255.255.0
route add 192.168.14.23 [CLIENT_IP] 255.255.255.0
route add 192.168.14.25 [CLIENT_IP] 255.255.255.0
要更新服务器路由表,必须对这两个文件进行一定的修改。
1.将[CLIENT_IP]用LoadRunner机器的IP地址替换。假设LoadRunner机器的IP地址为192.168.14.26。
2.修改的文件必须在服务器上运行该文件
Windows操作系统使用nt_routing.bat文件
UNIX操作系统使用unix_routing.sh文件。
修改后的两个文件内容如下:
nt_routing.bat文件:
REM This is a bat file to add IP addresses to the routing table of a server
REM Replace [CLIENT_IP] with the IP of this machine (Load Generator) that the server already recognizes
REM This script should be executed on the server machine
route ADD 192.168.14.22 MASK 255.255.255.255 192.168.14.25 METRIC 1
route ADD 192.168.14.23 MASK 255.255.255.255 192.168.14.25 METRIC 1
route ADD 192.168.14.25 MASK 255.255.255.255 192.168.14.25 METRIC 1
unix_routing.sh文件:
# Bourne shell script to add IP addresses to the routing table of a server
# To run replace [CLIENT_IP] with the IP of this machine (Load Generator) that the server already recognizes
# Then chmod +x unix_routing.sh
# and finally execute this script on the server
#!/bin/sh
route add 192.168.14.22 192.168.14.25 255.255.255.0
route add 192.168.14.23 192.168.14.25 255.255.255.0
route add 192.168.14.25 192.168.14.25 255.255.255.0
到这里跨网段IP欺骗技术已经完成,重启计算机,IP欺骗将生效。
Controller中启动IP Spoofer
设置好IP Spoofer后,必须在
Controller中启动IP Spoofer
选择Scenario→Enable IP Spoofer
启动IP Spoofer策略,如图所示。
当启动IP Spoofer后,在Run选项卡的右下角会看到IP Spoofer的标记,如图所示。
启动多IP地址模式后,可以在专家模式中对多IP地址进行全局设置。首先,选择Tools→Expert Mode来启动专家模式。接下来选择Tools→Options→General选项卡,来设置多IP地址模式分配IP地址的情况,如图所示。
可以选择按进程或线程分配IP地址,按线程分配会导致场景中存在更多的IP地址范围。
选择Scenario→Load Generators,设置Vuser生成器,将虚拟IP地址添加进去,并连通(点击Connect按钮,每个IP状态由Down变为Ready),如图所示。
当连接成功后,Vuser生成器会在工具栏中显示,如图所示。
在使用完成之后,一定要记得释放IP地址,在IP Wizard设置首页,如图所示。选择Restore original set项,进行IP地址释放,重启计算机即可