软件测试不是一个功能

今天在工作中我对一个同事说,PyDev 2.5.0 现在对TDD(测试驱动开发)提供了很酷的支持了。我并不是一个对TDD很痴迷的倡导者,对其它事物也一样,但仍不免激起了一场讨论。这个家伙,让我们暂叫他约翰,说:“在开发一个功能时TDD可以节省开发的时间,但有时候一个功能需求,要求的是如此的紧急,我们要尽可能快的交付这个功能,软件测试放在以后再说。”

诸如这样的话让我欲哭无泪。

我极力解释说,没有测试,发布的代码会存在不可想象的风险。就像这个功能非常的重要一样,你的产品也会因此受到严重的破坏。尤其在使用Python语言时,很少有问题会在编译期显示出来(一个简单的书写错误就会导致运行期的一个AttributeError,甚至更遭)。我认为这种风险过高而不可接受。约翰回复说也许你说的是对的,但是否值得冒这样的风险,这种权利把握在项目经理手里。如果你使用TDD,实际上你是剥夺了他认为可以“放弃软件测试以后在说”的权利。“

说实话,对于这样的逻辑观念,我不知道如何回答。不错,老板有权利决定是否需要测试我的程序,但是…他应该这样吗?一个建筑工人被告知先把砖块码起来,灰泥以后再补,这样合理吗?

软件开发如砌砖墙

在我读过的书本中显示,这种想法是错误的。软件测试并不是一个功能。它不是一个由客户提出来的需求。它不是”最好测一下“。

它是一个软件的任何一段代码的固有组成。

不错,你可以开发出不经测试的软件。它甚至可以运行,就像是摞起来的砖块看起来也是一堵墙。但如果遇到大一点的风,它有可能就会砸到某人的头上。

你会对持这样观点的人做怎样的回复?

分享这篇文章:
[英文原文:Testing is not a Feature ]

5 Responses to 软件测试不是一个功能

  1. Null says:

    TDD不是你说的灰泥,而是那条铅垂线,是质监,是验收.没有TDD,特别是那些很小但是很紧急的改动,没有TDD也没有问题,只要你有其他方法保证它是对的.对客户来说,现在卡住的这个case能跑过去是最重要的,你的测试能不能跑跟业务跟钱没有关系.不分轻重欲哭无泪的是客户,吃亏的是你.

  2. John says:

    The point is I don’t care. lol

  3. sun says:

    产品先上线,拿到钱才是硬道理,国内现状。

  4. stopit says:

    这个需要根据实际情况确定,有时候客户需要的是时间~~

  5. 闻花 says:

    文中的point 的确不对
    TDD 不是测试,而是一种设计方法,质量只是其额外的一个好处
    TDD 换成UT 就对了

    不管是TDD 还是UT,不是程序员不想使用,而是他们没有相关的技术水平,也不去学习,我认为还是一定技术门槛带来的。和国内大多是低附加值加工厂,国外是设计和品牌企业一样。

发表评论

电子邮件地址不会被公开。 必填项已用*标注