Android 自带自动化测试工具:monkey & monkeyrunner. -- Android Oreo

android 平台自带自动化测试工具:monkey & monkeyrunner.

【monkey】
Monkey工具直接运行在设备模拟器的adb shell中,生成用户或系统的伪随机事件流点击屏幕、滑动屏幕、各种无力按键等)。主要用于压力和可靠性测试,可以在规定的范围内,任意随机触发各种事件,来验证App的抗压性和稳定性。
像猴子一样,疯狂的输入各种随机事件到设备上,像猴子一样疯狂的点击设备。

【MonkeyScript】
MS 是官方提供的,除了直接使用 Monkey 命令,像猴子一样随机乱点之外,还可以通过编写脚本的形式,完成一系列固定的操作。MS 提供一整套完善的 API 来进行支持,主要还是基于坐标点的操作,包含常用的:点击、长按、输入、等待等操作。
MS 虽然需要编写测试脚本,但是它还是属于 Monkey 命令的一部分,需要通过 Monkey 命令进行启动、运行。
MS 的源码文件是:MonkeySourceScript.java

    在真机平台运行:monkey -f /storage/sda1/monkey_script.txt -vvv 1

Android 自带自动化测试工具:monkey & monkeyrunner. -- Android Oreo
【monkeyrunner】
monkeyrunner工具则是在工作站上通过API定义的特定命令和事件控制设备或模拟器。
比monkey强大一些,主要用于功能测试,回归测试并且可以自定义测试扩展,灵活性较强,并且测试人员可以完全控制。
monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,您可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。
monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件,但您当然也可以将其用于其它目的。

【Linux服务器跑MonkeyRunner】-- 连接真机,进行测试
1.安装linux开发环境。adb,python,monkeyrunner
python:linux系统自带
adb,monkeyrunner: android sdk--command Line Tools for linux
sdk-tools-linux-3859397.zip -- 直接解压,出现tools 目录。
cd tools; sdkmanager "platform-tools" -- 下载platform-tools
将sdk路径加入到环境变量 -- vi ~/.bashrc; source ~/.bashrc
Android 自带自动化测试工具:monkey & monkeyrunner. -- Android Oreo
2.执行adb;python;monkeyrunner 看是否安装ok。

3.测试真机,需要adb connect。
adb connect 172.29.51.221
adb -s 172.29.51.221:5555 root -- 可不执行
adb -s 172.29.51.221:5555 remount -- 可不执行
adb devices -- 看设备是否已经连接上。

4. 跑测试脚本,在服务器运行。
moneyrunner -v ALL ~/sh_sean/monkeyrunner.py
Android 自带自动化测试工具:monkey & monkeyrunner. -- Android Oreo
Android 自带自动化测试工具:monkey & monkeyrunner. -- Android Oreo
中途遇到的问题:
1、device.installPackage('home/sean_wu/MXPlayer_V1.7.37.apk')
02:10:15 E/Device: Error during Sync: Local path doesn't exist.
解法:
device.installPackage(),其中括号内需要写入相对路径或者绝对路径
相对路径:相对于,你在执行monkeyrunner时所在的路径。
(例如我的/home/sean_wu/softwares/android-sdk/tools)所以这里的相对路径当然是相对tools这个目录的app路径。
eg.简单的方法就是在tools目录下保存要安装的apk文件。此时代码就类似下面这样:device.installPackage('MXPlayer_V1.7.37.apk')
绝对路径:
2、Error starting command: monkey --port 12345
好像还是能继续执行下去。

【monkeyrunner api】
device.startActivity(component="<packageName>/<packageName>.<activityName>")
#或者device.startActivity(component="<packageName>/.<activityName>")