其他分享
首页 > 其他分享> > app弱网测试

app弱网测试

作者:互联网

目录

目录 

1. 引言 

2. 什么是弱网测试 

3. 测试用例 

4. 弱网测试工具 

4.1. charles 

4.2. QNET 

5. 环境安装 

5.1. 安装charles 

5.2. 安装QNET 

5.3. 安装模拟器 

5.4. 连接设备 

6. 使用charles 

6.1. 将电脑设置为代理服务器 

6.2. 查看电脑IP 

6.3. 手机设置电脑为代理 

6.4. HTTPS 

6.5. 设置SSL代理 

6.6. 电脑安装证书 

6.7. 手机安装证书 

6.8. charles模拟不同的网络环境 

6.9. 弱网配置参数 

6.9.1 Bandwidth(Kbps)—>带宽(千位/秒) 

6.9.2 Utilisation(%)—>可用率(%) 

6.9.3 Round-trip latency (ms)—>往返延迟(Ms) 

6.9.4 MTU (bytes)—>最大传输单位(字节) 

6.9.5 Reliability (%)—>可靠性(%) 

6.9.6 Stability (%)—>稳定性(%) 

6.9.7 Unstable quality range (%)—>不稳定质量范围(%) 

6.10. 常见网络场景 

7. 使用QNET 

7.1. 登录 

7.2. 选择要测试的APP 

7.3. 网络场景 

7.4. 悬浮窗 

7.5. 弱网参数 

7.6. 网络抓包 

8. 弱网测试常见问题 

8.1. 用户登录应用时下载初始化数据,下载过程中因网速太慢点击取消并重新登录,数据初始化完成后出现重复,造成数据不一致。 

8.2. 用户点击数据上传,数据上传过程中网络弱且不稳定,基于联网状态自动触发数据上传,导致出现数据重复写入,形成脏数据 

8.3. 在弱网环境下,用户输入用户名和密码点击登录,应用链接超时返回用户名和密码错误提示 

8.4. 在弱网环境下,用户输入用户名和密码后点击登录,登录过程中应用崩溃并且闪退 

8.5. 弱网络环境下,用户请求页面响应时间较长,等待的过程中,页面上的部分控件仍然可以操作,当用户点击控件时,出现应用闪退现象 

8.6. 在弱网环境下,用户第一次输入搜索关键字没有得到响应后,再次输入全新关键字并发送请求,等待搜索结果返回后,当前结果页被之前的关键字搜索结果刷新覆盖 

9. 常见问题 

9.1. charles过滤掉PC端请求 

9.2. QNET 

  1. 引言

在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/4G/5G/WiFi等多种手机网络连接方式。不同的协议、不同的制式、不同的速率,使移动应用运行的场景更加丰富。

目前移动端产品的用户所处的网络并非完全流畅的网络环境,移动端产品使用场景多变,如进地铁、上公交、进电梯等,使得弱网测试显得尤为重要。

考虑到各种场景的客户端展示及容错,能极大提升产品印象和用户体验。

  1. 什么是弱网测试

从测试角度来说,需要额外关注的场景远不止断网、网络故障等情况,对于弱网的数据定义,不同的应用所界定的含义是不一样且不清晰的,不仅要考虑各类型网络最低速率,还要结合业务场景和应用类型去划分。

按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网。除此之外,弱信号的WiFi通常也会被纳入到弱网测试场景中。

  1. 测试用例

 

  1. 弱网测试工具
    1. charles

Charles 是在PC端常用的网络封包截取工具,通过将自己设置成系统的网络访问代理服务器,使得所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

Charles的主要功能里包含了模拟慢速网络,可以用来模拟各种网络环境。

    1. QNET

腾讯WeTest开发平台推出了一款针对移动应用的弱网测试工具—QNET,解决了在Android设备上进行弱网络专项测试的痛点,QNET无需ROOT手机,无需连接数据线,以独立app的方式,为用户提供给快捷、可靠、功能完善的弱网络模拟服务。

另外QNET还有一个很好用的功能——TCP/UDP网络协议抓包,帮助开发和测试人员进行网络流量分析,而不需要ROOT手机,使用tcpdump进行抓包。

  1. 环境安装
  1. 安装charles

 

  1. 安装QNET

QNET是直接安装在手机上的apk,从官网下载安装即可,官网地址:WeTest腾讯质量开放平台 - 腾讯 WeTest-All Test in WeTest

 

  1. 安装模拟器

