写点什么

安卓 App 测试简析

  • 2020-02-12
  • 本文字数:2376 字

    阅读完需:约 8 分钟

安卓App测试简析

安卓系统知识简介


1.1 安卓系统架构:


1、应用程序层


2、应用程序框架层


3、系统运行库库层


4、系统内核层


1.2 安卓权限系统:


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


1.3 安卓调试桥简介:


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


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


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


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


3、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 测试


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


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


3.2 兼容性测试


1、不同手机品牌


2、不同的操作系统以及操作系统的不同版本


3、不同手机屏幕分辨率和不同屏幕尺寸(一般测试主流分辨率)


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


5、与本地软件的兼容性


3.3 安装卸载测试


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


2、不同版本之间的覆盖安装


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


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


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


6、 安装/卸载过程是否支持取消操作


3.4 版本升级测试


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


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


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


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


3.5 交互测试


1、应用的前后台切换


2、杀进程


3、锁屏


4、长时间待机


5、中断


3.6 客户端数据库测试


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


2、数据为空的情况测试


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


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


3.7 接口测试


1、业务逻辑功能测试


2、边界值测试


3、参数组合测试


4、异常情况测试


3.8 性能测试


1、单位时间耗电量


2、单位时间网络流量


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


4、业务响应时间


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


工具 Emmagee 简介:


4.1 简介


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


4.2 主要功能


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


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


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


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


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


6、在浮窗中可以快速启动或者关闭手机的 wifi 网络。


4.3 实现原理


4.3.1、监控 CPU 的实现原理


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


4.3.2、监控内存的实现原理


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


4.3.3、监控流量消耗的实现原理


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


4.3.4、监控电量的实现原理


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


4.3.5、监控启动时间的实现原理


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


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


本文转载自宜信技术学院网站。


原文链接:http://college.creditease.cn/detail/188


2020-02-12 15:331513

评论

发布
暂无评论
发现更多内容

天猫图片搜索相似商品API开发指南

tbapi

天猫API 天猫图片搜索接口 天猫拍立淘接口 天猫图片搜索API 天猫图片API

基于YOLOv8的铁轨旁的危险行为识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

人工智能

MIAOYUN | 每周AI新鲜事儿(08.28-09.05)

MIAOYUN

人工智能 AI大模型 AI for Science 大语言模型 AI API

零压力了解 LoRA 微调原理

蛋先生DX

AI LoRa LLM 大模型微调 FineTuning

第十四届中国智能产业大会,藏着AI落地的答案

脑极体

AI

大数据-91 Spark广播变量:高效共享只读数据的最佳实践 RDD+Scala编程

武子康

Java 大数据 flink spark 分布式

工业数字化 信息化经验总结(7)

万里无云万里天

数字化转型 信息化 工业 工厂运维

智能体(AI Agent)开发实战之【LangChain】(七)核心模块:链(Chains),手把手教你搞定工作流(1)

我和AI的成长

智能体 #LangChain AI Agent

黑龙江等保流程深度指南:助力企业合规与安全运营

等保测评

Claude 封禁中国?为啥我觉得是个好消息

Immerse

基于YOLOv8的电瓶车/电动车识别项目|完整源码数据集+PyQt5界面+完整训练流程+开箱即用!

申公豹

人工智能

大庆等保测评流程:企业合规运营的关键保障

等保测评

元模型驱动(五)AI幻觉的解决

KaYa

理想汽车智驾方案介绍 4 | World model + 强化学习重建自动驾驶交互环境

地平线开发者

自动驾驶 端到端 地平线征程6

征程 6E/M|多 camera 场景示例

地平线开发者

自动驾驶 算法工具链 地平线征程6

qKnow 知识平台【开源版】发布 1.0.0 版本,全面落地知识管理与智能抽取能力

千桐科技

知识图谱 大模型 知识库 qKnow Java知识图谱

天猫商品视频API数据解析(附代码)

tbapi

天猫API 天猫商品视频API 天猫商品视频数据采集 天猫视频API 淘宝视频采集

大数据-90 Spark RDD容错机制:Checkpoint原理、场景与最佳实践 容错机制详解

武子康

Java 大数据 flink spark 分布式

人体跌倒识别检测项目|全流程源码+数据集+可视化界面+一键训练部署

申公豹

人工智能

智能体(AI Agent)开发实战之【LangChain】(八)核心模块:代理(Agents),ReAct Agent

我和AI的成长

智能体 langchain AI Agent

网络信息收集脚本详解

qife122

PowerShell 系统管理

在AI技术快速实现创意的时代,挖掘新需求成为核心竞争力——某知名AI框架需求洞察

qife122

AI开发框架 技术演进

大庆等保测评:企业信息安全的坚实护盾

等保测评

区块链DeFi 项目的开发

北京木奇移动技术有限公司

defi 区块链开发 软件外包公司

首个AI教育实训基地落地无锡惠山,摩尔线程携手科大讯飞等合作伙伴赋能未来人才

新消费日报

设备点检 设备维护经验总结(6)

万里无云万里天

工业 设备维护 工厂运维 设备点检

恶性疟原虫检测系统基于YOLOv8的高效识别系统分享

申公豹

人工智能

在AI技术快速实现创意的时代,挖掘专业文档处理新需求成为关键突破点

qife122

AI技术 需求挖掘

2023年十大最佳游戏引擎指南:从Unity到Bevy全面解析

qife122

编程 游戏开发

Kaggle Grandmaster 的价值:不止于竞赛,更在于引领破局

咕泡科技

人工智能 Kaggle 咕泡ai 咕泡科技

安卓App测试简析_语言 & 开发_张晓燕_InfoQ精选文章