手机测试linux监控,APP专项测试内容

除了一般功能性测试和性能测试外,app还需要一些专项测试来发现更为深层的问题。之所以称为专项测试,是因为这些测试主要针对某个特殊方面或问题的,如兼容性测试、流量测试、电量测试、弱网环境测试、安全测试等。

兼容测试

兼容性测试使功能测试,只不过侧重在不同的软硬件环境,这是由终端设备的型号多样性决定的。测试核心内容包括

•测试软件是否能在不同的操作系统平台上兼容,或测试软件是否能在同一操作平台的不同版本上兼容;

•软件本身能否向前或向后兼容;

•测试软件能否与其他相关的软件兼容;

•数据兼容性测试,主要是指数据能否共享等。

针对App通常会考虑到如下软硬件环境:

操作系统版本及大版本下的小版本,如安卓系统4下面有子版本号:4.0.2、4.2、4.4等。

屏幕分辨率,如果代码缺少对分辨率做适配除了,就会出现错位,拉伸、模糊等各种显示问题。

网络类型,这可能涉及app中对不同网络的策略,及对不同网络带宽、延时和稳定性的处理,要考虑到3G、4G、wifi网络下的功能情况。对于手机M版网站,要考虑不同的浏览器类型,这包括主流厂商手机上自带的浏览器,及主流第三方浏览器。

各种机型和版本不可能都覆盖,因此要遵循一个通用的选择机型原则,如下

根据APP的用户特征挑选出要覆盖的设备范围,以保证我们选择的机型,就是在实际应用当中主要用户群使用的机型。

考虑目前市场当中手机的主流分辨率,这里可以将分辨率分为几个级别(一种常见的分法是720P(1280x720),1080P(1920x1080),2K(2x1080p)和4K),我们选择的机型能够覆盖所有级别即可。

系统版本的不断更新,可能导致之前可以正常使用的软件功能出现异常,我们要保证软件可以对一个系列的操作系统有较好的兼容性,所以有必要考虑主要用户群使用了哪些版本的系统。

一般选择少数主流设备上执行全部用例,在其他兼容性范围内的设备上覆盖主要功能的用例。将用户反馈问题较多的部分机型也纳入兼容测试的列表中,毕竟经常出现问题的地方就是需要我们更加关注的。

在同一个手机品牌下,可以同时参考分辨率、操作系统,机型的价位等来筛选, 对非主流的分辨率(比如当前960*540、1280*720),每个类型只选择一款,而其他的都选择主流分辨率类型,  筛选操作系统也类似,可以通过一些网络数据平台,获取到当前使用率最高的操作系统版本数据,比如这里我们通过友盟数据平台(https://compass.umeng.com/trend),查看最近一个月的Android操作系统大(小)版本市场占比。

启动时间测试

启动时间对于App的性能测试,启动时间是个重要指标,启动时间分为两种情况,一种是冷启动时间(通常是系统重启,即在启动前没有该App进程的情况),另一种是热启动,即App从被切换到前台(点back退出后再点击图标启动,手机系统中有该APP进程)。QA测试时,一般关注冷启动的启动时间。

冷启动的流程即为App启动流程的全过程, 需要创建App进程, 加载相关资源, 启动Main Thread, 初始化首屏Activity等。

常用的测试方法有

1、通过adb命令,如adb logcat、adb shell am start -W packagename/MainActivity(app的包名和包的启动页)命令,-W就是wait的意思

其中adb shell am 命令执行成功后,将返回三个测量到的时间:

C:\Users\chenping>adb shell "pm list packages | grep dang"

package:com.dangdang.buy2

C:\Users\chenping>adb shell "dumpsys package com.dangdang.buy2 | grep category.LAUNCHER -B4"

android.intent.action.MAIN:

42c07de8 com.dangdang.buy2/.StartupActivity filter 42c08038

Action: "android.intent.action.MAIN"

Category: "android.intent.category.DEFAULT"

Category: "android.intent.category.LAUNCHER"

C:\Users\chenping>adb shell am start -W com.dangdang.buy2/.StartupActivity

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.dan

gdang.buy2/.StartupActivity }

Status: ok

Activity: com.dangdang.buy2/.StartupActivity

ThisTime: 3942

TotalTime: 3942

Complete

ThisTime:一般和TotalTime时间一样,除非在应用启动时开了一个透明的Activity预先处理一些事再显示出主Activity,这样将比TotalTime小。

TotalTime:应用的启动时间,包括创建进程+Application初始化+Activity初始化到界面显示。TotalTime表示新应用启动的耗时,包括新进程的启动和 Activity 的启动,但不包括前一个应用Activity pause 的耗时。也就是说,开发者一般只要关心 TotalTime 即可,这个时间才是自己应用真正启动的耗时。

2、代码里埋点

流量测试

