一、monkey介绍
1、Monkey程序由Android系统自带,使用Java语言写成,在Android文件系统中的存放路径是: /system/framework/monkey.jar; Monkey.jar程序是由一个名为“monkey”的Shell脚本来启动执行,shell脚本在Android文件系统中 的存放路径是:/system/bin/monkey;
2、作用:测试androidApp的稳定性、健壮性
3、优点:自动生成脚本、日志能直接定位到被测app具体代码行数、随机性
4、缺点:测试目标为整个app,不能指定具体页面、功能
二、框架思路
先来一张图,然后再具体说明
首先肯定需要一台服务器,系统不限,win、mac、linux,都可以
1、持续集成
这个首选肯定是jenkins,主要是用来拉取被测app的代码、打包成apk安装包、定时构建测试
2、下载被测app、安装app(代码)
如果开发已经做好现成的apk供你下载,那就不需要自己拉代码打包了,只需要利用代码把apk下载到你的服务器上,然后调用adb命令安装。
3、测试前的准备工作(UI自动化)
monkey测试前肯定要检查一下,被测app的状态是否符合要求,比如要打开wifi、登录账号、切换测试环境、等等操作,这些就需要用UI自动化来实现,目前有两种框架可选uiautomator2.0和appium,我用的是uiautomator2.0。
4、执行monkey测试(shell脚本)
这里就开始执行monkey测试了,把monkey的指令写到一个shell脚本中,再把shell脚本push到手机里触发执行,该脚本还包含其他功能,比如:统计手机信息(内存、手机型号、app版本、安卓版本等等)、把monkey产生的日志分类,将正常log和异常log分别写入文件,放到手机的指定路径下、记录开始测试时间和结束测试时间、发生崩溃页面的截图功能。这些操作都要写到shell脚本中。
#!/system/bin/sh
dire="/mnt/sdcard/A-monkey/"
filename="/mnt/sdcard/A-monkey/error"
fileout="/mnt/sdcard/A-monkey/result"
filedetail="/mnt/sdcard/A-monkey/detail"
#获取手机信息
info(){
devices_name=`getprop ro.product.model` #设备名称
android_version=`getprop ro.build.version.release` #安卓版本
PHONE_PRODUCER=`getprop ro.product.brand` #手机厂家
SCREEN_SIZE=`wm size` #分辨率
SCREEN_SIZE1=${SCREEN_SIZE#*:} #分辨率
phone_sdk=`getprop ro.build.version.sdk` #sdk版本
phone_udid=`getprop ro.serialno` #udid
phone_ip=`ip -f inet addr show wlan0` #ip地址 ifconfig | grep Mask
phone_ip1=${phone_ip#*inet}
phone_ip2=${phone_ip1%/*}
BabyfsVersion=`dumpsys package cn.babyfs.android|gre