1、移动APP启动时间测试

问题:如何获取启动时间?

答:通过adb的logcat来获取Activity启动时间。用户体验时间=Activity启动时间+启动中异步UI绘制的时间。

启动时间的测试主要涉及2种场景(启动方式):热启动和冷启动。

  • 冷启动:手机系统中没有该APP的进程,也就是首次启动。点击APP图标,启动应用的时候没有该应用的进程存在。
  • 热启动:手机系统中有该APP的进程,即APP从后台切换到前台。点击APP图标,启动应用的时候后台已经有该应用的进程存在了。

APP启动时间测试方法:

1、adb命令,如adb logcat、adb shell am start、adb shell screen-record。

1.1 以com.android.browser这个包名为例,adb shell am start执行命令如下:

adb shell
am start -W -n com.android.browser/.BrowserActivity(回车后观察模拟器) -W :启动完成之后,返回启动耗时。
-n:后面跟的是需要启动的APP的包名和lauchActivity。 

1.2 以com.android.browser这个包名为例,adb logcat执行命令如下:

1、先kill掉该应用,执行命令:adb logcat > d:\testresult.txt
2、启动应用,待加载完成后ctril+c停止,使用find过滤启动时间,testresult_2.txt是最终我们想要的启动时间,相加其中的时间。
3、find “Displayed”d:\testresult.txt >d:\testresult_1.txt
4、find “com.android.browser”d:\testresult.txt >d:\testresult_2.txt

1.3 以com.android.browser这个包名为例,adb shell screen-record执行命令如下:

1、把待测手机连上计算机,执行录制命令:adb shell screenrecord /sdcard/demo.mp4>启动app>按ctrl+c结束
2、adb pull screenrecord /sdcard/demo.mp4 d:\record命令导出视频到D盘的record文件夹下
3、使用视频软件打开该视频并进行播放分析(如KMPlayer)
4、视频中ICON变亮作为开始时间,将APP完全启动后的时间作为终止时间。用户体验时间=终止时间-开始时间

2、代码里打点(埋点),代码里插入时间并打印Log.e。

3、高速相机、秒表

4、三方工具或云测平台

2、移动APP流量测试

流量:指能够连接网络的设备在网络上所产生的数据流量。

一般对于APP测试的流量,主要关注的是用户层面的流量,需要考虑2种场景:活动状态、静默状态。

  • 活动状态:用户对APP操作而直接导致的流量消耗。
  • 静默状态:用户没操作APP,APP处于后台状态时流量的消耗。

对于Android系统下流量的测试方法:

1、通过Tcpdump抓包,然后利用wireshark分析。

2、查看linux流量统计文件

3、利用类似DDMS的工具查看流量

4、利用Android API来统计,通过Android API的TrafficStats类来统计,该类提供了很多不同方法来获取不同角度的流量数据。

5、三方工具或者云测平台。

使用比较多的linux流量统计文件为例,以test.apk这个应用为例,查看这个应用的流量:

1、通过ps | grep com.android test命令获取pid。

2、通过 cat /proc/{pid}/status 命令获取uid,其中{pid}替换为第一步获取的pid值。

3、通过cat /proc/uid_stat/{uid}/tcp_snd命令获取发送的流量(单位bytes),其中{uid}替换为第二步的值。

4、通过cat /proc/uid_stat/{uid}/tcp_rcv命令获取接收的流量(单位bytes),其中{uid}替换为第二步的值。 

3、移动APP CPU测试

测试一款APP在各种场景下CPU的占用率情况也是比较重要的指标,CPU占用率较高会影响使用流畅度。

一般APP在手机上的CPU占用率主要考虑2种场景:

  • 活动状态:用户对APP操作而直接导致的流量消耗。
  • 静默状态:用户没操作APP,APP处于后台状态时流量的消耗。

对于APP CPU测试方法如下:

1、三方工具,如腾讯GT、网易Emmagee、阿里易测、手机自带监控等。

2、dumpsys命令。如adb shell dumpsys cpuinfo | grep {PackageName}.

3、top命令。如adb shell top | grep {PackageName}.

4、移动APP电量测试

电量测试其实是评估消耗电量快慢的一种方式。

电量测试的测试场景主要有:

  • 待机:包括无网络待机、Wi-Fi待机、3G待机等。
  • 静默状态:打开APP之后并不操作,让后台运行。
  • 活动状态:不断地进行某些场景的操作,除了常规操作外,还应该包括看视频、灭屏下载、唤醒等。

对于APP 电量测试方法:

1、通过硬件进行测试。比如,耗电量测试仪、腾讯自己制作的电量宝。

2、通过adb shell dumpsys batterystats命令。

3、三方工具或者云测平台。

5、移动APP测试工具和云测平台

1、腾讯GT: http://gt.qq.com ,即可对APP进行快速性能测试(CPU、内存、流量、电量、帧率/流畅度等)、开发日志的查看、Crash日志查看、网络数据包的抓取、APP内部参数的调试、真机代码耗时统计等。

2、Emmagee:http://github.com/NetEase/Emmagee, 监控制定被测应用在使用过程中占用机器的CPU、内存、流量资源的使用情况并记录下来,同时可以通过excel来做出统计图的形式。

3、EasyTest易测:在手机端完成实时性能数据的监控、弱网环境的模拟、手机抓包、Monkey测试等。

6、移动APP内存测试

内存泄露是什么?

内存泄漏:进程中某些对象已经没有使用价值了,但是他们却可以直接或间接地被引用从而导致无法被GC回收。当积累超过Dalvik堆大小时就会发生内存泄露。

内存泄露常见的分析方法:

