QNET手机弱网测试
一、产品介绍
1、背景
为什么要进行网络测试?
(1)验证应用/游戏在不同网络场景下表现是否符合预期,会不会触发未知的系统bug;
(2)提高不同网络场景下的用户体验;
(3)测试公用组件/SDK在不同网络状态下的稳定性。
目前在测试移动设备上进行弱网络专项测试的方案主要有两种:
(1)通过Android设备连接到PC上进行弱网络测试,比如Fiddler,Charles,NET-Simulator等。基本思路是在PC上装一个Fiddler网络抓包工具,然后再将Android设备的网络代理到PC上,通过在PC上的 Fiddler在设置延时来进行弱网络模拟。
(2)在专有服务器上构建弱网络Wi-Fi,移动设备连接该Wi-Fi进行弱网络测试,相关的技术方案有 Facebook的ATC和腾讯的WeTest-WiFi。
以上两种方法都能够实现移动设备的弱网专项测试,也已经是比较成熟的方案,但都存在以下几点缺点:
(1)需要额外的PC或者服务器,弱网环境构建成本高;
(2)需要安装、部署额外的工具,并且弱网络环境需要在PC上或者Web上进行配置,使用成本高;
(3)弱网络环境功能并不完善,比如Fiddler不支持丢包、抖动等弱网环境。
2、QNET介绍
QNET网络测试工具能够不借助PC或者服务器,搭建一套完善的弱网环境,进行弱网络模拟测试,只需在任一智能手机上安装QNET网络测试工具,即完成弱网络环境搭建工作,接下来根据需要选择不同场 景进行测试即可;除此之外,还提供了网络数据包抓包功能,便于进行网络数据问题的分析。
二、工具使用介绍
1、登录与注销
(1)按钮登录
点击应用图标启动APP后,第一次打开会进入到登录界面:
点击【QQ登录】按钮,如果本地已安装QQ或者TIM,会直接拉起应用进行登录确认,如果没有会弹出二维码页面扫码登录。
(2)自动登录
登录之后会记录此次登录,之后七天内登录不用再进行登录确认。
(3)注销登录
登录进入APP功能页面后,如果要退出登录或者切换登录用户,下方切换到【设置】切页,点击【注销】按钮即注销登录,回到登录页面:
2、弱网模板的增删改查
(1)新增弱网模板
增加弱网模板的入口有两个,第一个入口在【工作台】切页和【网络场景】切页右上角的【新增】按钮,由用户选择参数增加模板;第二个入口在【网络场景】切页中每一项推荐模板的右下角【添加】按 钮,这里提供系统推荐的模板,点击按钮后【编辑】-【新增】:
点击入口按钮后,会跳转到【模板编辑】页面,设置一个对应的【模板名称】,选择【模板类型】,会弹出两种可供选择的类型,【场景模板】和【自定义模板】。 【场景模板】:提供了网络选择(客户端所处地区、服务器所处地区、运营商类型、网络类型)、场景 选择(电梯、地铁、高铁、视频网络标准、语音网络标准等),最后填写对应的【模板描述】,点击页 面右上角【保存】按钮。
【自定义模板】:提供了多种弱网参数,可以根据测试需要,组合填写对应的参数,最后点击右上角 【保存】。关于参数的详细介绍参见下节【弱网功能介绍】。
(2)删除弱网模板
在【工作台】切页,向左滑动要删除的模板,出现【删除】按钮,点击按钮进行删除:
(3)更新弱网模板
在【工作台】切页上,点击要更新模板的右侧文字,进入编辑页面更新模板
(4)查找弱网模板
在【工作台】切页上,在【搜索框】中输入模板名称关键字,会在下面排列出搜索结果:
3、弱网功能的开启与关闭
(1)开启弱网功能
在【工作台】切页,选择【启动栏】左侧,选择【全部应用】或者一个应用;接着选择一个模板;最后 点击【启动】按钮开启弱网:
第一次开启时会弹出请求【悬浮窗权限】,具体操作为弹出【悬浮窗权限管理】-【QNET】,勾选允许 悬浮窗功能即可(不同系统页面可能有差异,下图只做参考):
悬浮窗权限打开后再次点击启动,第一次运行时会弹出请求【VPN权限】,点击【确定】后QNET启动 成功:
(2)关闭弱网功能
测试完成后,回到【QNET】-【工作台】切页,点击【停止】按钮关闭弱网功能:
(3)辅助功能
在【设置】切页中包含了三个辅助功能:
①网络抓包:勾选后再启动弱网时生效,结束弱网后保存到对应文件路径;
②控制悬浮窗:包含三个按钮,第一个【QNet图标】按钮双击后会回到QNET应用中(部分厂商手机可 能不支持);第二个【暂停/继续】按钮点击后会切换到正常网络,继续后会回到当前弱网模板继续执 行;第三个【扩展/收缩】按钮点击后会展示所有的模板,方便用户切换模板;
③信息悬浮窗:展示当前弱网类型、网络延时ping值、当前弱网生效状态和参数内容。
4、QA
(1)部分系统双击
【控制悬浮窗】-【QNet图标】按钮不会回到QNET应用中? 权限问题,需要打开【QET】应用权限中的后台弹出界面权限。
三、弱网功能详细介绍
1、自定义模板参数介绍
(1)网络模板
单位kbps,限制当前网络上下行最大的带宽容量,例如针对腾讯视频设置1024kbps限速后,下载速度 只能达到128KB/s左右:
(2)网络延时
单位ms,当前网络的上下行延时约等于设置值,设置延时100ms、200ms、300ms切换的网络数据包 波形图:
(3)延时抖动
对每个数据包以设置的概率进行抖动选择,延时范围在0~抖动值之间随机产生:
(4)随机丢包
按设置的概率对每个包进行丢包:
(5)周期弱网
按照放行时长、弱网时长设置交替切换,根据弱网类型进行弱网。 【完全丢包】:处于弱网时长的数据包直接丢包,对应网络数据包到达时间波形图:
【Burst】:模拟路由或者底层硬件在判断当前网络连接不通时保存数据包,在网络通畅后爆发式的将 数据包推送出去,对应网络数据包到达时间波形图:
(6)协议控制
支持对不同协议的弱网控制,协议类型包括TCP\UDP\ICMP\DNS;
(7)IP控制
可以针对IP进行弱网控制,多个IP以|分割。
2、场景模板介绍
(1)网络选择
提供真实的省市间网络传递的数据参数、运营商数据、网络类型数据;
(2)场景选择
提供多个真实测量不同场景下的网络波形,以【场景模板】-【WIFI穿墙】为例,对应网络数据包到达时间波形图:
四、ADB指令执行介绍
1、介绍
ADB指令执行功能可以自动化的启用弱网,帮助用户可以接入进行自动化测试弱网。功能包括adb命令 行发送指令启动弱网、停止弱网、更新弱网模板等功能。
2、启动弱网
首先执行命令启动QNET进程: adb shell am start {--[类型] [key] [value]} com.tencent.qnet/.Component.AdbStartActivity
使用示例:针对微信进行UDP上行50ms延时抓包 adb shell am start --ei "dump_pcap" 1 --es "package_name" "com.tencent.mm" --ei "out_delay" 50 --ei "protocol" 2 com.tencent.qnet/.Component.AdbStartActivity
3、更新弱网模板
更新弱网参数: adb shell am broadcast -a "qnet.boradcast.drive" --include-stopped-packages {--[类型] [key] [value]} com.tencent.qnet
使用示例:更新参数进行TCP/UDP 100%丢包 adb shell am broadcast -a "qnet.boradcast.drive" --include-stopped-packages --es "command" "update" --ei "in_rate" 100 --ei "out_rate" 100 --ei "protocol" 3 com.tencent.qnet
4、结束弱网
结束弱网并退出进程: adb shell am broadcast -a "qnet.boradcast.drive" --include-stopped-packages {--[类型] [key] [value]} com.tencent.qnet
使用示例:结束弱网 adb shell am broadcast -a "qnet.boradcast.drive" --include-stopped-packages --es "command" "stop_service" com.tencent.qnet
5、参数传递方式
--[类型] [key] [value] --ei:表示参数值为int --es:表示参数值为string
6、详细参数列表
7、注意
QNET进程不能被清理,否则弱网会被关闭; 更新弱网参数是全量更新,参数中没有设置的参数会被直接设置为默认值。
官网:https://wetest.qq.com/product/qnet/