一款超级给力的弱网测试神器—Qnet(上)

一、APP 弱网测试背景

App 在使用的过程中,难免会遇到不同的弱网络环境,像在公车上、在地铁、地下车库等。在这种情况下,手机常常会出现网络抖动、上行或下行超时,导致 APP 应用中出现丢包延迟,从而影响用户体验。

作为软件测试工程师,我们要在 app 上线前做一定弱网络环境场景模拟,查看 app 在弱网络环境下是否存在某些未知的问题。
例如:

  • 客户端卡死、崩溃等异常
  • 核心功能导致软件不能正常运行
  • 存在有损害用户利益或被用户额外获利的机会
  • 是否有合理的重连机制,避免每次重连都返回到登录界面
  • 是否有合理的重发机制,对丢包延时情况有对应的合理提示

二、APP 弱网络环境传统解决方案

方案一: 通过手机设备连接到 PC 上进行弱网络测试,比如 Fiddler,Charles 等

基本思路是在 PC 上装一个 Fiddler 网络抓包工具,然后再将手机设备的网络代理到 PC 上,通过在 PC 上的 Fiddler 在设置延时来进行弱网络模拟。

方案二: 在专有服务器上构建弱网络 Wi-Fi

用移动设备连接该 Wi-Fi 进行弱网络测试,相关的技术方案有 Facebook 的 ATC 和腾讯的 WeTest-WiFi。

以上方案缺点:

(1)需要额外的 PC 或者服务器,弱网环境构建成本高;

(2)需要安装、部署额外的工具,并且弱网络环境需要在 PC 上或者 Web 上进行配置,使用成本高;

(3)弱网络环境功能并不完善,比如 Fiddler 不支持丢包、抖动等弱网环境。

鉴于以上方案存在的缺点,Qnet 这款工具可以完美解决,并且界面操作也非常简单,易于上手。

三、Qnet 弱网测试工具简介

不借助 PC 或者服务器,只需在任一智能手机上安装 QNET App,即可搭建一套完善的弱网环境
覆盖国内所有省份、海外 47 个主流的国家地区的运营商实时网络数据,提供真实的地铁、电梯等 20+

弱网络场景

提供了网络数据包抓包功能,便于进行网络数据问题的分析

支持 adb 命令驱动,实现自动化弱网络测试,降低成本、提高效率

四、Qnet 工具界面介绍

1. 【登录】页面

点击 Qnet App,进入登录界面,勾选同意协议并点击【QQ 登录】按钮,授权 QQ 账号完成登录。

一款超级给力的弱网测试神器—Qnet(上)

2. 【工作台】页面

点击选择应用

点击可选单一应用,全部应用

弱网场景模板选择

提供系统常用网络测试模板,可通过【网络场景】或右上角[新增]添加其他需要的弱网测试模板。

[启动]按钮

一款超级给力的弱网测试神器—Qnet(上)

更新弱网测试模板

点击模板的右侧文字,进入编辑页面支持更新

删除弱网测试模板

向左滑动要删除的模板,出现[删除]按钮,点击可删除

搜索弱网测试模板

当添加的模板较多,可通过上方[搜索框]输入模板名称关键字,完成搜索
一款超级给力的弱网测试神器—Qnet(上)

3. 【网络场景】页面

3.1【网络场景】页提供系统推荐的模板,覆盖常用的极差网络、正常网络模板,断线重连、wifi 与 4G 切换、100% 丢包模板等等。可以点击【添加】,通过编辑-【保存】后,添加已有模板到【工作台】以供选择测试。

一款超级给力的弱网测试神器—Qnet(上)

3.2【工作台】页和【网络场景】页右上角【新增】按钮,用户可选择参数增加模板。主要包含两种:【场景模板】和【自定义模板】。

【场景模板】/【场景模板】(全球):

提供了网络选择(服务器所处地区、客户端所处地区、运营商类型、网络类型)、场景选择(电梯、地铁、高铁、地下停车场、wifi 穿墙、视频网络标准、语音网络标准等),最后填写对应的【模板描述】,【保存】按钮。
一款超级给力的弱网测试神器—Qnet(上)

【自定义模板】:

提供了多种弱网参数:网络带宽 (单位 kbps,限制当前网络上下行最大的带宽容量)

网络延时 (单位 ms,当前网络的上下行延时约等于设置值)

延时抖动 (对每个数据包以设置的概率进行抖动选择,延时范围在 0~抖动值之间随机产生)

随机丢包 (按设置的概率对每个包进行丢包)

周期弱网 (按照放行时长、弱网时长设置交替切换,根据弱网类型进行弱网)

协议控制 (支持对不同协议的弱网控制,协议类型包括 TCP\UDP\ICMP\DNS)

弱网 ip (可针对 IP 进行弱网控制,多个 IP 以 | 分割)

可以根据自己公司产品的测试需要,组合填写对应的参数,最后点击【保存】。
一款超级给力的弱网测试神器—Qnet(上)

  1. 【设置】页面

用户注销

注销账号,则退回到登录页面;使用 Qnet 需重新登录

测试报告

勾选后再启动弱网时生效,结束弱网后会保存(iOS 暂不支持),保存文件包括。csv 和.html;

网络抓包

勾选后再启动弱网时生效,结束弱网后保存到对应文件路径

控制悬浮窗

