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

Monkey测试感想的更多相关文章

  1. 【初学python】使用python调用monkey测试

    目前公司主要开发安卓平台的APP,平时测试经常需要使用monkey测试,所以尝试了下用python调用monkey,代码如下: import os apk = {'j': 'com.***.test1 ...

  2. monkey之三:monkey测试测略(摘抄)

    一.分类 Monkey测试针对不同的对象,不同的目的,采用不同的测略方案. 测试类型分为: 应用程序的稳定性测试和压力测试 测试对象分为: 单个APK和多个APK集合 测试目的分为: 解决问题的测试( ...

  3. Android Monkey测试(转载)

    Monkey是一款通过命令行来对我们APP进行测试的工具,可以运行在模拟器里或真机上.它向系统发送伪随机的用户事件流,实现对正应用程序进行压力测试. 官方介绍 :https://developer.a ...

  4. 安卓手机APP压力monkey测试

    一.Monkey概述 Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实现对正在开发的应用程序进行 ...

  5. Android应用程序Monkey测试

    Monkey是Android SDK中附带的一个测试工具:Monkey用于进行压力测试,软件开发人员结合monkey打印日志和系统日志,解决测试中出现的问题. Monkey测试的特点:所有事件都是随机 ...

  6. Monkey测试4——Monkey命令行可用的全部选项

    Monkey命令行可用的全部选项 常规 --help 列出简单的用法. -v 命令行的每一个-v将增加反馈信息的级别. Level 0(缺省值)除启动提示.测试完成和最终结果之外,提供较少信息. Le ...

  7. Monkey测试3——Monkey测试结果分析

    Monkey测试结果分析 一. 初步分析方法: Monkey测试出现错误后,一般的差错步骤为以下几步: 1. 找到是monkey里面的哪个地方出错 2. 查看Monkey里面出错前的一些事件动作,并手 ...

  8. Monkey测试2——Monkey测试策略

    Monkey的测试策略 一. 分类 Monkey测试针对不同的对象和不同的目的采用不同的测试方案,首先测试的对象.目的及类型如下: 测试的类型分为:应用程序的稳定性测试和压力测试 测试对象分为:单一a ...

  9. Monkey测试1——Monkey的使用

    Monkey工具使用 一. 什么是Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输入.手势输入等),实 ...

随机推荐

  1. redis键的排序操作

    命令名称:sort 语法:sort key [BY pattern] [LIMIT offset count] [GET pattern [GET pattern ...]] [ASC|DESC] [ ...

  2. C#获取客户端Ip工具类

    string pcname = Dns.GetHostName(); string ip = Dns.GetHostAddresses(pcname).First().ToString(); usin ...

  3. sping+redis实现消息队列的乱码问题

    使用spring支持redis实现消息队列,参考官方样例:https://spring.io/guides/gs/messaging-redis/ 实现后在运行过程中发现消费者在接收消息时会出现乱码的 ...

  4. linux之find的使用

    基本语法 find [查找目录] [选项] [查找规则] [查找完后的操作] 即:find pathname -option -condition [-print -exec -ok …] 选项参数 ...

  5. React/Refs and this DOM

    Refs 提供了一种方式,允许我们访问 DOM 节点或在 render 方法中创建的 React 元素. 何时使用Refs 管理焦点,文本选择或媒体播放. 触发强制动画. 集成第三方 DOM 库. 避 ...

  6. input 默认提示文字 样式修改(颜色,大小,位置)

    input::-webkit-input-placeholder{ color:red; font-size:20px; ...... }

  7. Node中的net模块提供的前端通信

    Node中的net模块提供的前端通信 客户端 业务: 客户端现在要在终端输入内容,然后回车发送内容给服务器 解决: Node中提供了一个叫做 readline 的 模块用于读取命令行内容 [ 单行读取 ...

  8. ionic 局部刷新

    $scope.$on('$ionicView.beforeEnter', console.log("刷新"); })

  9. C#基础 类及常用函数【string 、Math 、DiteTime 、TimeSpan】

    一  string 类型 string str = "abcdefg"; str.Length  -  字符串长度,返回int类型 str.TrimStart()          ...

  10. 作为一个java高级工程师的进阶之路

    本文可能可能更偏向于是内心的独白篇和面试技巧总结 一.独白 之前也面试别人,现在轮到自己找工作,怎么说呢,每个面试官的看法不一样,面试的方式就不一样,比如我面试别人我喜欢问项目中他用到了那些,然后针对 ...