资源预览内容
第1页 / 共6页
第2页 / 共6页
第3页 / 共6页
第4页 / 共6页
第5页 / 共6页
第6页 / 共6页
亲,该文档总共6页全部预览完了,如果喜欢就下载吧!
资源描述
本教程由 大漠飞鹰 编写 ,帖子名称为“ LRIP 欺骗设置和有效性验证” ,相应的地址是:http:/bbs.51testing.com/viewthread.php?tid=74333&pid=506471&page=1&extra=page%3D3#pid506471 我结合自己这几天实际测试中遇到的疑惑和相应的解决的方法对其进行举例说明和增加一些自己的补充,供大家相互学习。颜色说明:补充内容为青绿色背景Ip 欺骗的相关帖子关于 IP 欺骗的问题:http:/blog.51testing.com/?49159/action_viewspace_itemid_859.html设置 IP 欺骗的原因1、 当某个 IP 的访问过于频繁,或者访问量过大是,服务器会拒绝访问请求,这时候通过 IP 欺骗可以增加访问频率和访问量,以达到压力测试的效果。2、 某些服务器配置了负载均衡,使用同一个 IP 不能测出系统的实际性能。LR 中的IP 欺骗通过调用不同的 IP,可很大程度上的模拟实际使用中多 IP 访问和并测试服务器均衡处理的能力。多 IP 地址的设置IP 地址的设置较为简单,可直接在本地连接中增加 IP,或者通过 LR 自带的工具“IP wizard”设置,当然也可以使用其它软件设置。唯一需要注意的就是注意设置的 IP 的有效性。“选项”中的 IP 设置 使用“选项”对话框中的“常规”选项卡,可以选择 IP 地址模式。只有在专家模式下操作 Controller 时,才显示该选项卡。 要设置常规专家模式设置,请执行下列操作: 1. 选择“工具”“选项”。将显示“选项”对话框。选择“常规”选项卡。 2. 选择多个 IP 地址模式。需要注意的是,这里的 IP 地址模式和运行时设置中的常规设置的不同,会导致 IP 欺骗失效。具体该怎么设置,这里就不讲了,很简单的东西。启用 IP 欺骗从 Controller 启用多个 IP 地址 定义多个 IP 地址后,您就可以设置一个选项,让 Controller 使用该功能。 要从 Controller 启用多个 IP 地址,请执行下列操作: 在 Controller“设计”视图中,选择“场景”“启用 IP 欺骗器”。 注意:必须在连接到负载生成器之前选择该选项。如果是在连接了负载生成器之后启动的,只需将负载生成器断开(disconnect)再连接(connect)就可以了。IP 欺骗功能验证IP 欺骗已经设置了,但是是不是有效呢?通常会有这样的疑问。下面我们通过一个简单的试验,来验证是否有效。在脚本的 Action()部分增加如下代码:(根据自己的测试要求,我将这段代码放在 init中)char * ip=lr_get_vuser_ip();if(ip)lr_vuser_status_message(The ip address is %s,ip);elselr_vuser_status_message(IP spoofing disabled);然后通过控制器设置并运行场景,在 Controllers Vuser 窗口中,大家可以看到如下的结果:IP 欺骗测试实例(补充内容)测试的起源是由帖子“winsocket 协议下的 IP 欺骗报 9017 错误”开始的,帖子的地址是:http:/bbs.51testing.com/thread-74283-1-1.html问题:测试 winsocket 通信协议的两个服务器 通讯服务器和应用服务器 一个应用服务器可以和指定的(IP:Port)多个通讯服务器相连接 应用服务器之间会自动重连 创建连接的间隔是 10 秒 通讯服务器建立侦听 等待应用服务器的连接测试方法:使用 IP 欺骗进行测试 首先使用 ip wizard 在本机建立了几个 IP 重启机器后 IP生效 然后将之前录制的通讯服务器脚本中的 port 相应更改保存 使用 vuser genorator 回放成功 然后将脚本加入到场景 总是提示 vuser_init.c(25): Error : Timeout expired while trying to accept connection. Error code : 9017 但有时可以连接成功 于是在 vuser_init 中添加 lrs_set_accept_timeout()函数 在 lrs_create_socket 中忽略 9017 错误 但还是出现连接不成功 报 9017 的错误 请各位指教初始化代码如下:vuser_init()lrs_startup(257);lrs_set_accept_timeout(180,0);while(lrs_create_socket(socket0, TCP, LocalHost=5500, Backlog=5, LrsLastArg)=9017);lrs_accept_connection(socket0, socket1);return(0);问题解决过程(有待优化)过程一:基于是录制的 winsocket 之间的通信,我将其中一个脚本在场景中运行,其 generator 为192.168.0.120,然后将另一个脚本在 Virtual user generator 中执行,执行的日志可能会出现下面这种情况: Virtual User Script startedStarting action vuser_init.vuser_init.c(14): lrs_startup(257)vuser_init.c(17): lrs_set_accept_timeout(240, 0)vuser_init.c(20): lrs_create_socket(socket1, TCP, .)vuser_init.c(20): Error : socket1 - Address already in use. Error code : 10048.我认为是和之前场景中运行的 socket 有相同的 handler 所致,于是在 vuser_init()中开始先创建并关闭几个 socket,改变 socket handler 的值。编译执行,不再出现 10048 错误。于是将脚本加入到场景中并使用 generator 为 192.168.0.121 执行此脚本。这时,192.168.0.120 和192.168.0.121 会出现同时运行的情况,尽管不是每次执行场景时都是这样。int handler1=0; vuser_init()lrs_startup(257); lrs_create_socket(socket0, TCP, LocalHost=6100, Backlog=5, LrsLastArg);lrs_close_socket(socket0);lrs_set_accept_timeout(240,0);lrs_create_socket(socket1, TCP, LocalHost=5200, Backlog=5, LrsLastArg);while(lrs_accept_connection(socket1, socket2)=9017);/获得 socket1 的 handler 并输出handler1 = lrs_get_socket_handler(socket1); lr_output_message(socket1 handler is %d, handler1); return 0;过程二:过程一让我的关注点放在了 port 上,于是我在运行的命令行窗口使用 netstat a 命令来监视场景创建监听的情况。我在手动场景中只加入一个脚本,然后将通讯服务器的端口全部设置为 5200,即 lrs_create_socket(socket1, TCP, LocalHost=5200, Backlog=5, LrsLastArg); quantity 设置为 2 ,load generator 使用 localhost(这里我没有指定 quantity 中运行脚本的 generator,统一使用 localhost,当然 192.168.0.120 和 192.168.0.121 是在generator 列表里的) 。然后执行场景,监视端口的侦听和连接情况,连接都成功了。过程二后的疑问:如果创建的是目标场景,vuser 数量从 1 到 3 ,加载 2 时会提示 10048 Address already in use 的错误提示,关于目标场景中如何使用继续学习中收获:当遇到 9017 的错误提示时,尽管设置了 lrs_set_accept_timeout(*,0);也不一定成功,还存在其他的因素导致连接失败,根据自己测试的系统的具体情况找出可能的原因。共同学习,交流
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号