一、安卓系统知识概述1.1 安卓系统架构应用程序层应用程序框架层系统运行库库层系统内核层四大组件和API1.2 安卓权限系统Android操作系统其实是一个多用户的linux操作系统,每个android应用使用不同的用户,运行在自己的安全沙盘里。系统为所有的文件设置权限,这样一来只有同一个用户的应用可以访问它们。每个应用都有自己单独的虚拟机,这样应用的代码在运行时是隔离的,即一个应用的代码不能随意访问或者意外修改其他应用的内部数据。1.3 认识adb与安卓间的通信ADB,即Android Debug Bridge,他是Android提供的一个通用的调试工具,借助这个工具,我们可以很好的调试开发的程序,adb.exe在安装的Android的sdk开发包platform-tools目录下。它是一个客户端/服务器架构的命令行工具,主要由以下3个部分组成: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命令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"
4.2 需要功能检测当前时间被测应用的CPU使用率 以及 总体CPU使用量。检测当前时间被测应用占用的内存量、百分比,剩余内存量。检测应用从启动开始到当前时间消耗的流量数。测试数据写入到CSV文件中,存储在手机/storage/sdcard0目录下,同时支持以邮件形式发送文件。可以选择开启浮窗功能,浮窗中实时显示被测应用占用性能数据信息。在浮窗中可以快速启动或者关闭手机的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 监控启动时间的实现原理我们点击界面的开始测试时,程序会启动,之后所有的数据统计以及更新进行处理的。会在onStartCommand()里面启动一个线程“handler.postDelayed(task, 1000)”,进行数据的更新同时会尝试通过ActivityManger从logcat中获取到软件的启动时间。红色框框内的东西就是通过调用一个管理Android帧缓冲区的系统服务SurfaceFlinger来获取用于计算fps的帧数据。感谢每一个认真阅读我文章的人。
。
。
如果下面这些资料用得到的话可以直接拿走:1、自学开发或者测试必备的完整项目源码与环境2、测试工作中所有模板(测试计划、测试用例、测试报告等)3、软件测试经典面试题4、Python/Java自动化测试实战.pdf5、Jmeter/postman接口测试全套视频获取我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。需要的可以找我谢谢。
0 评论