开个文研究自动化测试。前期先用来搜集各种概念资料
1. android 官方测试参考
http://developer.android.com/guide/topics/testing/index.html
2. 冒烟测试
http://baike.baidu.com/view/120013.htm
3. 从测试的对象来看,测试分黑盒,白盒。
白盒,我的理解,代码级测试,即是说它需要源码
黑盒,我的理解,产品级测试,即是说它以产品的形态提供测试基础
不管是白盒,黑盒,都可以进行自动化测试。就算是白盒,你也可以有不同的抽象层次。比如你可以针对函数进行测试,也可以针对若干函数组成的模块进行测试。在这种情况下,这个模块就是一个黑盒了。
黑盒测试,那就要模拟人工进行操作。
从测试的深度,我觉得可以分为基础测试和全面测试。
从测试的广度,我觉得可以分为模块测试和集成测试。
也就是说,如果只是想看下项目有没有问题,一般基础测试就可以了。而对于要出货的产品,全面测试就是必需的。同样的道理,对于一般的程序员来说,他只要做好自己的模块测试就可以了,而对于要出货的产品,就必需要集成测试。而程序员在模块测试的时候,也可以分基础测试和全面测试。所以以上两种并不是孤立的。
4. android 提供的junit, monkey, TestCase
, InstrumentationTestRunner,
ApplicationTestCase
5. 测试要测什么?
首先, 功能性测试。模拟一般用户的正常使用过程,cover大部分可能出现的正常过程
其次,压力性测试。模拟在一些极端情况下的软件反应
5.1 功能性测试
我们以触发源的线索来组织测试。触发源类似于中断源,因为有事件发生,才会导致下个状态的出现。不论这个状态是对是错,它们都是由于响应了某些特定的事件而出现的。
我在这里把触发源分为两种。
其一,内部触发源。比如我们在一个activity中,你点击了某个button按钮,那么就会出现相应的情况,去做特定的事。这种触发源来源于activity内部。
其二,外部触发源。相对于内部,是说某些触发源是外部来的。比如说有人发了一个广播,你去接收。或者别人更改了系统的某些设置,对你会造成一定的影响等等。
----------------------------------------------------------------------
以上是一些零散的思考过程。以下做总结:
1. 测试概括起来,就是
(a). 我们要测的产品是什么。这个东西是分层级分类的。对于黑盒测试,我们要测的就是最终的产品形态;对于白盒,我们针对的是某个层级的源码(某个函数,某些函数组成的模块)
(b). 我们要做哪些测试。这就涉及到test case的编写。后面详述
(c). 我们的工具是什么。大的方向,我们的工具可以是人工,或者自动化。小的方向,人工也会有许多辅助的工具;自动化也一样,比如android提供的instrumentation, monkey等等。接下来我们就细化讨论自动化这个方向。
2. 自动化测试与人工测试。 自动化不是万能的,在某些情况下,写测试代码,特别是精确不误判的代码,比人工判断要难得多得多。所以应该因地制宜,那些重复劳动的,很简单就可以实现的,一定要用自动化来做。而有些用人工判断,既不会太费时,又一目了然的,建议还是用人工。
3. 我们针对第1点时提出的三个概括,来逐一分析下自动化测试
3.1 我们要测的产品是什么。首先纠正一个观念,就是自动化测试一定是白盒测试吗?未必。我这里想说的,就是自动化黑盒测试。就是以PC机模拟人工的方式来实现黑盒测试。
3.2 我们要做哪些测试。我们以触发源为线索来组织
(a). 内部触发源。在第四节详述
(b). 外部触发源。
3.3 我们的工具是什么。不同的测试需要用到不同的工具。比如junit, instrumentation, monkey, 图像匹配等等
4. 内部触发源。
4.1 功能性测试
按照一般用户的使用,来走一遍黑盒。
所以就要模拟用户使用。用户能做什么?
(a). 触摸操作
(b). 按键操作
(c). 看
(d). 听
我们在android环境下来看一下
(a). 触屏操作可通过findviewbyId找到对应组件,然后模拟点击事件
(b). 发送模拟按键事件
(c). 目前通常做法是通过值比较来近似判断,或者必要时可以用图像匹配(预存正确结果的图像与测试结果图像做比较)
(d). 没发现好的方式,需要人工判断
4.2 压力测试
没有目的性的(或者有目的性的大爆发)考验程序的承压力性及出错性。
目前能想到的是monkey,后续再更新
5. 解决方案的一般思路
(a). 需要明确我们需要测试的产品是什么,比如我们以最终产品形态做黑盒测试
(b). 选择合适的test case, 工具
(c). 制定测试框架。比如我们是在模拟器上执行测试过程,还是在真机上。整个测试是如何开展起来的,测试的结果如何通知等等。
Android 自动化测试初探
最新推荐文章于 2024-05-26 20:23:23 发布