python电源自动化测试_使用 Monkey+python 做一个简单的自动化测试

monkey 是个啥子嘛?

monkey 是一款通过命令行来对我们 APP 进行测试的工具,可以运行在模拟器里或真机上。它向系统发送伪随机的用户事件流,实现对正应用程序进行压力测试。(其实可以想象成一只猴子啥都不知道,疯狂乱敲......)

b9e93e8e4cf5803b9bf147cb93b467a0.png

1f446.svg 伪随机又是个什么鬼?

是因为该随机事件可进行复现(定位可能出现的问题)。我们每次执行一组随机事件,系统都会给一个随机的ID,称之为seed。若我们想将该组随机事件再次执行一遍,则使用-s+seed+count即可。

那么 monkey 的使用场景是哪些呢?(你喜欢用在哪里就在哪里)

8ffec3538d88fa42e0429007d79b7916.png

monkey 测试是 Android 平台自动化测试的一种手段,通过 monkey 程序模拟用户触摸屏幕、滑动 Trackball、按键等操作来对设备上的程序进行压力测试,检测程序多久会发生异常。(当然也可以做自动化测试)开发人员结合 monkey 打印的日志 和系统打印的日志,修改测试中出现的问题 。

1f446.svg 那什么时候进行压力测试呢?

等产品稳定,没有太多的 bug 的时候,一般会用 monkey 去测试待测应用的稳定性,健壮性(是否会发生闪退,崩溃,无响应)和整机测试

好了我要开始嚯稀泥了(有没有搞错啊大佬,那是搭环境)

1、确保电脑已安装 adb

直接下载 adb 安装包,把相关文件放到 c:/windows/system32 目录和 c:/windows/system 目录下,完成安装

ba85c2cb8c8199fcea0dfbbf218e59eb.png

2、jdk 环境已配好(没配好自己配吧,自己配不好请移驾https://www.baidu.com/s?ie=utf-8&wd=jdk%E7%8E%AF%E5%A2%83%E6%90%AD%E9%85%8D)

b626ed64aeb28e6b6cffd3c894a4f310.png

1f64c.svg 此时此刻我要小声 bb 一下为什么要配置 jdk 了,

1) Monkey 程序由 Android 系统自带,使用 Java 语言写成,在 Android 文件系统中的存放路径是:/system/framework/monkey.jar;

2) Monkey.jar 程序是由一个名为 “monkey” 的 Shell 脚本来启动执行,shell 脚本在 Android 文件系统中的存放路径是:/system/bin/monkey;

这样就可以通过在 CMD 窗口中执行:adb shell monkey {+ 命令参数}来进行 Monkey测试了。

3、(安装模拟器/真机)手机已经打开开发者模式以及 USB 调试状态

4、 把手机锁屏设置为从不

某位仁兄

1f621.svg个憨憨,重要的命令参数有啥。

怂怂的我

1f61f.svg

1)参数: -p

参数-p 用于约束限制,用此参数指定一个或多个包(Package,即 App)。指定包之后,monkey 将只允许系统启动指定的 APP。如果不指定包,monkey 将允许系统启动设备中的所有 APP。

指定一个包:

adb shell monkey -p com.kaiyuan.developmentbusiness 100

说明:com.kaiyuan.developmentbusiness 为包名,100 是事件计数(即让 monkey 程序模拟 100 次随机用户事件)。

指定多个包:

adb shell monkey -p com.qywlandroid –p com.kaiyuan.developmentbusiness 100

不指定包:

adb shell monkey 100

说明:monkey 随机启动 APP 并发送 100 个随机事件。

2) 参数: -v 日志详细程度

用于指定反馈信息级别(信息级别就是日志的详细程度),总共分 3 个级别,分别对应的参数如下表所示:

日志级别 Level0

adb shellmonkey -p com.kaiyuan.developmentbusiness –v 100

说明缺省值,仅提供启动提示,测试完成和最终结果等少量信息

日志级别 Level 1

