• APP专项测试


    流量测试

    一些不好的APP设计或缺陷,比如频繁,重复地在后台连网去服务端获取信息,或非Wifi下自动下载资源,下载时没有流量提示弹框等问题,可能带来意料之外的流量消耗。

    流量测试的策略可以从用户使用的相关性角度来大致分为两类:

    1.用户操作直接导致的流量消耗,可以选择经典的用户场景

    2.用户在没有使用情况下的流量消耗,即待机时或者在后台运行时的流量消耗(Android系统更容易出现,目前Android的消息推送机制不是借助统一的管道,而是各个APP定时启动后台进程到自己的服务端去询问是否有新的消息。而这个询问的过程本身就会到来流量和电量的消耗)

    下面分别从Android和iOS平台进行流量测试方法的讨论。

    1.Android系统

    基于系统自带的统计功能

    一、列出手机中所有的包名:

    adb shell

    ls -l /data/app

    二、通过adb读系统文件获取uid:

    adb shell dumpsys package | grep userId

    如: dumpsys package com.dtdream.hzgovernment | grep userId

     
     

    三、在adb shell内读取文件

    cat /proc/net/xt_qtaguid/stats | grep   tcp和udp总流量

    cat /proc/uid_stat//tcp_snd 及tcp_rcv   tcp总流量

     
     

    不过这个方法有一些比较显而易见的局限,就是只能统计总数据,没有其他维度的细分,不能提供更详细的参考。

    2.iOS系统

    一、通过Instruments自带的Network来查看网络流量

     
     

    正常情况下能查看到APP的网络吞吐情况和包数据

    3.基于Wifi代理的方式获取流量数据

    在Android或iOS设备上设置代理,在PC端开启Fiddler或者Charles工具,就可以查看到手机上发出的请求和接收到的响应。

    通过这个方法就能或得每个接口的数据流量(这种方式会少算一些底层协议层header的流量)。

    常见的流量节省方法

    1.数据的压缩:

    包括接口文本数据的压缩,js文件以及图片的压缩。

    2.不同数据格式的采用:

    在传输相同信息的的情况下,采用更精简的文件格式。比如采用JSON格式作为接口数据返回格式通常比XML格式要小;

    WebP格式相较于JPG,PNG格式,具有更优的图像数据压缩算法,在同等尺寸和和画质的情况下,WebP格式的图片体积更小。

    3.控制访问的频次

    主要针对后台数据上报,push消息检查等定时机制。

    4.只获取必要的数据

    有时APP一页会展示非常多的内容,而用户可能只会查看一部分,过多的从后台拉取数据就是一种浪费,所以可以采用分屏加载或者懒加载的方式来减少流量消耗。

    5.缓存

    将一些图片,js等之前访问过的数据暂时缓存起来,等以后使用到相关功能时,就不用再去拉取相关数据。但需要注意控制缓存的有效期和更新策略。

    另外由于手机存储空间有限,通常也需要控制整个缓存的大小,并给用户提供清除缓存的选项。

    6.针对不同网络类型设计不同的访问策略

    通过判断当前的网络类型(移动网络还是WiFi),控制数据访问的频率,预加载策略和图片的质量。比如在WiFi场景下,可以以更好的用户体验为导向。在2G/3G/4G网络情况下默认不加载图片等大的图,而需要用户手动点击后按需下载等。


    弱网测试

    基于代理的弱网络的模拟

    弱网测试的思路是手机和PC/Mac都连接同一个wifi,在电脑上开启代理软件,然后修改手机上的网络设置,将代理指向电脑上对应的IP和端口,这种情况下,由于手机流量经过电脑,电脑上的网络状况就会影响到实际的手机网络。

    下面介绍的两个公交分别适用于Windows和Mac平台。将网络模拟工具跑在PC/Mac上,并打开代理软件(Fiddler或Charles),然后手机连接同一个WiFi热点,并在WiFi的设置里,把歹意指向对应的PC/Mac.

    1.Windows下的Network Delay Simulator+Fiddler/wireshark

     
     

    Flow Match Condition可以设定选择对哪些网络连接进行控制,包括本地和远程IP,协议类型和端口。

    Flow Simulated Conditions 可以模拟网络状况,包括双向带宽,网络延迟,丢包率等维度。

    点击Save Flow和确定就能生效。

    要验证弱网络是否生效,一方面可以从APP的响应情况看到差别,另一方面,也可以在PC上抓包来看看具体的网络层情况,比如因为丢包产出大量的TCP重传,延迟等等。

    确定弱网生效后,就可以操作APP,观察APP各功能的情况,也可以观察日志中有没有什么异常发生。

    2.Mac下的Network Link Conditioner+Charles

     
     

    启用后,Network Link Conditioner 可以根据内置的某个预设来改变 手机的的网络环境,可以选择:

    Edge

    3G

    DSL

    WiFi

    High Latency DNS

    Very Bad Network

    100% Loss

    WiFi

    每个预置可以设置上行或下行的带宽极限,延迟,和丢包概率(当任何值被设置为 0 时,该值将会同你的计算机的网络环境保持一致)。

     
     

    若想模拟多种因素的特定组合,也可以创建自己的预设。

    3.iOS系统自带的网络状况模拟:

    将iPhone和Mac笔记本向量,然后在Mac上打开Xcode,此时手机的设置中就会出现“开发者”这个选项。

     
     

    选择 Network Link Conditioner

     
     

    选择需要设置的网络场景:

     
     

    除了自带的几种网络场景,还可以选择“Add a profile...”自定义合适的网络。

     
     

    不过严格来说以上几种对弱网络场景只是一些简单的模拟,实际生活中可能会有更加复杂和多变的情况。上面的模拟中,参数是固定的,二十几种肯定是多变的,而且也没有包括网络类型,有网/无网的切换。

    如果要模拟更真实的情况,需进行实际场地实测。

     
  • 相关阅读:
    使用TransactionScope实现多数据库连接事务操作
    zabbix_agentlinux下的安装
    (转)Zabbix AgentWindows平台配置指导
    使用SpringSide 3.1.4.3开发Web项目的全过程(上)
    应用开发中数据字典项设计实现方案
    Oracle Top N 和 Oracle中的limit问题解决方案
    Struts 2.0的codebehinde插件应用简述
    PropertyUtils和MethodUtils使用
    Log4j基本使用方法
    Quartz从入门到进阶
  • 原文地址:https://www.cnblogs.com/6J2B2/p/13048681.html
Copyright © 2020-2023  润新知