monkey自动化测试入门

 

Monkey简介

什么是monkey

Monkey是发送伪随机用户事件的工具流(如按键输入、触摸屏输入、手势输入等),通过它来实现对正在开发的应用程序进行压力测试

Monkey在哪里

每一台android手机里面都有Monkey工具,但是我们是看不到的,因为它不是一个可视化的工具。它不像wechat是可视化的,能打开,能执行用户操作,有图形界面,Monkey没有。

如何与monkey进行通信

借助ADB(Android Debug Bridge),安卓调试桥

环境搭建

安装jdk并配置环境变量

官网下载jdk,配置环境变量,参考:https://www.cnblogs.com/peng-zhang/p/9927389.html

安装Android SDK

1、  浏览器打开地址: http://tools.android-studio.org/index.php/sdk ,点击下载,选择windows版本sdk。如果下载不了,可以链接这个地址:https://pan.baidu.com/s/1kUJeUEF#list/path=%2F

2、  下载后点击.exe直接安装。安装后选择SDK Manager.exe,全选安装。

3、  安装后好,配置环境变量,在系统设置高级设置中,增加ANDROID_HOME,并添加Android-sdk目录下的tools和platform_tools。ANDROID_HOME为Android-sdk路径。

4、  测试adb是否安装成功

手机开启开发者模式,打开允许调试开关,用usb连接电脑。电脑打开cmd命令窗口,输入adb devices。如图所示表示adb安装成功,且设备处于可调试状态。

monkey命令详解

准备工作

1、  找出待测应用的包名,通过adb shell pm list packages命令查看待测应用包名

2、  测试monkey执行,输入adb shell monkey –p com.iflyrec.tjapp –v –v –v 10 ,对应用进行10次无规律点击

截图可见,monkey正常运行,接下来就是要通过monkey命令实现更为具体的操作。

Monkey命令详解

adb shell monkey -p com.iflyrec.tjapp -s 23 --throttle 200 --ignore-crashes --ignore-timeouts -v -v -v 10000 > E:\work\log\monkey0710.txt 2>&1 &

1、-p后面接着的对应的包名,如果是整机测试,就不需要 –p package_name

2、当测试人员发现了问题,怎么进行复现。monkey所谓的随机操作,是基于seed产生的。每一个seed值都会产生唯一的一个操作序列。只要两次操作的seed值是一样的,那么这两次的操作序列也是一样的,这样我们就能用monkey来复现随机发生的bug了。

3、--ignore-crashes --ignore-timeouts 这里是在monkey测试的过程中遇到crash或者timeout的情况时忽略掉,一般不设置时,出现crash或者timeout时,Monkey测试会终止。这里是防止Monkey测试终止。

4、10000 这里是指点击的次数

5、E:\work\log\monkey0710.txt指输出日志到对应文件

6、2>&1 固定的写法,代表的意思是中间忽略的东东的日志一并输入到指定的文件中。

7、最后单独的一个"&" 是一旦Monkey测试开始了,之后可以拔掉数据线,不会影响Monkey测试。

8、--throttle <毫秒>

指定用户操作(即事件)间的时延,单位是毫秒;如果不指定这个参数,monkey会尽可能快的生成和发送消息。

9、-v 日志详细程度

Level 0 : adb shell monkey -p fishjoy.control.menu -v 100 最简单(默认),除了启动、测试完成和最终结果外只提供较少的信息。

Level 1 : adb shell monkey -p fishjoy.control.menu -v -v 100 提供了较为详细的测试信息,如逐个发送到Activity的事件信息

Level 2 : adb shell monkey -p fishjoy.control.menu -v -v -v 100 提供了更多的设置信息,如测试中选中或未选中的Activity信息

比较常用的是-v -v -v,一般会保存到指定文件中供开发人员查找bug原因时使用。

杀monkey进程

1、  通过CTRL+C停止电脑上正在运行的monkey命令,但手机上依然会继续运行

2、  通过命令

adb shell "ps | grep monkey"查看monkey进程,返回的第一个数字为进程号

3、  通过命令adb shell kill 进程号

4、  再次查看monkey进程发现没有进程,手机上monkey停止运行。

编写monkey脚本

1、  常用方法

(1)启动应用Activity

LaunchActivity(pkg_name, cl_name): 启动应用的Activity。参数:包名和启动的Activity。

(2)点击操作

Tap(x, y, tapDuration): 模拟一次手指单击事件。参数:x,y为控件坐标,tapDuration为点击的持续时间,此参数可省略。

DispatchPress(keyCode): 按键。注:keyCode值可以百度android keycode列表获取

LongPress():  长按2秒。

PressAndHold(x, y, pressDuration):  模拟长按事件。

DispatchPointer(downTime,eventTime,action,x,y,pressure,size,metaState,xPrecision,yPrecision,device,edgeFlags):DispatchPointer命令用于向一个指定的坐标位置,发送点击操作。

主要关注action、x、y三个参数。action:事件是按下还是抬起,0表示按下,1表示抬起。x、y:表示当前事件触发的X轴和Y轴的坐标。两个DispatchPointer命令加在一块,一个按下一个抬起,表示一次点击操作,其余参数默认设置为0即可。downTime,eventTime表示持续时间,用毫秒表示。

(3)拖拽操作

Drag(xStart, yStart, xEnd, yEnd, stepCount):  用于模拟一个拖拽操作。

PinchZoom(x1Start, y1Start, x1End, y1End, x2Start, y2Start, x2End, y2End, stepCount): 模拟缩放手势。

(4)等待操作

UserWait(sleepTime): 等待一段时间,sleepTime表示的等待时间,单位为毫秒。

DeviceWakeUp(): 唤醒屏幕。

ProfileWait: 等待5秒。

(5)其他操作

DispatchString(input):  输入字符串。

RotateScreen(rotationDegree, persist): 旋转屏幕。 参数:rotationDegree为旋转角度, e.g. 1代表90度;persist表示旋转之后是否固定,0表示旋转后恢复,非0则表示固定不变。

DispatchFlip(true/false): 打开或者关闭软键盘。

2、  脚本实例

#头文件、控制monkey发送消息的参数

type=raw events

count=10

speed=1.0

#以下为monkey命令

start data >>

LaunchActivity(pkg_name,activity)

Tap(x,y,durtion)

前三行是脚本头,count为脚本中包含的指令数目,speed为执行速度。start data >>后面是执行的命令。

执行后,monkey可以在指定模块中运行。

猜你喜欢

转载自www.cnblogs.com/selinanan/p/13386505.html