流量是指能够连接网络的设备在网络上所产生的数据流量。这里只关注用户层面的流量

一般对于APP流量的测试需要考虑以下两种场景,一种是活动状态,也就是用户对APP操作而直接导致的流量消耗;静默转态,也就是用户没有操作APP,APP处于后台转态时流量的消耗。

流量测试通常的方法为

1、通过抓包软件,查看工具上的流量统计信息

2、查看linux流量统计文件,如查看某个应用的流量,大致步骤为

首先通过ps| grep 包名 获取该应用pid;再通过cat /proc/{pid}/status命令获取uid;再通过cat /proc/uid_stat/{uid}/tcp_snd 命令获取发送的流量(单位byte),通过cat /proc/uid_stat/{uid}/tcp_rcv获取接收的流量。这样就可以大致知道该应用消耗的流量了。

CPU测试

测试一款APP在各种场景下CPU的占用率情况也是比较重要的指标。一般APP的CPU测试也需要考虑两种场景,一种是活动转态,即APP处于操作活动中,第二种是APP什么操作都没有,默默在后台等待。

测试CPU占用率的方法有

1、手机自带监控

2、dumpsys命令,如adb shell dumpsys cpuinfo | grep {packagename}

3、top命令,如adb shell top | grep {packagename}

shell@virgo:/data $ dumpsys cpuinfo | grep dangdang

6.4% 7728/com.dangdang.buy2: 5.1% user + 1.3% kernel / faults: 4493 minor

3.9% 7923/com.dangdang.buy2:ddrn: 2.5% user + 1.4% kernel / faults: 152 minor

内存测试

对于智能手机而言,内存大小是固定的;因此,如果单个app的内存占用越小,手机上可以安装运行的app就越多;或者说app的内存占用越小,在手机上运行就会越流畅。所以说,内存占用的大小,也是考量app性能的一个重要指标。

1、同样使用top命令,查看应用占用内存的数量,其中RSS字段表示实际占用的物理内存数,单位KB

2、adb shell dumpsys meminfo

其中,package_name 也可以换成程序的pid,命令执行成功后,返回的Total 中的的 PSS 信息值就是你的应用真正占据的内存大小,通过这个信息,你可以轻松判别手机中哪些程序占内存比较大了。

shell@virgo:/data $ dumpsys meminfo com.dangdang.buy2

Applications Memory Usage (kB):

Uptime: 4066412 Realtime: 4066402

** MEMINFO in pid 10157 [com.dangdang.buy2] **

Pss  Private  Private  Swapped    Heap    Heap    Heap

Total    Dirty    Clean    Dirty    Size    Alloc    Free

------  ------  ------  ------  ------  ------  ------

Native Heap        0        0        0        0    11644    8556      95

Dalvik Heap    21012    20492        0        0    39440    36737    2703

Dalvik Other    7005    6924        0        0

Stack      792      792        0        0

Other dev      811      288      12        0

.so mmap    9130    3500    4852        0

.jar mmap        8        0        8        0

.apk mmap    1071        0      572        0

.dex mmap    12578      932    7060        0

Other mmap      27        4        0        0

Unknown    4724    4716        0        0

TOTAL    57158    37648    12504        0    51084    45293    2798

常用的几个描述内存占用的名词解释:

VSS:(Virtual Set Size)表示一个进程可访问的全部内存地址空间的大小。这个大小包括了进程已经申请但尚未使用的内存空间。在实际中很少用这种方式来表示进程占用内存的情况,用它来表示单个进程的内存使用情况是不准确的。

RSS:(Resident Set Size)表示一个进程在RAM中实际使用的空间地址大小,包括了全部共享库占用的内存,这种表示进程占用内存的情况也是不准确的。

PSS:(Proportional Set Size)表示一个进程在RAM中实际使用的空间地址大小,它按比例包含了共享库占用的内存。假如有3个进程使用同一个共享库,那么每个进程的PSS就包括了1/3大小的共享库内存。这种方式表示进程的内存使用情况较准确,但当只有一个进程使用共享库时,其情况和RSS一模一样。

USS:(Unique Set Size)表示一个进程本身占用的内存空间大小,不包含其它任何成分,这是表示进程内存大小的最好方式!

可以看到:VSS>=RSS>=PSS>=USS。

耗电量测试

电量的测试需要测试的场景比较多,在不同使用场景下消耗的电量肯定是不同的。测试场景包括

1、待机

2、活动转态,不断地进行某些场景的操作

3、静默转态,让APP处于后台运行

电量的测试方法有

1、系统自带的电量统计

2、通过adb shell dumpsys batterystats命令,首先要初始化batterystats数据

adb shell dumpsys batterystats –reset,拔掉手机连接,操作你的App,操作完成后,重新连接手机,执行下面的命令,收集Battery数据:  adb shell dumpsys batterystats > batterystats.txt。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值