一、安卓系统知识概述
1.1 安卓系统架构
应用程序层
应用程序框架层
系统运行库库层
系统内核层
四大组件和API
1.2 安卓权限系统
1.3 认识adb与安卓间的通信
adb客户端:一个用于用户开发程序的电脑上运行的客户端
adb服务端:负责客户端与用户设备的守护进程的通信
adb daemon(守护进程):一个以后台进程的形式运行于模拟器或者物理手机设备上的守护程序
二、安卓APP测试流程图(转)
三、安卓App测试点
3.1 UI测试
按钮、对话框、列表和窗口等静态界面测试
内容(列表页、提示框)等动态界面测试
APP与系统相关联之处的UI测试,如:状态栏/锁屏弹出的提示,设置中的应用显示、手机界面的APP显示等
APP与launcher间的交互、与系统其它应用间的交互、与系统本身的交互UI测试
3.2 兼容性测试
不同手机品牌
不同手机的操作系统以及操作系统的不同版本
不同手机屏幕分辨率和不同屏幕尺寸(一般测试主流分辨率)
网络环境的兼容性 (WiFi、移动网络、弱网环境、无网络环境、专网环境)
与本地软件的兼容性
APP匹配硬件设备测试(耳机、蓝牙、NFC、照相机、手环等等)--根据APP的业务需求特性
3.3 安装卸载/本地升级测试OTA
应用程序的正常安装,图标显示正常,安装后正常运行(不同操作系统下安装)、版本号是否正确
不同版本之间的覆盖安装(版本一致,版本大于、版本小于)
覆盖安装后,用户数据的保留
应用程序的正常卸载,卸载后用户数据是否删除
安装/卸载过程中异常情况(断电,空间不足等)
安装/卸载过程是否支持取消操作
手动式、命令式adb、自动式(第三方辅助工具)安装
安装前后恢复出厂设置,app/数据是否丢失、版本是否改变
安装/卸载权限,是否有安装卸载权限,无权限时是否可安装,
root前后安装测试
直接拷贝至手机system/app目录下是否直接使用
3.4 版本在线升级测试FOTA
当客户端有新版本时,有更新提示。
当版本为非强制升级版时,用户可以取消更新,老版本能正常使用。用户在下次启动app时,仍能出现更新提示。
当版本为强制升级版时,当给出强制更新后用户没有做更新时,退出客户端。下次启动app时,仍出现强制升级提示。
当客户端有新版本时,在本地不删除客户端的情况下,直接更新检查是否能正常更新。
用户下载/安装版本过程中断网或断电异常情况,是否可恢复,是否支持断电下载
恢复出厂设置后是否可以支持修改
下载升级包后删除,是否还可以在继续下载/是否还有推送提示
整机FOTA升级、独立APP应用FOTA升级策略
3.5 交互测试
应用的前后台切换
杀进程
锁屏
长时间待机
中断
摇一摇、翻转
开关机、重启
3.6 并发测试
应用与应用间并发场景---使用APP时接收微信/QQ等来信(含视频呼叫)
应用与定位场景----使用APP时不影响定位准确性
应用与通话/短信场景----使用APP时来电话/短信
应用与多媒体场景 ----使用APP时播放音乐/电影
应用与流量并发冲突场景----使用APP时数据业务流量/wifi使用不受影响,且稳定,没有过大消耗流量场景
应用并发时的功耗和数据流量场景
3.7 客户端数据库测试
客户端后台数据的增、删、改、查等数据更新测试
数据为空的情况测试
检查客户端数据存在时,app数据是否能自动从客户端数据中取出,检查客户端数据存在时,app数据是否能自动从客户端数据中取
当业务对数据进行了修改、删除后,客户端和服务端是否会有相应的更新。
没有root权限,是否可以删除全部或重要系统文件,会导致app或手机无法使用的文件
3.8 接口测试
业务逻辑功能测试
边界值测试
参数组合测试
异常情况测试
3.9 性能测试
单位时间耗电量----功耗:软件手段(工具、log)、硬件手段(电流表仪器)、其他策略(专项待机、随机待机、非待机)
单位时间网络流量---公网数据/wifi流量、吞吐量
移动端相关资源利用率---CPU、内存容量是否影响
业务响应时间----响应速度
帧率 ----流畅度
稳定性
可靠性/可恢复性
压力测试
3.10 安全性测试
反编译测试--代码示否混淆(逆向工程)
app签名/密钥/加密测试
完整性校验
敏感信息测试
软键盘劫持
权限设置检查--root
组件安全测试--四大组件:Activity、Service、ContentProvider、Broadcast
服务端接口测试
攻击类测试--SQL注入、XSS跨站脚本攻击、CSRF跨站请求伪造、越权访问
安全测试工具--扫描
基础环境--公网环境、网络环境、数据存放环境
数据安全(传输、通信、账户安全)
程序/代码安全--后门
业务安全
3.10 其他测试
认证测试
扣费测试
应用商店发布测试
上传下载测试
模拟用户体验测试----测试人员测(公司内部人员)
用户体验测试----给实际用户使用(非公司内部人员)
四、工具技术(第三方)
4.1 系统监控常用ADB命令
adb-s *******设备id****** shell am start -W -n 应用名.app/ .MainActivity
adb shell dumpsys battery
adb -s ***设备id *** shell top -m 6 -n l -s cpu
adb -s ***设备***id adb shell dumpsys meminfo 应用程序包名
adb -s ***设备***id shell dumpsys cpuinfo 应用程序包名
adb shell "ps | grep packageName"
4.2 需要功能
检测当前时间被测应用的CPU使用率 以及 总体CPU使用量。
检测当前时间被测应用占用的内存量、百分比,剩余内存量。
检测应用从启动开始到当前时间消耗的流量数。
测试数据写入到CSV文件中,存储在手机/storage/sdcard0目录下,同时支持以邮件形式发送文件。
可以选择开启浮窗功能,浮窗中实时显示被测应用占用性能数据信息。
在浮窗中可以快速启动或者关闭手机的wifi网络。
4.3 实现原理
「Have Fun ~ Tester !」
-
FunTester测试框架架构图初探 -
10万QPS,K6、Gatling和FunTester终极对决! -
环境基础【FunTester框架教程】 -
生产环境中进行自动化测试 -
小白自动化测试指南 -
成为自动化测试的7种技能 -
Selenium4前线快报 -
测试为何会错过Bug -
httpclient使用HTTP代理实践 -
Socket.IO接口多用户测试实践 -
无数据驱动自动化测试 -
从Java到Groovy的八级进化论 -
Selenium 4以后,再不相见的API·
「点击阅读阅文,查看FunTester历史原创集合」
本文分享自微信公众号 - FunTester(NuclearTester)。
如有侵权,请联系 [email protected] 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。