APP非功能测试
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非功能测试的更多相关文章
- 移动应用/APP的测试流程及方法
1. APP测试基本流程 1.1流程图 1.2测试周期 测试周期可按项目的开发周期来确定测试时间,一般测试时间为两三周(即15个工作日),根据项目情况以及版本质量可适当缩短或延长测试时间.正式测试前先 ...
- 移动app非功能测试点收集
非功能测试 移动app测试的另一重要方面是移动app的非功能需求.移动app在推出市场或进行进一步开发前,移动测试员有许多需要测试的问题. 早期开发阶段要进行的第一个测试应该是实用性测试.通常是由al ...
- Android APP压力测试(三)之Monkey日志自动分析脚本
Android APP压力测试(三) 之Monkey日志自动分析脚本 前言 上次说要分享Monkey日志的分析脚本,这次贴出来分享一下,废话不多说,请看正文. [目录] 1.Monkey日志分析脚本 ...
- Android APP压力测试(二)之Monkey信息自动收集脚本
Android APP压力测试(二) 之Monkey信息自动收集脚本 前言: 上一篇Monkey介绍基本搬抄官方介绍,主要是为了自己查阅方便.本文重点介绍我在进行Monkey时如何自动收集相关信息 ...
- 初识App安全性测试
目前手机App测试还是以发现bug为主,主要测试流程就是服务器接口测试,客户端功能性覆盖,以及自动化配合的性能,适配,压测等,对于App安全性测试貌似没有系统全面统一的标准和流程,其实安全性bug也可 ...
- Android APP压力测试(一)之Monkey工具介绍
Android APP压力测试(一) 之Monkey工具介绍 前言 本文主要介绍Monkey工具.Monkey测试是Android平台自动化测试的一种手段,通过Monkey程序模拟用户触摸屏幕.滑动. ...
- 移动app安全测试
安全方面逐渐转向app安全,服务端app安全测试基本上跟常规的web方面挖掘差不多,只是增加了一个反编译或抓包的过程. 参考文献: http://drops.wooyun.org/tips/749 h ...
- 深圳尚学堂:Android APP的测试流程
每一个新开发的软件都避免不了测试,我在这里总结了一些Android系统的移动端APP测试的一些测试流程,希望可以给大家一些帮助. 1. UI 测试App主要核ui与实际设计的效果图是否一致:交互方面的 ...
- app专项测试自动化测试方法思路与实现
秉着个人意愿打算把python+rf接口自动进行彻底结束再做些其它方面的输出~但事与愿违,但领导目前注重先把专项测试方面完成,借此,先暂停python+rf(主要是与Jenkins集成+导入DB+微信 ...
随机推荐
- 睿象云:为什么 Zabbix 告警如此火热?
每当我们谈及监控工具的时候,Zabbix 总是最惹人瞩目的那一个.如同清晨荷叶上的剔透露珠,卓尔不凡:如同巷子末头的百年酒香,让人倾心.我们都知道 Zabbix 是监控工具里当仁不让的龙头大哥,却没几 ...
- Linux 网络栈 转载
此文章 来自 http://arthurchiao.art/blog/tuning-stack-rx-zh/ [译] Linux 网络栈监控和调优:接收数据(2016) Published ...
- sed1
Linux sed命令 Linux 命令大全Linux sed命令是利用script来处理文本文件.sed可依照script的指令,来处理.编辑文本文件.Sed主要用来自动编辑一个或多个文件:简化对文 ...
- python之《set》
set 是python里面的集合的概念 list_1 = [1,2,3,4,5,6,] list_2 = set(list_1) print(list_1,type(list_1)) print(li ...
- 利用s3-test进行ceph的接口兼容性测试
前言 ceph的rgw能够提供一个兼容性的s3的接口,既然是兼容性,当然不可能是所有接口都会兼容,那么我们需要有一个工具来进行接口的验证以及测试,这个在其他测试工具里面有类似的posix接口验证工具, ...
- 有关线上系统点击没有任何相应得问题思考,主要针对PC端应用程序
1.问题得起因 前段时间,客户得某些机器上,点击应用系统得快捷方式,没有任何响应,不弹出程序主界面,也没有任何得报错提示,甚至程序得错误日志也没有任何输出. 当时,听说发生这种情况得时候,有点懵了,不 ...
- Win10系统下安装VC6.0教程
学习一门语言最重要的一步是搭建环境,许多人搭建在搭建环境上撞墙了,就有些放弃的心理了:俗话说,工欲善其事,必先利其器:所以接下来我们进行学习C的第一步下载编程所用的工具;当然也有其它的软件,只不过初学 ...
- Netty源码解析 -- 内存对齐类SizeClasses
在学习Netty内存池之前,我们先了解一下Netty的内存对齐类SizeClasses,它为Netty内存池中的内存块提供大小对齐,索引计算等服务方法. 源码分析基于Netty 4.1.52 Nett ...
- Hadoop大数据平台搭建之前期配置(2)
环境:CentOS 7.4 (1708 DVD) 工具:VMware.MobaXterm 一. 克隆大数据集群 1. 选中已经进行了基本配置的虚拟机,进行克隆. 2. 此处改为"创建完整克 ...
- java开发两年,连这些多线程知识都还没掌握,你凭什么涨薪!
并发与并行 并发:两个或者多个事件在同一时间段发生(交替执行) 并行:两个或者多个事件在同一时刻发生(cpu多核.同时执行) 线程与进程 进程:是一个内存中运行的应用程序,有自己独立的内存空间,一个应 ...