python+adb+monkey实现Rom稳定性测试详解
我为什么做这项工作?
其实这项工作是另一位同事在做,过程中发下了一些问题,但是种种原因log和数据都没有收集到,无法进行分析。然后我就接手了,负责复现她发现的问题并提供log和数据给开发分析。
需要测试的是一个什么样的功能?
需求是这样的:开发在Framework层增加了app应用权限管控(Android11中基本权限、自动以权限、AIDL),服务端可以通过下发指令到手机,控制app可以访问及不能访问的权限。同时安装app也需要对签名做校验。
该如何开始这项工作呢?
不用多言,自动化是必须的,但是如何实施呢? 首先,client端是需要接收指令的,是个指令不能人工操作下发,好在我们有web管理页面,通过按键精灵录屏可实现不停的向
client下发指令(本来想用selenuim,但是时间关系就使用按键精灵吧),这样就解决了后台人工不干预的需求。但是Client端呢?
因为我们做的是app的权限拦截,那就必须有app啊,我们选了30个常用的app和一些测试demo,那么问题来了,这些app的安装卸载总不能手工进行吧。答案是肯定的,可以通过python+adb install/uninstall,进行安装和卸载。安装就不说了,无非就是通过python获取apk路径然后执行adb install 命令。卸载是需要传入包名的,如何获取系统已经安装应用的包名呢? pm list package -3 + awk 命令就可以将apk的包名过滤出来了,然后在使用adb uninstall卸载就行了。到此 apk的安装卸载自动化就完成了,那么新的问题又来了
应用要使用某项权限肯定要先启动啊,如何一一的启动这些app呢?
这里可能会有人想到使用am命令,但问题是am启动应用需要知道MainActivity的名称,虽然通过工具可以一一获取到,但是这项工作未免太耗时。所以这里我们不使用am来启动应用,换成monkey启动应用,这样只需要传入包名即可。
OK,安装卸载、应用启动的思路都有了,下面就需要收集log和数据了,可以使用python函数subprocess.Popen()函数将logcat命令传入(logcat过滤log方法不再详述),这样测试过程就可以一直输入log。因为我复现的是黑屏问题,所以测试过程中还需要收集Cpu和Memory信息,同样的使用python定时执行命令dumpsys meminfo / cpuinfo来获取。
脚本执行结果:
1、第一次执行,在dump的内存信息中发现了 我们的一个本地层进程出现内存泄露,我们怀疑是这个泄露引起的黑屏,我们的开发进行了修改。
2、第二轮测试中,同样的发现了黑屏,但已经不是内存泄露引起的了,而是Binder挂了(我们修改过系统的Binder),而且只有360手机卫士和腾讯手机管家这样的安全应用在设备上长时间运行才会出现这个问题,所以选择什么样的app也需要根据功能和业务而定,不能盲目。
PS:这项测试工作我觉得是个很好的积累,所以就写下来;以后再遇到类似的可以拿出来参考。
补充知识:Shell脚本实战之生成日志文件
1.代码如下
#!/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稳定性测试详解就是小编分享给大家的全部内容了,希望能给大家一个参考
您可能感兴趣的文章:
- Android monkeyrunner录制 && python脚本&& adb shell input 实现自动化测试
- python+adb+monkey实现Rom稳定性测试
- [Android 测试] 压力稳定性测试之: Monkey 详解分析脚本(转载)
- python3 实现自定义环形储存器,环回ROM,带测试代码
- Python与ADB的基情四射(二)——超简单的Monkey测试
- 软件测试 Android adb--monkey稳定性测试
- [Android 测试] 压力稳定性测试之: Monkey 详解分析脚本
- 硬件设计测试中,MIPS汇编指令翻译成二进制编码的Python实现
- Android命令Monkey压力测试,详解
- Pexpect简单的测试——一个 expect的python实现
- (转)Python-详解抓取网站,模拟登陆,抓取动态网页的原理和实现
- 数据挖掘之Apriori算法详解和Python实现代码分享
- 机器学习经典算法详解及Python实现--聚类及K均值、二分K-均值聚类算法
- 纯python实现的web: tornado性能测试
- 详解python实现FP-TREE进行关联规则挖掘(带有FP树显示功能)附源代码下载(2)
- Python实现WEB实际测试方法介绍
- 通过python调用adb命令实现用元素名称、id、class定位元素
- 机器学习经典算法详解及Python实现--元算法、AdaBoost
- 机器学习经典算法详解及Python实现--CART分类决策树、回归树和模型树
- Python手机开发调用DLL实现部分ADB功能