1、在adb shell 下运行命令dumpsys meminfo [应用包名],可以观察到内存的使用情况。一般观察PSS Total和Heap Size Total.其中Dalvik就是Java堆,它不能超过最大限制,查看最大限制可以用命令getprop |grep heapgrowthlimit.

2、DDMS和MAT.DDMS可动态查看某进程占用内存的情况,而MAT可以对dump出来hprof进行分析。

3、Android Studio和MAT.适合有源码的情况。

4、日志和必要的监控。

内存泄露步骤如下:

1、运行被测APP并持续操作

2、在DDMS中的VM heap标签页里查看消耗。其中有一个按钮Cause GC,方便观察内存的回收情况。如果多次进行发现内存还是在不断增大,可回收的越来越少,那就有可能存在内存泄露。也可以通过data object中的Total Size来进行判断。

3、当发送内存泄露或者持续增长的时候可以通过DDMS的Dump hrof file功能捕获内存快照。

4、通过命令hprof-conf [inputfile][outputfile]转化为标准的hprof文件

5、使用MAT打开标准的hprof文件并进行分析。

6、如果MAT分析不出什么来,可以通过dumpsys meminfo 观察Native Heap的Pss Total和Heap Alloc,如果他们一直在增长,可能是Native层出现了问题,需要去排查JNI、SO库相关的代码。

APP非功能测试的更多相关文章

  1. 移动应用/APP的测试流程及方法

    1. APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先 ...

  2. 移动app非功能测试点收集

    非功能测试 移动app测试的另一重要方面是移动app的非功能需求.移动app在推出市场或进行进一步开发前,移动测试员有许多需要测试的问题. 早期开发阶段要进行的第一个测试应该是实用性测试.通常是由al ...

  3. Android APP压力测试(三)之Monkey日志自动分析脚本

    Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 ...

  4. Android APP压力测试(二)之Monkey信息自动收集脚本

      Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息 ...

  5. 初识App安全性测试

    目前手机App测试还是以发现bug为主,主要测试流程就是服务器接口测试,客户端功能性覆盖,以及自动化配合的性能,适配,压测等,对于App安全性测试貌似没有系统全面统一的标准和流程,其实安全性bug也可 ...

  6. Android APP压力测试(一)之Monkey工具介绍

    Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...

  7. 移动app安全测试

    安全方面逐渐转向app安全,服务端app安全测试基本上跟常规的web方面挖掘差不多,只是增加了一个反编译或抓包的过程. 参考文献: http://drops.wooyun.org/tips/749 h ...

  8. 深圳尚学堂:Android APP的测试流程

    每一个新开发的软件都避免不了测试,我在这里总结了一些Android系统的移动端APP测试的一些测试流程,希望可以给大家一些帮助. 1. UI 测试App主要核ui与实际设计的效果图是否一致:交互方面的 ...

  9. app专项测试自动化测试方法思路与实现

    秉着个人意愿打算把python+rf接口自动进行彻底结束再做些其它方面的输出~但事与愿违,但领导目前注重先把专项测试方面完成,借此,先暂停python+rf(主要是与Jenkins集成+导入DB+微信 ...

随机推荐

  1. 巧用IDM工具 快捷下载ASTER GDEM v3高程数据

    ASTER GDEM v3是NASA推出的30米高清DEM,覆盖了几乎全部的地球陆地.那么,在NASA官网怎么下载ASTER GDEM v3的地形高程数据呢? 首先,你需要注册一个nasa的账号 注册 ...

  2. JAVA基础之接口与内部类

    接口与内部类 目录 接口与内部类 1. Lambda表达式 1. 关于懒计算 2. Predicate接口 3. 关于方法引用 4. 关于构造器引用 5. 关于变量的作用域 2. 内部类 1. 局部内 ...

  3. MYSQL 存储引擎(面)

    存储引擎是MySQL的组件,用于处理不同表类型的SQL操作.不同的存储引擎提供不同的存储机制.索引技巧.锁定水平等功能,使用不同的存储引擎,还可以获得特定的功能. 使用哪一种引擎可以灵活选择,一个数据 ...

  4. Spring源码之Springboot中监听器介绍

    https://www.bilibili.com/video/BV12C4y1s7dR?p=11 监听器模式要素 事件 监听器 广播器 触发机制 Springboot中监听模式总结 在SpringAp ...

  5. 了解LockSupport工具类

    介绍: 在网上也没有找到太多的东西,大概说了一下,这个工具类的所有方法都是静态的,底层采用UNSAFE直接操作的内存,可以实现线程的阻塞和唤醒 可以看到他的park方法调用的是UNSAFE的park方 ...

  6. [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self signed certificate in certificate chain (_ssl.c:1076)'))) - skipping

    C:\Users>pip listPackage Version------------ -------behave 1.2.6configparser 3.7.4ddt 1.2.1parse ...

  7. js前端读取文件内容

    方法1:原生 <input type="file" name="file" id="file" onchange="jsRe ...

  8. gcc和g++理解

    环境使用的编译器版本是是gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39) 编译使用了c++11标准的程序时不能通过. 先放解决方法:g++ -std=c++11 ...

  9. zabbix的搭建及操作(2)监控windows10及网络设备

    实验环境 配置完成的Server端 Web --详情点击 windows10 192.168.10.1 (与虚拟机同一Vmnet的IP地址)必须关闭防火墙 网络设备GNS 192.168.10.50 ...

  10. FL Studio中echo的延迟作用

    今天来一起研究FL Studio的Echo Delay的作用,Echo Delay可以从MIDI输入创建回声,并允许我们通过音量,声像,切除和共振,音高和时间来操纵延迟. 图1:Echo Dealy ...