前面我给大家讲解了Charles的IOS和Android抓包教程,今天给大家带来Charles中常用的:Breakpoints、Map Local、Throttle
在Charles使用的过程中经常用到Breakpoints(断点)功能,Charles默认是关闭该功能的,需要手动启动。解释一下Breakpoints:一个请求打了断点,在用户触发这个请求的时候,用户既可以修改发送request请求的URL及请求的数据,也可以修改接口response返回的数据。
什么测试场景使用断点呢?
-
客户端发送的请求参数有问题,我们可以通过打断点修改客户端的参数发给服务端,这样服务端就能给正常的返回数据给客户端,不会影响后续的测试
-
服务端返回的数据有问题,我们通过打断点修改服务端返回的数据,已达到不影响后续测试的目的
-
测试极限长度,例如点赞人数超过999,前端就显示999+,测试的时候你要造超过999个赞会很麻烦,这个时候打断点就排上了用场
-
如果是前端做的分页功能,超过20条就产生分页,测试的时候造数据是很痛苦的,那么就可以通过修改服务端的数据,按照格式复制粘贴造数据,这样就可以达到测试分页的目的
-
测试数据的各种状态,可以通过修改服务端的数据进行测试,例如:已读、未读
-
接口健壮性测试,将返回的某些参数返回的数据清空,看前端的兼容,是否会出现崩溃现象
下面我们举个详情的例子:
如图:
A) 点击“Cancel”表示:断点取消,不做任何修改即原数据发送请求(即使你修改了请求内容也只发送原始数据)
B) 点击“Abort”表示:中止,不会给服务端发送该请求
C) 点击“Execute”表示:发送修改后的请求(只要你愿意,你也可以不修改请求内容)
Response:
-
我们选择一个接口(ist?categoryCode=&partId=1)右键,点击Breakpoints,这就打上的断点,我们每次访问这个接口的时候,都触发断点
-
开启Breakpoints后,Charles控制面板上六边形就会变红
,再次点击
就会关闭Breakpoints
-
我们如果选择上图的“speak”右键点击Breakpoints,那么它下面所有的接口都会触发断点(接口intro、接口list?part=1、接口ist?categoryCode=&partId=1)
-
我们也可以通过Breakpoint settings(Proxy-->BreakPoint Settings设置每个断点的Request和Response
-
取消勾选Enable Breakpoints,我们在触发接口时,不出出现断点的现象
-
勾选了Request,我们就可以在触发该接口的时候,修改请求request的数据
-
勾选了Response,我们就可以在触发该接口的时候,修改返回Response的数据
-
-
触发断点的接口
request:
-
我们可以修改request请求接口的请求类型(post、get)
-
我们可以修改request请求接口URL
-
我们可以修改request请求HTTP协议的版本
-
我们可以修改request请求接口的参数categoryCode和partId
-
我们可以修改request请求的header数据
A) 点击“Cancel”表示:断点取消,不做任何修改即原数据展示(即使你修改了返回的内容也只展示原始返回的数据)
B) 点击“Abort”表示:中止,APP端是不会展示服务端返回的任何数据的
C) 点击“Execute”表示:显示修改后的数据(只要你愿意,你也可以不修改原始返回数据)
-
我们可以修改Response返回的数据
-
-
删除Breakpoints
我们在使用玩Breakpoints后,不再希望该接口再走断点了,这个时候,我们就需要删除断点,以下的方法都可以让该接口不再走断点
-
我们选择刚刚打断点的接口(ist?categoryCode=&partId=1)右键,再次点击Breakpoints,这样就删除了该接口的断点(推荐使用)
-
我们可以在Breakpoint settings(Proxy-->BreakPoint Settings)点击取消勾选Enable Breakpoints,这样Breakpoints服务就关闭了。(这个方法有个缺点:别的接口启用断点后,这个接口断点也启用了,所以不建议使用该方法)
-
我们可以在Breakpoint settings(Proxy-->BreakPoint Settings)在断点接口list中取消勾选该接口,这样该接口的断点就不会启用。(建议使用)
-
Map Local的功能是接口的返回值读取本地文件的内容,而不是接口返回的数据。可能有人就会提出疑问了,Breakpoints(断点)不是也可以修改接口的返回数据么?
解释一下这两个的不同点:
-
Breakpoints是接口实时返回的数据,你通过修改实时返回的数据已到达测试目的;
-
Map Local永远读取的是本地文件的内容,只要本地的文件内容不变,前端展示的数据就不变。
-
除非对数据有要求,要不然都可以使用Map Local代替Breakpoints的Response。例如:未支付的订单进行支付,这个时候只能使用Breakpoints获取新订单,因为同一个订单是不允许重复支付的。
-
我们选择一个接口(ist?categoryCode=&partId=1)右键,点击“Save Reponse”,将接口返回的数据保存在本地。
-
可以修改本地保存的文件内容已达到测试目的
-
我们选择一个接口(ist?categoryCode=&partId=1)右键,点击Map Local
-
加载修改后的本地文件,这样前端请求该接口后,前端展示的内容都是本地文件中的内容
关闭Map Local
-
-
删除本地保存Response的文件
-
上传Local path里面的文件路劲,但是不能全部删除,要不然保存不了
-
重新启动Charles
-
在测试的过程中,很多时候都需要考虑弱网络的情况,这个时候就可以使用throttle settings进行模拟弱网的情况
-
点击Proxy->Throttle Setting
-
可以在Throttle preset上选择自带设置的配置,可以选择不同的网络情况进行模拟,也可以手工修改网络情况进行测试
-
开启"Only for selected hosts"后,可以针对单独的host进行限速,不会影响其他的host。例如:针对www.baidu.com进行限速,不会影响到www.sina.com的速度
-
不开启"Only for selected hosts",那么手机上所有的host(应用)都会受到限速
-
介绍下上面面板
-
Bandwidth(Kbps)—>带宽(千比特/秒)、download—>下载速度、upload—>上传速度
-
Utilisation(%)—>可用率(%):带宽可用率,大部分modern是100%
-
Round-trip latency (ms)—>往返延迟(毫秒)
-
MTU (bytes)—>最大传输单位(字节)
-
Reliability (%)—>可靠性(%):丢包情况
-
Stability (%)—>稳定性(%):网络抖动情况
-
Unstable quality range (%)—>不稳定质量范围(%):此处设置主要针对于Stability中设置中的范围
-
-
开启Throttle preset后,Charles控制面板上小乌龟就会变成绿色
-
再次点击
就会关闭Throttle preset
-
顺便介绍一下,IOS手机开发者工具就携带有各种网络模拟。IOS手机开启开发者权限,需要拿着手机去找IOS开发小哥哥连一下Xcode即可。
后面会继续推出Charles更多的图文教程,希望大家能够喜欢,谢谢!