一款超级给力的弱网测试神器—Qnet(附视频)
一、APP弱网测试背景
App在使用的过程中,难免会遇到不同的弱网络环境,像在公车上、在地铁、地下车库等。在这种情况下,手机常常会出现网络抖动、上行或下行超时,导致APP应用中出现丢包延迟,从而影响用户体验。
作为软件测试工程师,我们要在app上线前做一定弱网络环境场景模拟,查看app在弱网络环境下是否存在某些未知的问题。
例如:
- 客户端卡死、崩溃等异常
- 核心功能导致软件不能正常运行
- 存在有损害用户利益或被用户额外获利的机会
- 是否有合理的重连机制,避免每次重连都返回到登录界面
- 是否有合理的重发机制,对丢包延时情况有对应的合理提示
二、弱网测试要点
一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外, 弱信号的Wifi通常也会被纳入到弱网测试场景中。
三、APP弱网络环境传统解决方案
目前在测试移动设备上进行弱网络专项测试的方案主要有两种:
方案一:通过手机设备连接到PC上进行弱网络测试,比如Fiddler,Charles、NET-Simulator等。
基本思路是在PC电脑上装一个Fiddler网络抓包工具,然后再将手机设备的网络代理到PC电脑上,通过在电脑上的Fiddler设置延时来进行弱网络模拟。
方案二:在专有服务器上构建弱网络WiFi。
用移动设备连接该WiFi进行弱网络测试,相关的技术方案有Facebook的ATC和腾讯的WeTest-WiFi。
以上方案缺点:
(1)需要额外的PC或者服务器,弱网环境构建成本高;
(2)需要安装、部署额外的工具,并且弱网络环境需要在PC上或者Web上进行配置,使用成本高;
(3)弱网络环境功能并不完善,比如Fiddler不支持丢包、抖动等弱网环境。
鉴于以上方案存在的缺点,Qnet这款工具可以完美解决,并且界面操作也非常简单,易于上手。
四、Qnet弱网测试工具简介
官网地址: https://wetest.qq.com/product/qnet ,支持android和ios。
- 不借助PC或者服务器,只需在任一智能手机上安装QNET App,即可搭建一套完善的弱网环境
- 覆盖国内所有省份、海外47个主流的国家地区的运营商实时网络数据,提供真实的地铁、电梯等20+弱网络场景
- 提供了网络数据包抓包功能,便于进行网络数据问题的分析
- 支持adb命令驱动,实现自动化弱网络测试,降低成本、提高效率
注意:安装包获取,需要在官网申请试用,填写问卷,经审核后会发送安装包到邮箱。
五、Qnet工具界面介绍
1、【登录】页面
- 按钮登录
点击Qnet App,进入登录界面,勾选同意协议并点击【QQ登录】按钮,授权QQ或TIM账号进行登录。若本地未安装QQ或TIM,会弹出二维码页面扫码登录。
- 自动登录
登录之后会记录此次登录,7天内不需重复登录。
- 注销登录
【设置】页面-注销, 进行退出登录或切换登录用户,回到登录页面。
2、【工作台】页面
- 点击选择应用
点击可选:单一应用/全部应用
- 弱网场景模板选择
这里默认系统常用网络测试模板,也可通过右上角[新增]自己设置弱网模板、或【网络场景】中“添加”系统推荐的弱网测试模板
- [启动]按钮
- 更新弱网测试模板
点击模板的右侧文字,进入编辑页面更新模板
- 删除弱网测试模板
向左滑动要删除的模板,出现[删除]按钮,点击可删除
- 搜索弱网测试模板
当添加的模板较多,可通过上方搜索框输入模板名称关键字,完成搜索
3、【网络场景】页面
3.1 系统推荐模板
【网络场景】页是系统已配置好的模板,供参考选择使用,覆盖常用的极差网络、正常网络模板,断线重连、wifi与4G切换、100%丢包模板等等。
点击【添加】,【保存】后,添加已有模板到【工作台】以供选择。
3.2 新增弱网模板
若系统提供的模板,不满足弱网场景模拟需求,可新增弱网模板。主要包含两种:【场景模板】和【自定义模板】。
入口1:【工作台】页和【网络场景】页右上角的【新增】按钮。
入口2:【网络场景】页中每一项推荐模板的右下角【添加】按钮,点击按钮后【编辑】-【新增】。
- 【场景模板】/【场景模板】(全球):
提供了网络选择(服务器所处地区、客户端所处地区、运营商类型、网络类型)、场景选择(电梯、地铁、高铁、地下停车场、wifi穿墙、视频网络标准、语音网络标准等),最后填写对应的【模板描述】,【保存】按钮。
- 【自定义模板】:
提供了多种弱网参数:
网络带宽 (单位kbps,限制当前网络上下行最大的带宽容量)
网络延时 (单位ms,当前网络的上下行延时约等于设置值)
延时抖动 (对每个数据包以设置的概率进行抖动选择,延时范围在0~抖动值之间随机产生)
随机丢包 (按设置的概率对每个包进行丢包)
周期弱网 (按照放行时长、弱网时长设置交替切换,根据弱网类型进行弱网)
协议控制 (支持对不同协议的弱网控制,协议类型包括TCP\UDP\ICMP\DNS)
弱网ip (可针对IP进行弱网控制,多个IP以|分割)
可以根据自己公司产品的测试需要,组合填写对应的参数,最后点击【保存】。
4、【设置】页面
- 用户注销
注销账号,则退回到登录页面;使用Qnet需重新登录 - 测试报告
勾选后再启动弱网时生效,结束弱网后会保存(iOS暂不支持),保存文件包括.csv和.html; - 网络抓包
勾选后再启动弱网时生效,结束弱网后保存到对应文件路径 - 控制悬浮窗
测试过程中方便用户进行Qnet暂停继续、切换模板等快捷操作。开启则显示控制悬浮窗,关闭则不显示 - 信息悬浮窗
显示弱网测试参数的悬浮窗。开启则显示,关闭则测试过程中不显示 - 使用文档
点击可下载Qnet工具官方使用PDF文档 - 常见问题
会跳转到官方收集的常见问题页面 - 用户协议/隐私政策/儿童隐私保护声明
点击可查看对应文档的详细内容 - 删除账号
删除账号,则清除当前账号下所有的模板和数据
六、Qnet工具使用步骤
准备工作:QQ登录后,在[设置]页,勾选测试报告、网络抓包、控制悬浮窗、信息悬浮窗
第1步:选择待测应用
【工作台页】点击[点击选择应用],选择测试APP:例如柠檬班app。
第2步:选择弱网测试模板
将需要测试的网络场景模板添加到工作台,点击选择自己所需的网络场景模板。
第3步:启动
第一次开启时会弹出请求【悬浮窗权限】,勾选允许悬浮窗功能。再次点击启动,第一次运行时会弹出请求【VPN权限】,点击【确定】则QNET启动成功
第4步:操作待测APP,关注软件情况
启动后,QNET会自动拉起待测APP,页面会显示控制悬浮窗,信息悬浮窗(若设置页面未勾选则不显示)。
第5步:停止
测试完毕,双击[控制悬浮窗]Qnet图标,回到Qnet[工作台]页面,点击停止。
停止后,测试报告可以去/storage/emulated/0/qnet_save/report中获取查看。
停止后,网络抓包可以去/storage/emulated/0/qnet_save/pcap中获取查看。
七、Adb实现弱网自动化
前提: 确保本地电脑已安装好adb运行环境(自行百度)。
功能介绍: ADB指令执行功能可以自动化的启用弱网,帮助用户可以接入进行自动化测试弱网。功能包括adb命令行发送指令启动弱网、停止弱网、更新弱网模板等功能。
参数传递方式:
--[类型] [key] [value]
--ei:表示参数值为int
--es:表示参数值为string
详细参数可以参照官网。
7.1 启动弱网
首先执行命令启动QNET进程:
adb shell am start {--[类型] [key] [value]} com.tencent.qnet/.Component.AdbStartActivity
--ei:表示参数值为int --es:表示参数值为string
使用示例:针对柠檬班app进行上下行100ms延时抓包,并显示信息悬浮窗
adb shell am start --es "package_name" "com.lemontestv2.lemonban" --ei "out_delay" 100 --ei "in_delay" 100 --ei "dump_pcap" 1 --ei "info_float_window" 1 com.tencent.qnet/.Component.AdbStartActivity
7.2 结束弱网
结束弱网并退出进程:
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
写在最后
以上就是关于Qnet这款弱网测试神器的详细说明,官网也有对应的操作文档,工作中有需要进行APP弱网测试的,可以好好利用起来了!为了便于大家更好地进行实操,我也同步录制了一套弱网测试视频(有需要的可以来领取),不仅包含Qnet这款工具的操作,也给大家覆盖讲到了Fiddler、Charles等工具弱网场景模拟的操作;还包括项目实操、结果分析。视频内容见下图:
一款超级给力的弱网测试神器—Qnet(附视频)的更多相关文章
- APP弱网测试工具(QNET)
QNET介绍官网链接:https://wetest.qq.com/product/qnet 目前在测试移动设备上进行弱网络专项测试的方案主要有两种: 通过Android设备连接到PC上进行弱网络测试, ...
- charles 设置弱网测试
Charles简介:Charles支持抓去http.https协议的请求,不支持socket. 然后charles会自动配置IE浏览器和工具的代理设置,所以说打开工具直接就已经是抓包状态了. 这里打开 ...
- 07- 移动端app弱网测试与fiddle弱网测试
从下面几个点了解弱网测试: 什么样的网络属于弱网. 低于2g速率的时候都属于弱网,也可以将3g划分为弱网,一般WiFi不纳入弱网范畴. 为什么要进行弱网测试 ①按照移动特定,各种网络连接协议不同,导致 ...
- 弱网测试Android
弱网测试一般是指模拟在网络环境比较差的情况下,检测APP是否有异常,如崩溃,数据收发出现丢包的情况 一.首先需要控制网络,有两种方式其一使用网络损伤仪进行,其二采用软件方式.硬件采购费用太贵,因此使用 ...
- APP弱网测试
APP弱网测试 App弱网测试方法,常用工具有使用fiddler进行网络模拟,也可以使用Network Emulator Toolkit控制模拟网络,相对来说Network Emulator To ...
- Android弱网测试中关于网络检测的一些借鉴方法
Android 平台下提供了一个android.net.ConnectivityManager类来监控当前的网络状态包括wifi.gprs.UMTS等.可以判断当前用户网络到底是WIFI还是移动网络, ...
- 弱网测试—Network-Emulator-Toolkit工具
参考别人网址:http://blog.csdn.net/no1mwb/article/details/53638681 弱网测试,属于健壮性测试:怎么样去做弱网测试呢? 一.安装弱网测试工具-Netw ...
- 弱网测试--使用fiddler进行弱网测试
弱网测试原理以及方法(一) 一.为什么要进行弱网测试? 按照移动特性,各种网络连接协议不同,导致通信的信号不同,速率也不同,影响应用的加载时间.可用性.稳定性 二.什么样的网络属于弱网? 低于2g速率 ...
- Charles弱网测试
当前APP网络环境比较复杂,网络制式有2G.3G.4G网络,还有越来越多的公共Wi-Fi.不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响.另外,当前app使用场景多变,如进地铁.上公 ...
- Xcode弱网测试工具
Network Link Conditioner Network Link Conditioner工具是Mac下提供的一个弱网测试工具. 安装Network Link Conditioner Xcod ...
随机推荐
- oeasy教您玩转vim - 84 - # 命令command
命令 command 回忆 关于 函数function 可以调用别的函数 :call append(0,"oeasy o2z o3z") 还可以执行表达式 :call exec ...
- .NET Core 3.x 基于AspectCore实现AOP,实现事务、缓存拦截器
最近想给我的框架加一种功能,就是比如给一个方法加一个事务的特性Attribute,那这个方法就会启用事务处理.给一个方法加一个缓存特性,那这个方法就会进行缓存.这个也是网上说的面向切面编程AOP. A ...
- python私有变量和方法
python私有变量和方法 1,私有变量和私有方法无法被继承 2,私有变量和私有方法可以放在普通方法(实例方法)里面被子类继承 class A: def __init__(self, name): s ...
- 安卓开发(java.lang.NullPointerException: Attempt to invoke virtual method ‘void android.view.View...)空指针异常
无论是初学者还是做开发很久的人都会遇到这个问题,那就是空指针异常: 遇到这种情况我们首先不要惊慌,一般这个问题都不是很大的问题,只需要我们 静下心来慢慢的查找,下面分成几步来带你查找问题: 1:首先是 ...
- Fiddler的工作原理
Fiddler是位于客户端和服务器端中间的HTTP代理,是目前最常用的http抓包工具之一 . Fiddler抓取客户端和服务器之间的所有HTTP请求后进行分析.断点.过滤等操作. Fiddler可以 ...
- 【C】Re03
一.变量 变量存储了两个东西: 1.内存空间地址 2.内存空间存放的值 本质是给内存地址起了一个别名,允许我们通过别名对内存进行访问 void variable01() { int a = 100; ...
- python性能分析器:line_profiler
代码: import line_profiler import sys def test(): for i in range(0, 10): print( i**2 ) print("End ...
- If Messi doesn't understand how to respect others, then he also doesn't deserve to receive respect from others.
If Messi doesn't understand how to respect others, if he doesn't understand the spirit of honoring c ...
- 【转载】 tensorflow中的batch_norm以及tf.control_dependencies和tf.GraphKeys.UPDATE_OPS的探究
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明.本文链接:https://blog.csdn.net/huitailangyz/article/ ...
- PyTorch显存机制分析
参考: ======================================================= 在pytorch中有几个关于显存的关键词: 在pytorch中显存为缓存和变量分 ...