monkey测试主要做随机的黑盒测试,通过不断输入伪随机的事件流来测试应用的稳定性,但是由于monkey太过皮,太过随机,最后根本无法控制,很容易陷于一个页面无法出来,或者陷入某个无关紧要的地方无法出来,导致测试结果并不具有很好的意义。
 
基于上述原因,尝试了一些二次开发monkey的测试工具,例如maxim,可以通过一些黑白名单控制,或者输入指定事件流,或者指定不同的测试随机模式,深度优先或者控件识别等,在使用了之后发现,还是会出现陷入到一个地方出不来的情况,虽然加入了熔断机制,在一个地方执行了太多次数后可以自动触发熔断并拉起,然后还是会进入一个死循环。
 
当然,基于上述的一些问题,我们可以指定测试哪些页面,但是会发现如果单个指定某几个activity,随机的意义又不是那么大了,我在一个二个页面进行随机,如果页面深度不是很深,那一直在这些页面测试也没有多大意义。由此开始思考,什么样的应用适合进行monkey测试。
 
以自己的应用来说,主要的页面功能其实不多,就是一个上课页面,其余一些小功能都隐藏在一些小地方,而实际测试过程中,基本都没有触发到小地方,覆盖的activity还是不够的,而上课页面其实以翻页为主,一些功能又隐藏在不同的分页当中,也很难随机到,因此发现并不太适合做monkey测试。那么什么样的应用适合做呢?
 
以直播软件为例,直播分类,各个直播间,页面结构比较规律,每个直播间内的结构也都是规律的,因此,即使是随机点击,也不会说在一个页面一直点,因为页面功能分布,按钮分布,触发点分布相对比较规律,不像我们的应用,页面大部分都是文本显示,功能点都分布在边上,并且有的还是需要点击某些地方才能出现的菜单栏。因此我觉得如果应用页面功能分布比较规律比较均匀适合做monkey测试,或者说monkey测试的意义也会更大,而如果自身应用页面结构功能过于简单,或者页面排版过于极端(像我们的功能,主要的页面70%就是文本显示,其他功能按钮什么的隐藏较深很难触发到,容易进去出不来)的,就可以考虑不在monkey测试上投入过多。
 
因此一些测试还是要根据被测试应用或者项目的特点来进行针对性的测试。 

最新文章

  1. js 事件冒泡
  2. 转载:JProfiler远程监控LINUX上的Tomcat过程细讲
  3. 【jquery】jquery.cookie.js 的使用指南
  4. Linux配置apache等系列
  5. EditText控件实现只读
  6. SDUT2482二叉排序树
  7. [Everyday Mathematics]20150206
  8. Java整型与字符串相互转换(转)
  9. 关于wordpress中更换CKEditor编辑器
  10. Android 正则表达式验证手机和邮箱格式是否正确
  11. hdu2415(树上背包)
  12. Django_'utf-8' codec can't decode 问题解决
  13. 女儿开始bababababa的发声了
  14. Javascript和BHO的相互调用简介
  15. Maven settings.xml
  16. POJ2960 S-Nim 【博弈论】
  17. 完整的多文件上传实例(java版)
  18. Linux下逻辑地址、线性地址、物理地址详细总结
  19. Powerdesigner数据库建模的浅谈
  20. c#栈和队列习题

热门文章

  1. linux时间同步ntpdate
  2. C# EF添加ADO.NET实体数据模型时,产生.Desiger.cs文件为空
  3. ElementUi使用表单验证出现验证问题
  4. linux shell数值比较和字符串比较
  5. 在IOS中根据圆心坐标、半径和角度计算圆弧上的点坐标
  6. sql语句查询结果中添加自增列
  7. 异常-Exception in thread "main" net.sf.jsqlparser.parser.TokenMgrError: Lexical error at line 1, column 596. Encountered: <EOF> after :
  8. Linux命令——cp、rm、mv、touch、file、dir
  9. 切换composer国内镜像 Laravel China停用,切换阿里云composer全量镜像
  10. Qt一些方便易用的小技巧