Fiddler的基本使用
一、抓包
1、打开fidder,并使之处于抓包模式,一般自动处于该状态
2、打开要测试的系统(以下简称:OA)
3、操作:在OA中添加日报信息,并暂存
4、抓包结果:
二、模拟大量重复数据
1、意义:比如我想测试一下日报列表的翻页功能,一条一条的添加数据费时费力,直接抓包,然后多次回放请求(Replay),则可以达到添加多条重复数据的效果
2、操作:选中添加日报的post请求->点击Replay按钮,此时会重新生成一个请求,并且OA中会添加一条一样的数据,详情如下图所示。如果想要更多条数据,多次回放该请求即可
三、过滤规则
1、意义:目前我只想抓OA的数据包,所以为了避免其他数据包信息干扰,就需要用到过滤,即Filters筛选器。
2、操作:勾选Use Filters->在hosts区域选择“-No Zone Filter-”和“Show only the following Hosts”->在输入框中输入OA的域名->点击Actions按钮,选择Run Filterset now
四、修改请求数据
1、意义:绕过前端,突破表单限制,测试服务器端有没有进行限制。拿OA举例子:工时限制最长是8小时,用Fiddler检查一下服务器端是否有限制
2、检查前端是否有限制:很明显有限制,不过没有提示最大工时-_-||
3、开始检查服务器端有没有限制:
填写日报,工时设置为1
4、设置断点类型:请求前
5、点击暂存按钮,查看请求信息,第一个请求不是想要的,直接点击Run to Completion按钮,继续往下抓包
6、抓到了想要的数据包,如图1所示;选中该请求后,点击Inspectors->点击Raw->修改工时(formData.mrgOaReport.hours)为2->点击Run to Completion,如图2所示
图1
图2
7、查看草稿列表中的日报时间,工时被成功改成了2
8、按照上述方法,在修改界面提交时,设置请求前断点,然后把工时2改成9,修改成功。说明服务器端并未对工时做限制
9、也可以直接在Composer中修改工时,相当于接口测试
操作:直接把暂存日报的请求拉到Composer中->修改Request Body中的日报时间为9->点击Execute执行按钮->查看草稿列表中是否存在该日报
10、注意:涉及到支付金额类的功能,一定要在服务器端做校验。因为前端的校验太脆弱,容易被攻破。且修改方案可以让开发不要在数据包中添加价格和数量等敏感值。
五、修改响应数据
1、意义:想要测试对于一些异常情况,前端页面的容错能力。例如:后端传过来一段很长的文本想展示在文本框内,前端是如何处理的。拿OA中公告举例:标题字符输入过长,查看是否显示正常
2、操作:跟修改请求数据类似,具体步骤如下
3、fiddler设置断点:响应后(After Responses)
4、OA发送请求,以下为正常响应数据
5、等服务器返回响应后,拦截请求。修改响应数据后再发送请求
6、查看OA前端显示,图1为拦截时公告详情界面显示,图2为修改数据并发送响应后的数据显示
图1
图2
六、代理浏览器被修改的解决办法:
抓包过程中总是中断,且提示:The system proxy was changed,原因是本地v*n服务在开启。即使关闭也没用,必须卸载!
七、模拟弱网测试(针对手机app)
1、用ipconfig命令查看本机ip
2、设置手机与电脑同一局域网
3、设置fiddler的Options下的HTTPS和Connections
4、安装https的证书:在手机(以IOS为例子)浏览器中输入电脑ip和端口号,比如:192.168.7.12:8888,点击第二个链接添加证书
5、去通用->关于本机->证书信任设置下,启用对该证书的信任
6、确认Fiddler处于抓包模式,打开手机app进行操作
7、模拟弱网设置:点击Rules->PerFormance->勾选Simulate Modem Speeds,再次访问app内页面,会发现网速比之前慢了
8、修改网络延迟时间:点击Rules->Customize Rules,在弹出的脚本编辑器中查找m_SimulateModem关键字,以便修改代码
9、添加如下函数和修改如下代码:(此处参考了网上大神的做法)
// 新增的随机整数函数,模拟不稳定的网速(注意添加的位置)
static function randInt(min, max) {
return Math.round(Math.random()*(max-min)+min);
}
// 修改过的代码
if (m_SimulateModem) {
// Delay sends by 300ms per KB uploaded.
// oSession["request-trickle-delay"] = "300";
oSession["request-trickle-delay"] = ""+randInt(1,2000);
// Delay receives by 150ms per KB downloaded.
// oSession["response-trickle-delay"] = "150";
oSession["response-trickle-delay"] = ""+randInt(1,2000);
}
10、设置完并保存后,需要重新开启模拟调制解调器(即勾选Simulate Modem Speeds)来启用新的设置
11、再次访问手机app,即可达到模拟不稳定的网速的效果。