天地会珠海分舵注:本来这一系列是准备出一本书的,详情请见早前博文“寻求合作伙伴编写《深入理解 MonkeyRunner》书籍“。但因为诸多原因,没有如愿。所以这里把草稿分享出来,所以错误在所难免。有需要的就参考下吧,转发的话还请保留每篇文章结尾的出处等信息。

边界


怎么样才算分析清楚一个事物的原理是什么呢?就以前面提到的《LINUX内核源代码情景分析》为例子,分析到什么程度算是把Linux内核给分析清楚呢?一个操作系统内核的原理无非是要描述清楚这几个核心是如何工作的:

  • 进程管理和CPU调度
  • 设备驱动
  • 文件系统

那么它会去分析CPU的电路是怎么实现的吗?或者它会去分析一个iSCSI的HBA卡的固件代码是怎么实现的吗?都不会,因为它超出了该书的边界。对于CPU这个例子,在这种情况下你只需要知道CPU提供的接口是怎么工作的就行了,比如它的寄存器的功能是什么,谁用来存储代码,谁用来存储地址,等等;对于iSCSI这个例子,只需要分析到iSCSI协议是怎么工作的,知道该HBA里面的固件代码有实现相应的协议来做相应的事情就够了,就好比你只需要知道往一个PLC的针脚发送指定的指令,返回的将会是对应的某个值一样。

那么它会去分析C语言的实现原理吗?大家都知道Linux内核大部分是用C语言编写的。也不会,因为这些知识是你在阅读该书籍之前就必须掌握的。

同理,仿效该大作,本书也应该有所为有所不为,不然一本书出来最终什么都囊括了的话最终可能出来的不仅仅是描述MonkeyRunner的运行原理,甚至是描述安卓操作系统的实现原理了,到时就真的是四不像了。这样就算我有时间和能力把它写出来,相信你也没心情把它给读完了。

那么我们在分析MonkeyRunner的源代码来剖析它的运行原理的过程中,它的边界应该如下:

  • 不会去分析安卓操作系统的源代码。在需要用到相应的API或者服务的时候会对其进行描述。比如在分析MonkeyRunner是如何注入事件来出发屏幕点击事件的时候,不会去分析使用到的安卓系统的InputManager和牵涉到的安卓内核的源码,只需要知道它是做这样的事情的就够了
  • 不会去分析ADB的任何源代码,因为ADB的代码分析已经足可编写另外一本书了。但我们还是会去描述ADB各个部件的原理是什么以及它的协议的详细信息以及给出常用的ADB命令的示例及描述

同时为了保证你可以顺利的阅读本文的所有内容,我会建议你最好先准备下以下的知识:

  • Java语言基础:因为MonkeyRunner所用到的库都是用java写的
  • Python语言基础 : 因为MonkeyRunner的测试脚本都是通过Python语言进行编写的,而本书会有相当一部分的脚本示例
  • 安卓界面应用基本知识:比如了解下Activity活动在安卓中是怎么回事,Intent大概又是怎么一回事等等。不需要了解的很深,只需要有基本概念就够了

最后我们看下我们要分析的对象-MonkeyRunner。MonkeyRunner是一个安卓平台用户界面自动化测试框架,这个框架内部其实是通过多个库协同工作组成的,以下会列出牵涉到的库并标明本人当前分析的该库的对应版本是什么,以免造成不必要的混乱: 

表1-2-1 分析目标的版本列表


作者:天地会珠海分舵 
微信公众号:TechGoGoGo 
微博:http://weibo.com/techgogogo 
CSDN:http://blog.csdn.net/zhubaitian

