赞
踩
【Monkey命令】:
*** 列出已连接的设备:adb devices
***找到手机中正在运行的安装包名: adb shell dumpsys window | findstr mCurrentFocus
***对指定安装包进行100次并发: adb shell monkey -p 包名 100
***对指定安装包进行100次并发并打印日志: adb shell monkey -p 包名 100 >路径
***执行100个伪随机用户事件流,事件间隔为300毫秒: adb shell monkey -p 包名 --throttle 300 100
monkey测试的优点
简单易用,方便快捷,并且理论上可以测试到所有bug,因为理论上只要次数最够多,所有事件都会发生。
monkey测试的缺点
遍历界面有限。 在monkey测试中,由于事件的随机性,使得monkey容易卡在某些简单页面,比如登陆页面这种可操作内容很少的页面。导致测试效果不佳。测试有效性大打折扣。
无法得知Bug的复现步骤。由于Monkey的随机性,如果Bug是由于事件发生的特定序列产生的,往往很难复现Bug。
路径回环。由于monkey太过随机,最后根本无法控制,很容易陷于一个页面无法出来,或者陷入某个无关紧要的地方无法出来,导致测试结果并不具有很好的意义。这也是导致遍历界面有限的原因。
解决方案
1 二次开发
对monkey进行二次开发,例如maxin,可以通过一些黑白名单控制,或者输入指定事件流,或者指定不同的测试随机模式,深度优先或者控件识别等,同时加入一些熔断机制,在一个地方执行了太多次后可以自动触发熔断并拉起。但是这样还是会进入死循环,因为仍然不能解决路径回环的问题。
2 指定测试页面
我们可以指定测试哪些页面,但是发现如果指定某几个Activity,虽然不会陷入路径回环,但随机的意义又不是那么大了,如果在几个页面进行随机,并且页面深度不是很深,那一直在这些页面测试也没有多大意义
3.分析APP特性,选择合适的方案
可以看出,测试的随机性和上述问题的解决是很难兼得的,我们必须根据我们应用的特性选择合适的方案。
对于页面功能不多,控件简单的应用,我们可以采用自定义脚本进行测试,因为在这种情况下测试所有功能也是可能的。
对于页面结构比较规律的应用,比如直播软件,每个页面结构相对固定(直播间都长一样),或者电商app(每种商品的页面大致相同)。由于随机性,所以点击不会一直在同一个地方进行点击,所以不容易一直卡在同一个页面。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。