adb shellmonkey -p com.kaiyuan.developmentbusiness –v -v 100 说明提供较为详细的日志,包括每个发送到 Activity 的事件信息

日志级别 Level 2

adb shellmonkey -p com.kaiyuan.developmentbusiness –v -v –v 100 说明最详细的日志,包括了测试中选中/未选中的 Activity 信息

3) 参数:-s

用于指定伪随机数生成器的 seed 值,如果 seed 相同,则两次 monkey 测试所产生的事件序列也相同的。

monkey 测试 1:adb shell monkey -p com.kaiyuan.developmentbusiness –s 10 100

monkey 测试 2:adb shell monkey -p com.kaiyuan.developmentbusiness –s 10 100

两次测试的效果是相同的,因为模拟的用户操作序列(每次操作按照一定的先后顺序所组成的一系列操作,即一个序列)是一样的。操作序列虽然是随机生成的,但是只要我们指定了相同的 Seed 值,就可以保证两次测试产生的随机操作序列是完全相同的,所以这个操作序列伪随机的;

4) 参数:--throttle

用于指定用户操作(即事件)间的时延,单位是毫秒;

adb shell monkey -p com.qywlandroid –throttle 3000 100

5) 参数: --ignore-crashes

用于指定当应用程序崩溃时(Force& Close 错误),monkey 是否停止运行。如果使用此参数,即使应用程序崩溃,Monkey 依然会发送事件,直到事件计数完成。

adb shellmonkey -p com.qywlandroid --ignore-crashes 1000

测试过程中即使 Weather 程序崩溃,Monkey 依然会继续发送事件直到事件数目达到 1000 为止;

adb shellmonkey -p com.qywlandroid 1000

测试过程中,如果 Weather 程序崩溃,Monkey 将会停止运行。

好了好了,墨刀嚯嚯,开始搬砖

1f5291106094b0d86a471b71da3c6c87.gif

我这里用的 pycharmIDE,写完之后直接建个 .bat 放里面就好了,比如说

8174f0b88e33b29e5dbfda392fb81324.png

ojbk,请看我的目录

93959ac66a042efc403c38026cdc2231.png

里面的 bugreport_book 文件是最后生成的,他从哪里来的呢?

这个时候就该讲一哈我们伟大的插件ChkBugReport

ChkBugRepor t 是一个开源工具,它可以把你得到的 bugreprot.t 解析成适合阅读的 html 文件。导出的 html 文件包含了根据 bugreport.txt 数据得出的图表和分析结论。

73f30b3decf7b21edae8cf8fb57ed958.png

如果这个线程死锁,在报告的 Errors 将会出现。

***.logs 这部分是对 system、main 和 kernel 日志的分析,在这里你可以看到每个进程内存使用图、那个程序产生的 log 最多、Activity 的启动耗时、数据库操作耗时统计、对象被锁定- - 时间、AIDL 调用时间、Activity 和 Service 的生命周期及其在内存中使用频率等等

Processes 操作 app 过程中产生的系统事件日志、内存使用信息等等

Battery statistics 电池使用统计

CPU Frequency statistics CPU 频率统计

Raw data 一些原始数据

首先添加.config 文件,添加内容为

59f97430c3b02ca07751d32e07586707.png

然后创建 runmonkey.py 文件,主要函数为

引用.config,不然你写它干啥用

f73dc83be5db3e5b613f71d27a4c367c.png

安装安装包,(也就是把包放在 apk 文件下,然后就可以自己安装啦啦啦啦啦啦)

8dd78ea15584355abb66c5e5a0c9093e.png

执行 monkey 命令

e470810cfaf476997eb426b935cdcc88.png

创建 bugreport.txt 报告,并生成 html 文件

21a21766913c0a929e5a674399a33ac2.png

你可以砍死它了,开心嘛

e82fb905ad2153c1aca669b69e0031b3.png

至于为啥要这么写,我就不告诉你,哈哈哈哈哈哈或,掰掰

;

bb85932b8a46aa7fad2aedf3f2cea89f.png

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值