Android 自动化测试初探

开个文研究自动化测试。前期先用来搜集各种概念资料

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). 制定测试框架。比如我们是在模拟器上执行测试过程,还是在真机上。整个测试是如何开展起来的,测试的结果如何通知等等。
   
  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值