第1章2节《MonkeyRunner源码剖析》概述:边界(原创)的更多相关文章

  1. 老李推荐:第14章9节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-遍历控件树查找控件

    老李推荐:第14章9节<MonkeyRunner源码剖析> HierarchyViewer实现原理-遍历控件树查找控件   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员 ...

  2. 老李推荐:第14章5节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态

    老李推荐:第14章5节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-查询ViewServer运行状态   poptest是国内唯一 ...

  3. 老李推荐:第14章6节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-装备ViewServer-启动ViewServer

    老李推荐:第14章6节<MonkeyRunner源码剖析> HierarchyViewer实现原理-装备ViewServer-启动ViewServer   poptest是国内唯一一家培养 ...

  4. 老李推荐:第14章3节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer实例化

    老李推荐:第14章3节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer实例化 poptest是国内唯一一家培养测试开发工程师的培 ...

  5. 老李推荐: 第14章2节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-HierarchyViewer架构概述

    老李推荐: 第14章2节<MonkeyRunner源码剖析> HierarchyViewer实现原理-HierarchyViewer架构概述   HierarchyViewer库的引入让M ...

  6. 老李推荐:第14章1节《MonkeyRunner源码剖析》 HierarchyViewer实现原理-面向控件编程VS面向坐标编程

    老李推荐:第14章1节<MonkeyRunner源码剖析> HierarchyViewer实现原理-面向控件编程VS面向坐标编程   poptest是国内唯一一家培养测试开发工程师的培训机 ...

  7. 老李推荐:第8章7节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-小结

    老李推荐:第8章7节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-小结   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化测试,性 ...

  8. 老李推荐:第8章5节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行测试脚本

    老李推荐:第8章5节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行测试脚本   poptest是国内唯一一家培养测试开发工程师的培训机构,以学员能胜任自动化 ...

  9. 老李推荐:第6章8节《MonkeyRunner源码剖析》Monkey原理分析-事件源-事件源概览-小结

    老李推荐:第6章8节<MonkeyRunner源码剖析>Monkey原理分析-事件源-事件源概览-小结   本章我们重点围绕处理网络过来的命令的MonkeySourceNetwork这个事 ...

  10. 老李推荐:第8章1节《MonkeyRunner源码剖析》MonkeyRunner启动运行过程-运行环境初始化

    老李推荐:第8章1节<MonkeyRunner源码剖析>MonkeyRunner启动运行过程-运行环境初始化   首先大家应该清楚的一点是,MonkeyRunner的运行是牵涉到主机端和目 ...

随机推荐

  1. 【iOS】Swift扩展extension和协议protocol

    加上几个关节前Playground摘要码进入github在,凝视写了非常多,主要是为了方便自己的未来可以Fanfankan. Swift语法的主要部分几乎相同的. 当然也有通用的.运算符重载.ARC. ...

  2. zoj 3820 Building Fire Stations(树上乱搞)

    做同步赛的时候想偏了,状态总是时好时坏.这状态去区域赛果断得GG了. 题目大意:给一棵树.让求出树上两个点,使得别的点到两个点较近的点的距离最大值最小. 赛后用O(n)的算法搞了搞,事实上这道题不算难 ...

  3. JS它DOM

    DOM:document object model.文档对象模型.它主要由许多节点.而基于JS对象的一切视角,DOM核心是节点对象和操作方法的属性.从下面三方面来介绍DOM. 一.节点查找与操作 这部 ...

  4. js在方法Ajax请求数据来推断,验证无效(OnClientClick=&quot;return Method();&quot;),或者直接运行的代码隐藏

    function CheckAdd() { var flag = true; $.ajax({ cache: false, async: false, url: "/ajaxpage/get ...

  5. BZOJ 1009 HNOI2008 GT考试 KMP算法+矩阵乘法

    标题效果:给定的长度m数字字符串s.求不包括子s长度n数字串的数目 n<=10^9 看这个O(n)它与 我们不认为这 令f[i][j]长度i号码的最后的字符串j位和s前者j数字匹配方案 例如,当 ...

  6. CodeForces 441 A. Valera and Antique Items

    纯粹练JAVA.... A. Valera and Antique Items time limit per test 1 second memory limit per test 256 megab ...

  7. Linux内核分析(二)----内核模块简介|简单内核模块实现

    原文:Linux内核分析(二)----内核模块简介|简单内核模块实现 Linux内核分析(二) 昨天我们开始了内核的分析,网上有很多人是用用源码直接分析,这样造成的问题是,大家觉得很枯燥很难理解,从某 ...

  8. JSF+EJB+JPA总体思路

    前言: JSF+EJB+JPA 其实我并没有想象中的难,只是想做好,建立在正确的地方应用,真正的困难. 良好的技术,在错误的地方做应用,这是唯一能够被垃圾. 用. 重量级企业应用能够使用这个主要的3层 ...

  9. IntelliJ IDEA于Make Project时报:子字符串不是票面金额的结束、非法的表达式显示启动

    IntelliJ IDEA于Make Project当系统提示很多错误,什么孩子不是字符串票面金额的结束.非法的表达式显示启动-- 解决方法是改变File Encoding,更改方法:File > ...

  10. 波折yosemite下载过程

    已经知道Yosemite正式宣布了这一消息,为了尽快有效地使用该系统尽可能.上学前把一个新的硬盘驱动器准备就绪-但不幸的是,我不知道是谁动手当天学校欠网关停电,我没有强迫受害者上课听老师讲废话(这是什 ...