安卓App测试简析

安卓系统知识简介
1.1安卓系统架构:linux

一、应用程序层android

二、应用程序框架层shell

三、系统运行库库层数据库

四、系统内核层数组

1.2安卓权限系统:安全

Android操做系统实际上是一个多用户的linux操做系统,每一个android应用使用不一样的用户,运行在本身的安全沙盘里。系统为全部的文件设置权限,这样一来只有同一个用户的应用能够访问它们。每一个应用都有本身单独的虚拟机,这样应用的代码在运行时是隔离的,即一个应用的代码不能随意访问或者意外修改其余应用的内部数据。服务器

1.3安卓调试桥简介:网络

ADB,即Android Debug Bridge,他是Android提供的一个通用的调试工具,借助这个工具,咱们能够很好的调试开发的程序,adb.exe在安装的Android的sdk开发包platform-tools目录下。架构

它是一个客户端/服务器架构的命令行工具,主要由如下3个部分组成:app

一、adb客户端:一个用于用户开发程序的电脑上运行的客户端

二、adb服务端:负责客户端与用户设备的守护进程的通讯

三、adb daemon(守护进程):一个之后台进程的形式运行于模拟器或者物理手机设备上的守护程序

1.4 系统监控ADB命令

1.4.1查看应用启动耗时

adb-s 设备id* shell am start -W -n 应用名.app/ .MainActivity

1.4.2得到电池电量和电池温度

adb shell dumpsys battery

1.4.3得到最耗资源的应用

adb -s 设备id shell top -m 6 -n l -s cpu

1.4.4 得到内存使用状况

adb -s 设备id adb shell dumpsys meminfo 应用程序包名

1.4.5获取指定程序cpu使用状况

adb -s 设备id shell dumpsys cpuinfo 应用程序包名

1.4.6获取指定程序PID

adb shell "ps | grep packageName"

安卓APP测试流程图:

安卓app测试简析图片.png

App测试点

3.1 UI测试

一、按钮、对话框、列表和窗口等静态界面测试

二、内容(列表页、提示框)等动态界面测试

3.2兼容性测试

一、不一样手机品牌

二、不一样的操做系统以及操做系统的不一样版本

三、不一样手机屏幕分辨率和不一样屏幕尺寸(通常测试主流分辨率)

四、网络环境的兼容性 (WiFi、移动网络、弱网环境、无网络环境)

五、与本地软件的兼容性

3.3安装卸载测试

一、应用程序的正常安装,图标显示正常,安装后正常运行(不一样操做系统下安装)

二、不一样版本之间的覆盖安装

三、覆盖安装后,用户数据的保留

四、应用程序的正常卸载,卸载后用户数据是否删除

五、安装/卸载过程当中异常状况(断电,空间不足等)

六、 安装/卸载过程是否支持取消操做

3.4版本升级测试

一、当客户端有新版本时,有更新提示。

二、 当版本为非强制升级版时,用户能够取消更新,老版本能正常使用。用户在下次启动app时,仍能出现更新提示。

三、当版本为强制升级版时,当给出强制更新后用户没有作更新时,退出客户端。下次启动app时,仍出现强制升级提示。

四、当客户端有新版本时,在本地不删除客户端的状况下,直接更新检查是否能正常更新。

3.5 交互测试

一、应用的先后台切换

二、杀进程

三、锁屏

四、长时间待机

五、中断

3.6 客户端数据库测试

一、客户端后台数据的增、删、改、查等数据更新测试

二、数据为空的状况测试

三、检查客户端数据存在时,app数据是否能自动从客户端数据中取出,检查客户端数据存在时,app数据是否能自动从客户端数据中取

四、当业务对数据进行了修改、删除后,客户端和服务端是否会有相应的更新。

3.7 接口测试

一、业务逻辑功能测试

二、边界值测试

三、参数组合测试

四、异常状况测试

3.8性能测试

一、单位时间耗电量

二、单位时间网络流量

三、移动端相关资源利用率

四、业务响应时间

五、帧率(主要针对游戏应用)

工具Emmagee简介:

4.1简介

Emmagee是网易杭州研究院qa团队开发的一款用于监控安卓客户端性能的小工具,能够监控指定被测应用在使用过程当中器的启动时间、CPU、内存、流量和电量变化状况,用户可自定义配置监控的频率以及性能的实时显示,并最终生成一份性能统计csv文件,支持Android2.2及以上版本。

4.2主要功能

一、检测当前时间被测应用的CPU使用率以及整体CPU使用量。

二、检测当前时间被测应用占用的内存量、百分比,剩余内存量。

三、检测应用从启动开始到当前时间消耗的流量数。

四、测试数据写入到CSV文件中,存储在手机/storage/sdcard0目录下,同时支持以邮件形式发送文件。

五、能够选择开启浮窗功能,浮窗中实时显示被测应用占用性能数据信息。

六、在浮窗中能够快速启动或者关闭手机的wifi网络。

4.3实现原理

4.3.一、监控CPU的实现原理

Android系统是基于Linux内核的,因此系统文件的结构和Linux下同样,系统整体CPU使用信息放在/proc/stat文件下,/proc/cpuinfo文件存放CPU的其它信息,包括CPU名称,直接读取便可。Emmagee是将选中应用的PID传入,读取/proc/PID/stat文件信息及可获取该PID对应程序的CPU信息。

4.3.二、监控内存的实现原理

内存和cpu的处理方式相似。先获取到当被测应用的PID,而后按照PID从 /proc/meminfo文件中获取当前被测应用占用的内存信息。

4.3.三、监控流量消耗的实现原理

系统中有存放总体流量和针对当程序的流量统计,/proc/net/dev和/proc/uid_stat/UID下存放tcp_rcv和tcp_send文件,分别存放下行流量和上行流量,操做先后相减就得出结果 。

4.3.四、监控电量的实现原理

电量、电压和温度状况是经过监听系统的电池管理事件的广播来获取的。

4.3.五、监控启动时间的实现原理

咱们点击界面的开始测试时,程序会启动EmmageeService,以后全部的数据统计以及更新都是EmmageeService 进行处理的。 EmmageeService会在onStartCommand()里面启动一个线程“handler.postDelayed(task, 1000)”,进行数据的更新同时会尝试经过ActivityManger从logcat中获取到软件的启动时间。

红色框框内的东西就是经过调用一个管理Android帧缓冲区的系统服务SurfaceFlinger来获取用于计算fps的帧数据,具体可参考: Android fps的计算方式。

来源:宜信技术学院 做者:张晓燕

相关文章
相关标签/搜索