Python+ADB+Monkey实现ROM稳定性自动化测试方案

闻溪
闻溪
发布时间:2026-10-13| 6人浏览过
原创

本文详解如何利用Python结合ADB和Monkey工具,构建一套针对Android ROM的自动化稳定性测试方案。重点解决Framework层权限管控下的应用安装卸载、后台指令下发及黑屏复现问题。通过自动化脚本收集Logcat、内存及CPU数据,高效定位Binder故障与内存泄露,为开发提供精准复现路径。

测试背景与目标

开展此项工作的初衷源于实际测试需求。

该工作最初由同事负责,但在执行过程中发现部分问题,由于日志和数据未能完整采集,导致后续无法进行深入分析。随后由我接手,主要职责是复现此前发现的问题,并提取完整的日志与数据供开发团队进行排查。

明确测试目标与范围。

具体需求涉及Framework层的App应用权限管控机制(涵盖Android 11中的基本权限、自定义权限及AIDL接口)。服务端可通过下发指令至手机,动态控制App的访问权限(允许或禁止)。此外,App安装过程需增加签名校验环节。

自动化测试实施方案

确定实施策略与自动化路径。

自动化执行是必然选择,关键在于实施方案。首先,Client端需要接收并执行指令,人工逐一操作效率低下。鉴于已有Web管理页面,我们利用按键精灵录制屏幕操作,持续向Client端下发指令,从而实现了后台无人值守运行。然而,Client端的自动化处理仍需解决。

针对Client端的应用管理问题。

由于测试核心在于App权限拦截,必须依赖具体的App进行验证。我们选取了30个常用App及若干测试Demo。针对这些App的安装与卸载,手工操作显然不可行,因此采用Python结合ADB命令实现自动化。安装过程通过Python获取APK路径并执行adb install命令;卸载时需传入包名,可通过“pm list package -3”配合awk命令过滤出已安装APK的包名,再执行adb uninstall完成卸载。至此,APK的安装与卸载自动化流程已打通,但新的问题随之出现。

解决应用启动的自动化难题。

应用需使用特定权限,前提是先启动应用。虽然可使用am命令,但需获取MainActivity名称,即便借助工具获取也耗时费力。因此,本方案放弃am命令,改用Monkey启动应用,仅需传入包名即可,大幅简化了操作流程。

在确定安装、卸载及启动思路后,重点转向日志与数据的采集。利用Python的subprocess.Popen()函数调用logcat命令(具体过滤方法略),实现测试过程中日志的持续输出。鉴于需复现黑屏问题,还需定时收集CPU和Memory信息,同样通过Python定时执行dumpsys meminfo和cpuinfo命令获取相关数据。

测试执行与问题复现

脚本执行结果分析。

第一轮测试中,通过dump输出的内存信息发现某个本地层进程存在内存泄露,初步判断该泄露可能导致黑屏,开发团队据此进行了修复。

第二轮测试中,黑屏问题再次出现,但原因已非内存泄露,而是Binder崩溃(因系统Binder曾被修改)。进一步分析发现,仅当360手机卫士、腾讯手机管家等安全类应用在设备上长时间运行时才会触发此问题。这表明App的选择需紧密结合功能与业务场景,不可盲目选取。

总结:此项测试工作具有较高的积累价值,特此记录以便后续类似场景参考。

Shell脚本生成日志示例

补充知识:Shell脚本实战之生成日志文件。

具体实现代码如下:


#!/bin/bash
today=$(date +%y%m%d)
#the cause to use the command ls is in that to bulit a new #file,not in that the command ls.
ls /usr/bin -al > $today.log

以上内容为Python+ADB+Monkey实现ROM稳定性测试的完整分享,旨在提供参考,欢迎支持。

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。