测试过程中方便用户进行 Qnet 暂停继续、切换模板等快捷操作。开启则显示控制悬浮窗,关闭则不显示

信息悬浮窗

显示弱网测试参数的悬浮窗。开启则显示,关闭则测试过程中不显示

使用文档

点击可下载 Qnet 工具官方使用 PDF 文档

常见问题

会跳转到官方收集的常见问题页面

用户协议/隐私政策/儿童隐私保护声明

点击可查看对应文档的详细内容

删除账号

删除账号,则清除当前账号下所有的模板和数据
一款超级给力的弱网测试神器—Qnet(上)

五、Qnet 工具测试步骤

第 1 步:选择待测应用

QQ 登录后,在【工作台页】点击[点击选择应用],选择测试 APP:例如柠檬班 app。

一款超级给力的弱网测试神器—Qnet(上)

第 2 步:选择弱网测试模板

将需要测试的网络场景模板添加到工作台,点击选择网络场景,可支持模板编辑。比如当前测试选择[极差网络]。

一款超级给力的弱网测试神器—Qnet(上)

第 3 步:启动

第一次开启时会弹出请求【悬浮窗权限】,勾选允许悬浮窗功能;再次点击启动,第一次运行时会弹出请求【VPN 权限】,点击【确定】则 QNET 启动成功

在这里插入图片描述

第 4 步:操作待测 APP,关注软件情况

启动后,QNET 会自动拉起待测 APP,页面会显示控制悬浮窗,信息悬浮窗。

控制悬浮窗: 【QNet 图标】按钮双击后会回到 QNET 应用中(部分厂商手机可能不支持); 【暂停/继续】按钮点击后会切换到正常网络,继续后会回到当前弱网模板继续执行; 【扩展/收缩】按钮点击后会展示所有的模板,方便用户切换模板进行测试;

信息悬浮窗:

展示当前弱网类型、网络延时 ping 值、当前弱网生效状态和参数内容;
一款超级给力的弱网测试神器—Qnet(上)

第 5 步:停止

测试完毕,双击[控制悬浮窗]Qnet 图标,回到 Qnet【工作台】页面,点击停止。

设置页勾选[测试报告],停止后可手动获取

/storage/emulated/0/qnet_save/report 中报告数据查看。

一款超级给力的弱网测试神器—Qnet(上)

五、总结

以上仅从背景、到解决方案,到 Qnet 工具的各个功能界面做了详细介绍,关于 Qnet 工具的具体应用操作,咱们明天下篇文章~

参考文档:Qnet 官网文档

  【推荐自动化测试教程】:

【软件测试教程】从零开始学自动化测试(2024实用版)自动化测试2024最全面教程!!!_哔哩哔哩_bilibili

如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一键三连哦!

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】

### QNET 技术文档与实现原理 QNET 是一种测试工具,其主要功能是模拟络环境以进行性能测试和问题分析。以下是对 QNET 技术文档及其实现原理的详细探讨: #### 1. QNET 技术文档 QNET 的技术文档可以参考官方文档或翻译资料[^3]。根据已知信息,QNET 系统的技术文档通常包括以下几个方面: - **高可用性**:QNET 提供了高可用性的测试环境,确保在各种复杂场景下能够稳定运行。 - **系统架构**:QNET 的系统架构设计支持多平台兼容性,能够在智能手机上独立完成环境的搭建。 - **功能模块**:QNET 提供了多种功能模块,例如模拟、数据包抓取等[^1]。 如果需要更深入的技术文档,建议直接访问 QNX 官方站或相关社区资源,这些资源通常包含详细的 API 文档和技术白皮书。 #### 2. QNET 实现原理 QNET 的实现原理基于以下关键技术点: - **模拟**:通过调整络参数(如延迟、丢包率、带宽限制等),QNET 可以在本地设备上模拟不同的络条件[^4]。这种模拟通常依赖于底层络协议栈的拦截和修改。 - **数据包捕获**:QNET 提供了络数据包抓取功能,这通常通过内核级别的络驱动程序实现,能够捕获并解析传输层和应用层的数据包[^2]。 - **跨平台支持**:QNET 的实现依赖于跨平台开发框架,使其能够在不同操作系统(如 Android 和 iOS)上运行。 以下是模拟的一个简单实现示例,展示如何通过 Python 模拟络延迟和丢包: ```python import random import time def simulate_network_delay(min_delay=50, max_delay=500): delay = random.uniform(min_delay / 1000, max_delay / 1000) time.sleep(delay) def simulate_packet_loss(loss_rate=0.1): if random.random() < loss_rate: raise Exception("Packet lost") def send_data(data): simulate_network_delay() simulate_packet_loss() print(f"Data sent: {data}") # 测试代码 try: send_data("Hello World") except Exception as e: print(e) ``` 此代码片段展示了如何通过随机延迟和丢包率来模拟环境。 #### 3. 相关资源 除了官方文档外,还可以参考以下资源以获取更多关于 QNET 的技术信息: - **开源项目**:GitHub 上可能有类似的开源项目,提供测试工具的实现代码。 - **社区论坛**:QNX 社区和其他技术论坛中可能存在关于 QNET 的讨论和案例分享。 - **技术博客**:许多开发者会在博客中分享他们使用 QNET 的经验以及遇到的问题解决方法。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员二黑

V:testerhei

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值