单元测试这个东西很神奇,最早是从国外引入的,世面上也存在了很多开源的单元测试软件,那么它到底有什么优缺点呢?下面就列出来瞧瞧看看,并附上一些我自己的看法。
优点:
1.降低开发错误的反馈回路,减少重复工作,提升开发效率。例如服务器的重启啊之类的。
这个确实,大优点之一,我相信也是大多数程序要写单元测试的初衷。
2.提升代码质量,写出更模块化、结构化的代码,减少BUG.
所谓提升代码质量,这个也是TDD所一直鼓吹的东西。见仁见智吧,如果你写出更模块化,更结构化的代码非得通过单元测试的话,那么你就去干吧。
3.重构时保证功能的利器。
这个是单元测试最大的优点所在,但若你的系统并不存在什么大的重构的话,那也没什么存在的必要,还是那句话,什么事情要辨证的看。
4.让代码更容易维护,通过单元测试也可以摸索出整个系统的框架,单元测试相当于代码的规格书。
这点我是持怀疑态度的,单元测试只是保证了每个单元模块的功能点,是一个个孤立的点,看单元测试也只是管中窥豹,并不能完整的看清楚系统。若说是规格书,javac干嘛去了,别把什么事都扯上。
缺点:
1.学习陈本:随着软件构建越来越复杂,单元测试的工具也随着增多,学习是一个很大陈本。
2.开发陈本:写单元测试会增加程序员的工作量,不是一点点的工作量,可能是原本功能开发两倍甚至三倍的工作量。
3.推广和运用单元测试需要比较大的投入,而且收效周期较长,只有编写足够过,足够好的单元测试之后,才能得到以上几个优点提到的收益。
那么怎样才能写出好的单元测试呢?
较高的代码重构能力,自身的代码功底要有一定要求,若是无这点保证,单元测试只会沦为一个KPI工具,毫无实际意义,而一个有较高代码功底的人不需要一整套的单元测试。根据自己需要选择性的写单元测试。
那么还有必要写单元测试吗?
个人看法是,这个东西不是二元的,非此即披,对于这个世界上这么多的技术,这么多的概念,特别是国外传进来的很多东西,大家只需要根据自己的情况,选择性的吸收,能提升自己工作技能上的都可以接受,不要人云亦云,从中抓取核心的东西,自己再总结总结就圆满了。我还是一直秉承自己的看法,一切概念,术语都是纸老虎,特别是一些国外的忽悠。这次参加杭州的qcon,特别有深的感受,国外的大师们都在鼓吹概念,国内的大牛们在批判那些国外大师的方法论、术语,很有意思!
对于组织上强推广单元测试的看法?
让工程师自己用脚去选择,程序员是工作在一线的人员,只有他们最了解实际的业务场景,代码复杂程度,若是他们觉得好的东西,他们自己回去吸收,并不需要强推。让工程师去做选择,这个才是工程师文化的核心。
分享到:
相关推荐
Java单元测试Java单元测试Java单元测试Java单元测试Java单元测试Java单元测试
单元测试实施规程 一般流程 可读性不强
(C#语言版)单元测试实例,主要功能包括:(1)输入数据到textbox,以逗号间隔,然后求数组最大值、求和,并将结果显示出来,并针对于数组求最大值函数和求和函数写单元测试代码;(2)连接数据库,写出单元测试代码来测试求...
单元测试单元测试单元测试单元测试单元测试单元测试单元测试
单元测试
白盒测试方法 ,单元测试与白盒测试的区别
单元测试 单元测试单元测试
基于busted单元测试框架的实例开发测试用例,spec目录下是基于busted的测试用例,lua的单元测试很难找,有需要的可以拿走
.Net 单元测试案例
单元测试报告模板,
单元测试之道(Java):使用JUnit进行单元测试。单元测试是提高代码质量的有效手段,但大部分开发人员由于种种原因都不乐意进行单元测试。
在V模型开发中,Tessy主要应用在单元测试和集成测试阶段。单元测试通过运行代码检测出函数中错误,比如算法错误、接口问题等;集成测试则在单元测试的基础上验证单元之间接口的正确性。基于越早发现bug开发成本越低...
C++单元测试三大框架的比较软件测试1、TUT结构框架简单。添加新的测试工作量小;无须注册测试;可移植性好(因其只需两个头文件,就可以完成测试工作);便于装卸;提供接口可以扩展其输出方式等。最大的优点:轻量级,...
现在想想我好像误会他的意思了,他应该是想问我关于单元测试,集成测试以及背后相关的知识,然而当时说到测试,我也只知道 Junit。那么今天就说说开发过程中涉及到的测试以及相关的技术栈。 虽然测试分为单元测试,...
单元测试文档,经互联网下载整理所得。单元测试是软件测试很重要的一部分。
Android单元测试的小例子
单元测试现状 汽车电子嵌入式单元测试 SmartUnit系列产品介绍 SmartUnit Air 智能化单元测试用例设计工具 SmartUnit Rocket 智能化单元测试工具 SmartUnit DDC 动态缺陷检查工具 概述 汽车电子领域等高...
本文档为XX项目的单元测试活动提供测试设计规格及测试用例规格。文档内容包括了需要测试的类、测试使用的模型、针对每个类的测试策略以及所需执行的测试用例等。
单元测试报告 版本:V1.3 文 档 编 号 保 密 等 级 作 者 最后修改日期 审 核 人 最后审批日期 批 准 人 最后批准日期 修订记录 日期 版本 修订说明 修订人 ...
单元测试覆盖率 单元测试覆盖率 单元测试覆盖率 单元测试覆盖率 单元测试覆盖率