黑蝙蝠

安卓自动化测试学习笔记

安卓测试框架基础介绍:

 一 、安卓测试框架是安卓开发环境到一个组成部分,它提供了一个测试体系以及许多工具用于帮助你多层次的从单元到整体的去测试你的应用程序的各个方面。

它具有以下几个特点:

1 安卓测试套件是基于junit的。你可以使用单纯的junit去测试那些不调用安卓api的程序,或者使用安卓junit扩展去测试安卓组件。如果你是个安卓测试的新手,建议你从诸如 AndroidTestCase这样的普通测试类开始,然后再渐渐的学习使用那些比较精细复杂的测试类。

2 安卓junit扩展还提供了组件专用的测试类。这些类提供了用于创建mock对象的方法以及用于控制组件生命周期到方法。

3 安卓测试套件是包含在包中的,这一点和普通的安卓应用程序一样,因此你无需重新学习一套新的工具和技术来创建编译测试case。

4 安卓到编译和测试工具可在用于eclipse开发环境中的ADT中获得,其它开发环境也可从命令行获得。

5 在SDK中还提供了mokeyrunner一个用于Python开发测试程序的API。同时也提供了一个命令行工具Monkey,该工具可以随机到向设备发送一系列事件以便对设备进行压力测试。

 

二、下图是安卓测试框架的组成结构图:

下面为对右边到图说一下我的理解。

1 从右图中可以看出测试框架可分为两部分。即进程(process)内、外两个部分。进程内的部分包括被测应用程序Application package、控制运行器InstrumentationRunner和测试包Test package组成。而进程外部则包括了测试工具test tools、Monkey运行器MonkeyRunner、测试案例Test case classes(由组件instrumentation和JUnit组成)以及模拟对象mock objects等。

2 测试的运行过程为:对于右边框架图进程的外部根据其和进程内部的作用又可分为两块。

第一大块:由Test case classes、Inlstrumentation、JUnit和Mock objects等共同组成。这一大块和进程内部是通过进程内部的Test package进行的。上面第三个特点有提到test package是由test case组成的。所以test package做运行的时候就会知道有哪些test case需要进行。然后再再通过instrumentation和被测程序Application package交互完成case的执行。

第二大块:由MonkeyRunner以及Test Tools共同组成,这一块和前一块的不同之处在于,这一块是直接通过InstrumentationTestRunner和被测程序Application package进行交互从而完成测试目的的。

3 从上面可以看出测试程序最终都需要和Instrumentation进行交互,再由Instrumentation和被测程序交互才能完成测试到目的。并且无论Test package还是Test tools他们本身都包含了需要具体执行的case。所不同的是Test package是在程序内部,而Test Tools是做程序进程外部的。外部的Test case classes和Mock objects虽然是被划分在进程外部的,但却正是他们组成了Test package。而另一方面Test Tools和Mokey runner虽然是做被测程序进程外部的,但是还是需要通过和进程内部的InstrumentationTestRunner进行交互告知才能使外部的测试需求得到执行。至于这种交互是通过何种办法达到的则需要查看源码才能清楚,但可以肯定的是这种方法肯定是和进程间通信的方法相关的。

posted on 2012-05-14 10:18  黑蝙蝠  阅读(528)  评论(0编辑  收藏  举报

导航