MonkeyTalk是款针对手机应用的自动化测试工具。
特性:
1》免费且开源。
2》支持Android,IOS平台。
3》MonkeyTalk主要包括:MonkeyTalk IDE、MonkeyTalk Agent、MonkeyTalk scripts。
4》MonkeyTalk Agent可以是真机或模拟器。
5》无需root权限或越狱。
6》支持录制、回放、脚本编写(支持JS)。
7》支持回放内嵌的WebViews,但暂不支持录制。
8》支持桌面网络浏览器
9》被测试app必须植入Agent,即必须修改app源码。
一安装IDE
MonkeyTalk IDE
1
2
图1
3
图2
在MonkeyTalkIDE子目录下双击MonkeyTalkIDE.exe启动IDE,如下图所示:
图3
二安装Agent
1打开Eclipse,将Android项目转化为AspectJ。
右击被测试app名称,选择Configure——
图4
当成功Convert to AspectJ Project
2
图5
图6
3
Add
图7
将xxx-agent-xxx.jar
图8
4
图9
5
<</span>uses-permission
<</span>uses-permission
添加后结果如图10所示:
图10
添加INTERENT是方便后期IDE与App通过Http通信用。
添加GET_TASKS是允许程序获取当前或最近运行的应用。
四连接device
启动MonkeyTalk IDE,单击工具栏中机器人小图标,选择Networked Android Device…。如下图所示:
图11
输入设备Ip,如下图所示:
图12
点击Ok,即可完成。若连接成功,在Console显示:
19:02:27.984: Connection set to device at [ip]。继续点击工具栏的小机器人我们将看到第三行将显示:Device at 192.168.6.236。
图13
附:查看设备IP
1》用usb将设备与PC机相连(已安装好设备驱动,PC能正确识别device的情况下)
2》运行cmd
3》在终端输入adb shell进入device的系统命令模式下
4》利用Linux下的ifconfig命名查看设备的Ip,如下图所示:
图14
附录一
在使用MonkeyTalk测试Android时,需要用到AspectJ插件,我将在另一章节降到。
1
图1
2:安装AspectJ
2.1
2.2
图2
点击Next,如图:
图3
选择“I accept the terms of the license agreements”,然后点击Next:
图4
正在安装,如图:
图5
安装过程中可能会弹出一个对话框需要你确认,直接点击Yes就Ok了。
安装成后需重启Eclipse,重启Eclpse后右击项目名——Configure,你将看到如下信息,如图6所示:
图6
附录二(问题总结)
因为在mts中执行以下脚本(应该在mt中执行),所以出错
Input
Input password EnterText pw123
Button LOGIN Tap
Button LOGOUT Tap
2
最新版的“Test”菜单改成了“Script”菜单。
3
MonekyId是ComponentType的具体表现。比如ComponentType为Input即Android中的EditText,那么MonkeyId则是EditText的Id(android:id=“”)或者EditText的text(android:text=“”)。但我们在选择MonkeyId时尽量选择EditText的Id,Id是唯一的而text随时都可能发生改变,如果我们想重复执行这个script时,当EditText的值发生了改变,执行script时就会出错:Failure:Unable to find Input('PWD')。
当我们在测试MainActivity这个界面时,设置的测试脚本中除了Password的MonkeyId用了text,其他的ComponentType的MonkeyId都用Android中View的id。如下图所示:
图7
注意:其中*表示第一个以“Input”为ComponentType的MonkeyId。
MonkeyId也可以用#N(N为数字)表示,其中N表示所有相同的ComponentType中的第N个MonkeyId,它们以(X,Y)的形式排序计算其N值,即从上到下,从左到右计算。如图7中的User用#1表示,PWD用#2表示,LOGIN用#1表示,LOGOUT用#2表示。如下图所示:
图8
点击ToolBar上的绿色箭头执行脚本,如下图所示:
图9
这次顺利执行了。当我们再次点击那个绿色箭头执行时,结果如下:
图10
我们看到Console中的最后一行:Failure:Unable to find Input('PWD')。脚本找不到PWD了,因为PWD被我们上次更改成了username。导致后面的两句脚本:
Button login_in Tap
Button login_out Tap
也无法执行了。
4 MonkeyTalk不能识别空格
若代码中在文字前面加空格,录制时可以通过,回放时出错,MonkeyTalk会默认把文字前的空格过滤掉,但实际上空格也是个合法字符,造成录制时与回放时的值不等,因此出错。
例如:“