Android敏捷开发指南(上)
作者:网络转载 发布时间:[ 2012/10/23 9:58:48 ] 推荐标签:
单元测试工具
单元测试是测试驱动开发的主体测试构成,旨在从代码粒度上实现对应用质量的把握,是可维护性代码的核心。其具体粒度大小取决于在代码出现问题后,能在多大程 度上准确定位问题。这也是单元测试大的意义所在。这份意义所带来的是更高的代码可维护性、更稳定的代码可重构性、更便捷的可扩展性。而这一切为稳定结构 变化、减弱代码腐化影响、技术改进所带来的代码变更奠定了良好的基础。
为了实现比较良好的单元测试,需要一系列代码结构优化和测试工具使用的辅助。
在做深入说明Android系统开发结构之前,先来看一下在该平台开发时所常见的工具和相应的优缺点对比,如表1所示。
根据现有经验,我们曾尝试了表1中四种单元测试方法。很难说哪一个方案是好的,在目前的项目实践中,我们联合应用Robolectric和Java JUnit,为了避免Robolectric速度、模拟功能不全和质量检测工具等问题,需要对Robolectric的代码进行修改,并尽量减少对其的应 用。转而通过一些结构上的应用,大量采用Java JUnit测试。
JUnit。鼎鼎大名的Java测试框架,无数应运而生的mock框架支持,使其无论是可用性还是易用性方面在Java领域无人能及。利用JUnit可以实现非常快捷单元测试。也是常见的一种单元测试形式。
Robolectric。这是由Pivotal Labs开发的一套开源的Android单元测试框架。其通过一系列对底层Android元素的替换来实现对原有元素调用的模拟,从而实现脱离模拟器的测 试。非常值得一提的是,在测试服务器请求时,Robolectric的数据模拟和延时发送模拟,给多线程状态下的测试提供了很好的解决方法。
Robotium。 因为其对整体应用的黑盒操作特性,绝大多数技术文章将其作为功能测试工具,因此后文在叙述功能测试时也有提及。但因为其已有代码库,进行测试前需要组合编 译,而且可以完成方法级别的功能测试,因此本文还是将其描述重点在单元测试时和其他工具进行对比说明。但并不等于它是单元测试。
Android JUnit。这是一种常见的单元级别测试。它由Android官方提供,通过虚拟机自身提供的测试接口完成。图3源于Android开发者官网,基本上 阐述了整个测试框架各个组成部分。其中,下面方框中描述的即为框架中基于JUnit的测试部分。可以看到,其通过Android的内部测试包,调用测试 执行模块完成对目标应用的测试。
该测试大的好处是其与Android系统结合紧密,贴近真实环境。但其弊端也正是因为使用大量基于平台的虚拟,导致测试运行速度相对偏慢,影响测试效率。又因为开发过程中,单元测试是大,也是常规的测试,所以这种影响带来的效率降低显得特别严重。
小结
本文我们介绍了移动开发中的常见问题、技术解决方案的基本思路,以及在具体实现中所要涉及的结构化组件和单元测试工作。在下期中,我将继续讲解技术方案的具体实现方法,包括如何通过框架选取实现测试驱动方案,业务行为驱动的功能测试方案、持续集成、部署,以及如何让调试可持续化。
本文选自《程序员》杂志2012年09期http://www.programmer.com.cn/13757/
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11