除了android自带的模拟器,还可以选择第三方模拟器,如mumu模拟器、夜神模拟器,这里以mumu模拟器为例。

安装完成后,在命令行界面输入adb connect 127.0.0.1:7555、adb devices,出现如下界面,说明模拟器连接成功

 

  1. 连接设备

连接设备的时候,可以选择android自带模拟器、mumu模拟器、真机。

这里以真机为例:

  1. 用USB数据线连接真机与电脑
  2. 打开真机的开发者选项(版本号连续点击7或5次开启)
  3. 打开USB调试开关
  4. 打开命令行界面,输入adb devices,出现真机设备编号,表示设备连接成功

  1. 使用charles
    1. 将电脑设置为代理服务器

打开Charles,进入Proxy>Proxys Settings,打开代理服务器,设置好端口号(一般为8888),勾选Enable transparent HTTP proxying

 

    1. 查看电脑IP

打开电脑命令行界面,输入ipconfig命令

 

    1. 手机设置电脑为代理

打开手机,进入 设置 >WLAN >当前连接的网络>高级>代理设置,将代理设置为手动,主机名是上一步查到的电脑IP,端口号是Charles设置的端口号(8888)

注:电脑与手机的网络需要在一个局域网里面。

 

    1. HTTPS

https是经过加密传输的,所以当手机的https数据包代理到电脑时电脑可以捕获到数据但是无法解析,能看到的只是请求地址,以及一些unknown的请求内容。我们想要看到有内容的请求,就需要安装证书和设置ssl代理了。

    1. 设置SSL代理

在Charles进入Proxy > SSL Proxying settings,在include下add一个空白的地址,点击OK后,生成一个*的地址,表示对所有的地址均设置SSL代理

 

    1. 电脑安装证书

进入Charles点击Help >SSL Proxying > Install Charles Root Certificate,在弹出框中完成证书的安装

 

    1. 手机安装证书

进入Charles点Help >SSL Proxying > Export Charles Root Certificate and Private Key…,在弹出的对话框中输入密码

然后通过任意方式将证书发送到手机上,在手机的设置>WLAN>高级设置>安装证书>找到证书>安装>输入提取密码>完成证书安装

 

 

 

 

    1. charles模拟不同的网络环境

进入Charles,点击Procy > Throttle Settings,可以模拟不同的网络环境

 

    1. 弱网配置参数

 

      1.  Bandwidth(Kbps)—>带宽(千位/秒)

download—>下载速度,指的是从网络上下载下来的速度

upload—>上传速度,指的是把数据上传到网络上的速度

      1.  Utilisation(%)—>可用率(%)

带宽可用率,大部分是100%。

      1.  Round-trip latency (ms)—>往返延迟(Ms)

延迟,就是网络请求发起时,延迟多

      1.  MTU (bytes)—>最大传输单位(字节) 

一般设置1500

      1.  Reliability (%)—>可靠性(%)

丢包

      1.  Stability (%)—>稳定性(%)

连接的可靠性,用于模拟网络不稳定

      1.  Unstable quality range (%)—>不稳定质量范围(%)

连接稳定性,用于模拟移动网络,移动网络连接一般不可靠。

      1.  举例
    1. 常见网络场景

 

  1. 使用QNET
    1. 登录

QNET支持手Q账号或者腾讯员工的TAPD账号登陆,如果使用QQ账号首次登陆,需要注册WeTest平台账号,即可成功登陆。

          

 

 

    1. 选择要测试的APP

成功登陆后,进入工作台,点击【点击选择应用】按钮,选择待测试的app,然后点击右上角【启动】按钮,第一次启动的时候需要对悬浮窗权限进行授权,部分机型会弹出开启VPN服务的确认框,点击确认。

  

 

    1. 网络场景

QNET提供了预设的网络场景,包含了常见的生活场景,还有弱网测试中比较常用的100%丢包场景等。

QNET支持用户根据自己的测试需求自定义弱网参数模板,有比较好的灵活性。

【网络场景】下,是系统已配置好的模板,供参考选择使用,如果要自定义参数/场景的话,可以点击【工作台】/【网络场景】页面右上角【新增】按钮添加【场景模板】/【自定义模板】/【场景模板(全球)】

  

 

 

 

  

 

    1. 悬浮窗

