一、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(附视频)的更多相关文章

  1. APP弱网测试工具(QNET)

    QNET介绍官网链接:https://wetest.qq.com/product/qnet 目前在测试移动设备上进行弱网络专项测试的方案主要有两种: 通过Android设备连接到PC上进行弱网络测试, ...

  2. charles 设置弱网测试

    Charles简介:Charles支持抓去http.https协议的请求,不支持socket. 然后charles会自动配置IE浏览器和工具的代理设置,所以说打开工具直接就已经是抓包状态了. 这里打开 ...

  3. 07- 移动端app弱网测试与fiddle弱网测试

    从下面几个点了解弱网测试: 什么样的网络属于弱网. 低于2g速率的时候都属于弱网,也可以将3g划分为弱网,一般WiFi不纳入弱网范畴. 为什么要进行弱网测试 ①按照移动特定,各种网络连接协议不同,导致 ...

  4. 弱网测试Android

    弱网测试一般是指模拟在网络环境比较差的情况下,检测APP是否有异常,如崩溃,数据收发出现丢包的情况 一.首先需要控制网络,有两种方式其一使用网络损伤仪进行,其二采用软件方式.硬件采购费用太贵,因此使用 ...

  5. APP弱网测试

    APP弱网测试   App弱网测试方法,常用工具有使用fiddler进行网络模拟,也可以使用Network Emulator Toolkit控制模拟网络,相对来说Network Emulator To ...

  6. Android弱网测试中关于网络检测的一些借鉴方法

    Android 平台下提供了一个android.net.ConnectivityManager类来监控当前的网络状态包括wifi.gprs.UMTS等.可以判断当前用户网络到底是WIFI还是移动网络, ...

  7. 弱网测试—Network-Emulator-Toolkit工具

    参考别人网址:http://blog.csdn.net/no1mwb/article/details/53638681 弱网测试,属于健壮性测试:怎么样去做弱网测试呢? 一.安装弱网测试工具-Netw ...

  8. 弱网测试--使用fiddler进行弱网测试

    弱网测试原理以及方法(一) 一.为什么要进行弱网测试? 按照移动特性,各种网络连接协议不同,导致通信的信号不同,速率也不同,影响应用的加载时间.可用性.稳定性 二.什么样的网络属于弱网? 低于2g速率 ...

  9. Charles弱网测试

    当前APP网络环境比较复杂,网络制式有2G.3G.4G网络,还有越来越多的公共Wi-Fi.不同的网络环境和网络制式的差异,都会对用户使用app造成一定影响.另外,当前app使用场景多变,如进地铁.上公 ...

  10. Xcode弱网测试工具

    Network Link Conditioner Network Link Conditioner工具是Mac下提供的一个弱网测试工具. 安装Network Link Conditioner Xcod ...

随机推荐

  1. Django+forms+html

    在Django中,Form类通常通过继承django.forms.Form或django.forms.ModelForm来定义.当你定义一个表单类时,通常使用Form或ModelForm类,并使用各种 ...

  2. 在Django中,多数据操作,你可以编写测试来查询另一个数据库服务器中的数据,并将结果导入当前Django项目的数据库表中

    在Django中,你可以编写测试来查询另一个数据库服务器中的数据,并将结果导入当前Django项目的数据库表中.下面是一个简单的示例: 假设你有一个Django应用程序,名为myapp,并且你希望从另 ...

  3. 免费的壁纸API

    最近在给EasyDesktop增加背景的功能, 考虑自己在服务器上部署壁纸, 维护成本比较高, 就找了几个免费的壁纸接口, 体验还不错, 这里简单记录一下. 1.Bing壁纸API 地址是: http ...

  4. VBA:用代码操作代码

    Sub auto_open() Call runtimer '打开文档时自动运行 End Sub Sub runtimer() Application.OnTime Now + TimeValue(& ...

  5. php 后台执行进程

    一些业务需要长期在后台执行进程 下面用thinkphp5.1做演示 在command文件夹下建立进程 cd 到 lunar_php项目根目录 执行 php think hello 如果想后台执行 no ...

  6. 搭建lnmp环境-redis(第四步)

    1.下载epel仓库 (前面安装过了) yum install epel-release -y 2.下载redis数据库 yum install redis -y 3.启动redis服务 system ...

  7. BeanUtils.copyProperties无法复制list对象,替换为lambda表达式

    List<Setmeal> setmeals = setmealMapper.selectList(queryWrapper); List<SetmealVO>vo=new A ...

  8. hadoop 主机免密设置

    hadoop三台主机免密设置 文件权限 .ssh 700 id_rsa 600 id_rsa.pub 644 环境rhel8 需要三台主机 master slave1 slave2 配置三台主机同一网 ...

  9. 【Layui】15 日期时间选择器 Laydate

    文档地址: https://www.layui.com/demo/laydate.html [基本案例] 基本日期与国际日期 <fieldset class="layui-elem-f ...

  10. 【TypeScript】02 面向对象

    [联合类型] 联合类型(Union Types)可以通过管道(|)将变量设置多种类型,赋值时可以根据设置的类型来赋值. 注意:只能赋值指定的类型,如果赋值其它类型就会报错. var val:strin ...