大家好,我是谭叔。
在日常工作中,测试软件在弱网、超时、异常等场景下的运行状况,是保证系统稳定性的重要环节。
比如:
- 在一些特殊的测试场景中,需要请求后端服务超时,以查看软件是否能正常工作
- 有些场景,如熔断测试,需要后端服务返回某特定值,而这个特定值在异常情况下才会有
今天,谭叔跟大家分享我在测试电脑软件(程序)时,模拟弱网、超时环境,抓包电脑软件进行异常测试的方法。
方法一:修改hosts
将本机hosts修改为一个无效的ip地址,以模拟超时。比如,将网关设置一个无效ip,构造访问网关不通的场景。
优点:操作简单
缺点:仅能验证无法请求某服务的场景,无法验证某服务不可用的场景
方法二:停服
顾名思义,将测试环境的后端服务停掉。
优点:可以模拟真实的超时场景
缺点:会造成服务不可用,影响其他测试 or 开发的工作
方法三:路由器限速
使用wifi路由器,在路由器后台设置网速。
优点:限制wifi速度,操作简单
缺点:
1、无网卡的台式机无法使用
2、路由器限速最低0.01Mbps/s,即1.25kb/s,无法达到Byte级别,当请求体很小时,仍旧无法模拟超时
方法三:使用NetLimiter4
NetLimiter4是一款简单实用、方便易用的网络流量监控软件,可以限制程序的上下行网速。
NetLimiter4安装包(破解版):http://www.testtalking.com/#/data/data
优点:
1、多版本可用(winXP、win7、win10),操作简单、使用方便
2、可以限制电脑软件的上传和下载速度,且能达到Byte/s级别
缺点:
网速限制全局有效,当该软件有其他ip地址+端口的请求时,虽然没有勾选,但会将该请求同时限制,无法模拟单个接口的超时场景。
方法五(推荐):Proxifier + Fiddler
Proxifer是一个socks5客户端,可以让不支持通过代理服务器工作的程序通过HTTPS或SOCKS代理。
Proxifier安装包:http://www.testtalking.com/#/data/data
Fiddler是一款代理抓包软件(测试人应该都知道)。
01 实现原理
一般的电脑软件不能设置代理,因此只用Fiddler检测不到数据,需要配合Proxifier使用。Proxifier负责把所有的请求发给Fiddler,再在Fiddler上分析客户端请求,并利用Fiddler一些强大的功能,如打断点,篡改请求或者响应内容等来模拟我们需要的测试场景。
02 配置代理
如图,配置Proxifier的代理服务器和代理规则
使用方法
配置好Proxifier后,启动Fiddler,则可使用Fiddler,对电脑软件(程序)进行抓包,测试各种异常流程。
不会用Fiddler?请移步:Fiddler抓包指南
①打断点调试,模拟超时
请求前断点(before response): bpu testgw.xx.com
响应后断点(after requests): bpafter testgw.xx.com
比如:命令行输入bpu testgw.xx.com
即,程序请求testgw.xx.com
时,请求不会发到服务端,被截留在Fiddler里,可以修改,再发起请求。
比如:命令行输入bpuafter testgw.xx.com
即,请求可以达到服务端,拿到响应,但我们可以使用Fiddler篡改响应,将错误的超时响应返回给程序,以观察程序对该异常的处理情况。
{"code":"GW40000","msg":"服务超时,请稍后再试~(GW40000)","sourceMsg":"服务超时,请稍后再试~","data":null,"success":false,"breaker":false}
②模拟弱网
如果要限制网速来模拟弱网,可以不打断点,通过修改fiddler配置的方式实现。
搜索m_SimulateModem
根据需求自行修改:上传1KB需要300ms,转化一下:1Kb/0.3s = 10/3=3.3(KB/s)
修改后,点击保存,并勾选Simulate Modem Speeds
生效。
注意事项
- Proxifier默认占用8888端口,如果Proxifier不可用,在配置正确的情况下,需检查端口是否被占用。
- 使用NetLimiter4限速后,关闭NetLimiter4时,记得去勾选,否则会影响程序正常使用。
一如既往,做个总结
方案是死的,人是活的,工作时多动脑筋,多想想解决之道,在合适的场景用合适的工具,才能高效率的达成你的测试目的。