开始测试后,QNET会自动拉起待测试程序,然后默认会显示弱网模板控制悬浮窗,以及弱网模板信息悬浮窗。
• 左边悬浮窗是控制悬浮窗,可以下拉即时切换弱网模板,双击Q按钮可以切回QNET应用,点击暂停按钮可以停止弱网状态恢复正常网络;
• 右侧悬浮窗显示当前的模板名,实时延迟,实时网速,以及当前模板的具体参数。
注:QNET支持动态探测当前网络和远端服务器的延迟,然后动态适配用户设置的上下行延迟,保证真实网络延迟和用户设置的尽量一致。

 

    1. 弱网参数

QNET目前支持的弱网参数包括:

• 上下行延时

• 上下行延时抖动

• 上下行带宽

• 上下行随机丢包

• 上下行周期弱网

• TCP/UDP/ICMP协议控制

• 弱网IP设置

连续丢包(周期性完全丢包),常用在测试app流畅性,验证app对网络波动的支持程度。

TCP/UDP协议控制(Protocol)支持针对协议的弱网控制,比如我们可以控制UDP协议100%丢包,来测试某些不支持UDP协议的运营商的弱网场景。

 

 

 

    1. 网络抓包

QNET还支持网络抓包,导出为Pcap文件,可以在PC上用Wireshark工具打开分析,目前支持TCP, UDP, DNS协议。

 

使用网络抓包功能需要开启开关:

 

 

  1. 弱网测试常见问题

用户登录应用时下载初始化数据,下载过程中因网速太慢点击取消并重新登录,数据初始化完成后出现重复,造成数据不一致。

原因:数据下载过程中、下载失败后,未进行数据回滚,中止后重新下载,出现数据重复

解决方案:通过事务处理数据下载逻辑,下载失败后,应用本地数据库进行数据回滚。

用户点击数据上传,数据上传过程中网络弱且不稳定,基于联网状态自动触发数据上传,导致出现数据重复写入,形成脏数据

原因:数据上传过程中,由于失败重传机制,会出现连续两次写操作,并且未做唯一识别处理

解决方案:根据数据特性,对可能造成脏数据的地方,通过关键字段,例如创建时间,key-value值等生成hash键,标记记录唯一性,即数据写入时,检查hash键是否存在,如果已经存在,当前重复数据丢弃。

在弱网环境下,用户输入用户名和密码点击登录,应用链接超时返回用户名和密码错误提示

原因:在弱网环境下的连接超时后,按照强网业务逻辑处理,导致返回超时异常。

解决方案:弱网连接超时后,检查应用本地数据库是否有用户登录信息,若存在,获取应用本地用户信息进行登录。

在弱网环境下,用户输入用户名和密码后点击登录,登录过程中应用崩溃并且闪退

原因:弱网环境下数据下载超时,加载数据严重依赖于后来的异步加载。数据还没来得及返回,应用跳转到下个activity,导致崩溃。

解决方案:健壮数据加载流程,通过标记后台数据下载状态加载界面,依赖数据下载完成后,再进行页面跳转。

弱网络环境下,用户请求页面响应时间较长,等待的过程中,页面上的部分控件仍然可以操作,当用户点击控件时,出现应用闪退现象

原因:没有对数据加载流程进行判断,直接暴露控件可控,当出现依赖数据的控件操作时,没有在数据返回前做兼容处理。

解决方案:在数据加载过程中,设置页面对外暴露的控件为“不可操作”,当数据加载完再释放。

在弱网环境下,用户第一次输入搜索关键字没有得到响应后,再次输入全新关键字并发送请求,等待搜索结果返回后,当前结果页被之前的关键字搜索结果刷新覆盖

原因:中间的请求返回较慢,显示最终的结果后,之前请求返回的数据应不做处理。

解决方案:对异步请求未完成的任务进行cancel

  1. 常见问题
    1. charles过滤掉PC端请求

开启网络代理后,用手机上网,会看到出现了好多抓包记录,如果很难区分哪些是手机的,哪些是PC的,可以在Proxy里取消Windows Proxy,然后抓到的数据就全部是手机产生的数据包了。

 

    1. QNET

官方提供了一些Q&A,请参考:

腾讯文档

WeTest腾讯质量开放平台 - 专注游戏,提升品质

标签:弱网,场景,QNET,app,网络,点击,测试,数据
来源: https://blog.csdn.net/tcc374254426/article/details/121975527