• 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)协议控制

      支持对不同协议的弱网控制,协议类型包括TCPUDPICMPDNS;

    (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/

     

  • 相关阅读:
    MySQL学习之——锁(行锁、表锁、页锁、乐观锁、悲观锁等)
    MySQL 行锁 表锁机制
    数据库中悲观锁和乐观锁
    NYOJ 116 士兵杀敌(二)【线段树 单点更新】
    java模拟而一个电话本操作
    Protostuff具体解释
    Java之enum
    muduo::Connector、TcpClient分析
    Android性能优化之中的一个 布局优化
    linux c 网络编程:用域名获取IP地址或者用IP获取域名 网络地址转换成整型 主机字符顺序与网络字节顺序的转换
  • 原文地址:https://www.cnblogs.com/zhuxr/p/14181948.html
Copyright © 2020-2023  润新知