背景:
之前遇到一个Labs日常需求是对于不同IP地址访问有逻辑判断,例如湖南的IP可以访问,其他地域的IP地址无法访问应用。
难点:
在测试过程中访问应用时,本地地址无法改变,始终为同一地址。对于不同IP地址段的需求无法测试
解决方案一
使用Debug方式远程调试代码

思路:通过本地发起Http请求,连接daily机或开发机,设置断点。当请求到达断点处,修改IP地址信息,模拟任意的IP地址请求。处理结果看返回信息

 模拟IP测试的2种解决办法 [ 光影人像  东海陈光剑 的博客 ]
步骤一:使用Eclipse工具Debug方式,连接daily机\开发机
 模拟IP测试的2种解决办法 [ 光影人像  东海陈光剑 的博客 ]
 
步骤二:在开发代码中找到请求处理的java文件,设置断点
使用本地IP地址访问页面,发起请求,例如访问http://www.daily.taobao.net
步骤三:发起请求后,在断点处修改IP的参数值,修改值之后,继续完成Debug操作,查看返回情况
模拟IP测试的2种解决办法 [ 光影人像  东海陈光剑 的博客 ]
 
 
 
方案一优点:不需要测试脚本准备,快捷简便、灵活数据值可以随意修改。比较适合于项目日常时间紧张时,快速完成测试的数据准备。
方案一缺点:项目日常测试完成后,不便于后期的回归。每次回归需要手动执行
 ==================================================================================================
解决方案二
利用测试脚本测试,在脚本中修改请求的参数
思路:
测试脚本中,修改请求的ip地址参数
 模拟IP测试的2种解决办法 [ 光影人像  东海陈光剑 的博客 ]

 

操作:在测试脚本的请求中加入远程端地址信息

    public void setUp() throws Exception {

       HttpServletRequest  req  = new SimpleHttpServletRequest() ;

       setReferer( "http://www.taobao.com");

        setRemoteAddr("100.100.100.100");     /*设置客户端地址*/

       setParameter("taobao_nick", "tbtest1061");

       setSession("login", "true");

       setSession("_nk_", "tbtest1061");

       setParameter("method", "taobao.user.get");      

    }
方案二优点:完成脚本编写,方便项目日常完成后的回归工作。
方案二缺点:脚本准备花费时间长,不适合在项目和日常紧张时来完成