实践单元测试(2)

我知道这个项目bug很多,无法按时完成,即使老板把我炒了也是应该的。曾经有一个做单元测试的机会放在我面前,我没有珍惜,等到后来项目雪崩了才后悔。如果上天能再给我一次机会,我会对老板说:我要做单元测试!如果一定要在单元测试上加个日期,我希望是一直。

...

在这里我并不是想说该怎么样去进行单元测试,既然我们无法规定该如何编写产品代码去实现需求功能,同样也不能要求开发人员该如何编写测试代码,甚至是否要编写UT。

劝服项目经理在项目中实施单元测试更是难上加难,因为单元测试对PM来说往往意味着需要更长的开发周期,更多的成本投入,而且按照传统的方式一样也能完成项目,赚到钱。于是面对着紧张的工期,在项目中拍板实施单元测试的确需要魄力和权衡。

但正是这样的理解误区导致了UT在国内难以推广,我认为对于整个开发周期而言,单元测试可以缩短开发时间,提高产品质量,起到降低成本和规避风险的作用。下面我们看看在代码编写过程中都把时间花在哪了:

1、学习和阅读代码:对于项目组的新成员或着是当使用别人编写的服务时,往往需要阅读他人的代码,UT提供了最佳示例,可节省学习时间和成本。

2、编写产品代码:无论是否实施UT,这都是必须的。

3、修改产品代码:在未引入UT时,产品代码的bug往往要等到质量部门或这是客户试用时才能发觉,更甚至是到系统运行一段时间后才会出现,当然UT并不能完全避免bug的产生,但是能够帮助我们尽早的发现bug,及早解决问题,往往可以节约开发时间和成本。

4、重构:这点小项目就谈不上了,但是对于大项目,没有UT也敢说进行重构的确是需要超人的勇气!我更倾向于认为没有实施UT的项目是不可重构的。

不过我也没有参与过全程实施单元测试的项目,上面的话也是一番空讲,期望您的意见。

时间: 2024-09-30 23:55:36

实践单元测试(2)的相关文章

实践单元测试(3)-Using NUnit

NUnit是.net平台上使用得最为广泛的测试框架之一,本文将通过示例来描述NUnit的使用方法,并提供若干编写单元测试的建议和技巧,供单元测试的初学者参考. 继续下文之前,先来看看一个非常简单的测试用例(TestCase): 1 [Test]2 public void AdditionTest()3 {4 int expectedResult = 2;5 6 Assert.AreEqual(exptectedResult, 1 + 1);7 } 你肯定会说这个TestCase也太白痴了吧!这也

实践单元测试-Using NUnit大纲

经过这段实践对NUnit和VSTS的研究和尝试,发现自己更喜欢和适合测试驱动开发(TDD)这种编程方式,code by intention的编程方式实在是令人愉悦,感谢linkin一直来的思想熏陶. 接下来打算一个具体项目中进行单元测试的实践,打算把这个实践过程记录下来,先post出大纲:

自动化单元测试的实践之路

自动化单元测试并不是什么新鲜事物,它应该是团队持之以恒的事情,可能有很多团队知道如何去做,但是还做得不够好:还有不少团队不知道如何去做,甚至有一些旧系统还不敢去重构,还在坚持着Java中的main方法调用的方式来执行,在漫长等待构建结果. 本文主要讲基于Java项目如何做自动化单元测试的实践. 1 是否值得 关于单元测试的意义,详细参考stackoverflow这篇文章: http://stackoverflow.com/questions/67299/is-unit-testing-worth

Nunit单元测试实践

项目中经常遇到这样的问题,写好的模块,由于需求的变更,数据库字段进行了修改,逻辑也有些变更,于是乎,在一大堆代码修改后,进行运行界面开始测试.无奈一次不可能写对所有的逻辑,或者连字符都拼错.尤其是做B/S系统的时候,调试好一个功能,往往花费你大量的时间.而且,有更改的话,还要重来一遍,如果遇上些关联关系,调试测试就更加复杂了.并且,在项目做了N个模块后,又修改了一个功能,说实话,天知道其他逻辑是否产生BUG了没,呵呵. 所以,引进单元测试还是很有必要的,合理使用,还是很能够改进代码质量.看似CO

自动化单元测试实践之路

自动化单元测试并不是什么新鲜事物,它应该是团队持之以恒的事情,可能有很多团队知道如何去做,但是还做得不够好:还有不少团队不知道如何去做,甚至有一些旧系统还不敢去重构,还在坚持着Java中的main方法调用的方式来执行,在漫长等待构建结果. 本文主要讲基于Java项目如何做自动化单元测试的实践. 1 是否值得 关于单元测试的意义,详细参考stackoverflow这篇文章: http://stackoverflow.com/questions/67299/is-unit-testing-worth

《AngularJS深度剖析与最佳实践》一2.12 单元测试

2.12 单元测试 我们在第1章中已经写过两个单元测试(unit test)了,这里我们简单讲一下理论知识. 在Angular中,单元测试的概念和传统的后端编程是一样的.也就是对某些小型功能块儿进行测试,保障其工作逻辑正常.单元测试要尽可能局部化,不要牵扯进很多个模块,必要时可进行mock(模拟). 2.12.1 MOCK的使用方式 由于JavaScript语言的动态特性,Mock一个普通对象不需要进行特别处理.比如,如果一个测试函数需要访问scope中的一个变量:name,但不用访问$watc

IOS6.1单元测试持续集成实践

最近项目测试需要,调研并实践了下IOS下单元测试工具和框架.目前比较流行的工具有xcode自带的OCUnit.GHUnit等,我选择的是GHUnit,因为相比OCUnit,GHUnit具有如下优势: 1.开源框架 2.支持重复测试.单一测试.集成测试. 3.断言方法丰富 4.支持持续集成 5.测试类型多样(UI和Command Line) 官方地址如下:http://gabriel.github.io/gh-unit/ GitHub下载地址:https://github.com/gabriel/

单元测试实践的主要问题与解决(1)

本文是我在"第十届中国系统与软件过程改进年会广东会场"所作演讲的整理稿,主要分享单元测试的一些要点.单元测试实践的主要问题,以及如何来解决这些问题. 一.单元测试概述 1.1 什么是单元测试 单元测试,就是针对代码单元的独立测试.为什么需要单元测试呢?这是代码的基本特性决定了的.代码有一个基本特性,就是对数据分类处理. 代码通常会有很多的判定.一个判定,就是一次分类.嵌套的判定,会使分类次数的翻倍. 如果我们在写代码的时候,有一个分类漏掉了,就会产生一个Bug:如果一个分类,虽然写了代

持续集成实践小结[2] —单元测试

前文提到,在UI自动化之外,我们着力探索了如何实施单元测试(unit test) 相对于UI自动化,单元测试方面的实践还是不够充分的,因此,这里也只是小结一下我们的经验 概述 首先明确一下,此处单元测试概念与经典意义有所不同,泛指所有: 由开发工程师编写的,可以在开发本地一键运行的,运行时间在分钟级别的测试用例,用例执行会依赖不多的,但往往也是稳定可靠的外部环境 测试框架一般使用TestNg而不是JUnit,主要原因在于TestNg的 DataProvider 功能很给力,非常适合用例须要覆盖多