您的位置:首页 > 移动开发 > Android开发

Android 走进单元测试 认知+理解

2016-04-28 17:51 357 查看

前言

在不断的开发过程中,越来越觉得单元测试的必要性。因为之前都是黑盒测试,所以想要对某一模块进行重构时,就得需要再重新测试一遍,真是浪费时间和精力,所以就有必要去学习测试、使用测试对代码进行验证,方便以后的维护和重构。

本篇文章就来介绍测试、单元测试、测试框架等等,先对测试本身有所了解,然后再看测试在编码中的实践。

测试基本概念

测试由来:

很明显,大家都不可能保证自己的代码完全不出Bug,所以,为了提高程序的稳定性,我们有两种方法:

第一种,是 “确证”(verification)。 “确证”是指用正规形式方法或者不那么正规的方法,对程序代码进行推理演算, 以求证程序能达到预先的目的,如 “程序正确性证明”。

另一种方法, 便是测试(testing)。测试是指对程序设置一些输入数据,运行该程序,然后将 得到的结果与期待的结果相比较,看是否相符。

测试的两种类型:

黑盒测试

在黑盒测试中,我们的测试只针对程序的功能说明,而 不管程序的具体实现,即不看程序代码。

它的最大好处是其测试过程不受实现的 潜在影响。不看代码即不会被引导。

第二个好处是其测试数据与实现 无关,实现如有改变,只要功能说明不变,测试就保持不变。

白盒测试

与黑盒测试相反,白盒测试则需要审阅程序代码。

其主要的目的是要产生一些输入 数据,能够测试代码的每个语句(statement coverage)、分支(decision coverage),使得每条路径都能走到,即所谓的”路径完全(path-complete)”。

实践中,对一个系统,或子系统,主要是采用黑盒测试,或曰功能测试。而对模块则黑白皆用。同时,每次修改程序代码后,所有的测试都需要重新运行,这通常称为回归测试。

典型的测试过程

初始化测试环境

调用需测试的单元

收集结果,并与期望值比较

我们一般写单元测试时,大都遵循这么三个步骤。

现在我们了解了测试的基本概念,当然测试本身就是一门学问,这点程度也算是马马虎虎,或有错误,大家指教哈。接下来就是介绍开发相关的测试,即单元测试。

什么是单元测试

详细概念:Wikipedia

通俗讲单元测试就是检查一个函数执行后它的返回结果或者它对系统数据造成的影响(或者其它方面的影响)是否跟你的期望一致,也就是为了证明代码的行为和我期望的一致!

单元测试粒度最小,一般由程序员采用白盒方式来测试,主要测试单元是否符合“设计”。

一般我们在写单元测试时,都会使用单元测试框架来写。那么什么是单元测试框架、和为什么要使用单元测试呢?

什么是单元测试框架

单元测试框架通常是没有作为编译器包的第三方产品,它帮助简化单元测试的过程,在Java世界,我们最常用的是JUnit测试框架。

所以,单元测试框架是一个让我们轻松编写单元测试的东西,是一个简化编码的东西。就像在开发中使用网络框架、ORM框架一样。

推荐阅读:

JUnit单元测试框架的使用

单元测试好处

先看看别人总结的: 写单元测试代码有什么好处

自己目前对于单元测试的好处,现阶段认识,之后熟练运用到开发后再添加进来:

方便重构,重构完代码后跑一遍单元测试就OK了。

提高代码质量,必须要写出可以测试的代码

结语:

那么,对单元测试了解到现在,算是理解了概念。下一篇文章就是 单元测试在Android中的使用

单元测试这么优秀,所以,一定要培养写单元测试的习惯:

坚持在开发中编写单元测试,并把它培养成一种习惯!

写出高效的单元测试,这种能力需要在实践中慢慢积累!

提高对单元测试的认识高度,把它和编码工作同等对待!

参考:

走进单元测试

单元测试及框架:通向JUnit之路

黑盒测试、白盒测试、单元测试、集成测试、系统测试、验收测试的区别与联系
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: