软件测试不是一个功能

fmms 10年前
     <div id="OSChina_News_28222" class="NewsContent TextContent NewsType2">     <p>今天在工作中我对一个同事说,PyDev 2.5.0 现在对TDD(测试驱动开发)提供了很酷的支持了。我并不是一个对TDD很痴迷的倡导者,对其它事物也一样,但仍不免激起了一场讨论。这个家伙,让我们暂叫他约翰,说:<em>“在开发一个功能时TDD可以节省开发的时间,但有时候一个功能需求,要求的是如此的紧急,我们要尽可能快的交付这个功能,软件测试放在以后再说。”</em></p>     <p>诸如这样的话让我欲哭无泪。</p>     <p>我极力解释说,没有测试,发布的代码会存在不可想象的风险。就像这个功能非常的重要一样,你的产品也会因此受到严重的破坏。尤其在使用Python语言时,很少有问题会在编译期显示出来(一个简单的书写错误就会导致运行期的一个<em>AttributeError</em>,甚至更遭)。我认为这种风险过高而不可接受。约翰回复说<em>也许你说的是对的,但是否值得冒这样的风险,这种权利把握在项目经理手里。如果你使用TDD,实际上你是剥夺了他认为可以“放弃软件测试以后在说”的权利。“</em></p>     <p>说实话,对于这样的逻辑观念,我不知道如何回答。不错,老板有权利决定是否需要测试我的程序,但是…他应该这样吗?一个建筑工人被告知先把砖块码起来,灰泥以后再补,这样合理吗?</p>     <p><img class="aligncenter size-full wp-image-3929" title="软件开发如砌砖墙" alt="软件测试不是一个功能" src="https://simg.open-open.com/show/64f00c0073e99c8e1ba1fd2bf27d3ccd.jpg" width="400" height="290" /></p>     <p>在我读过的书本中显示,这种想法是错误的。软件测试并不是一个功能。它不是一个由客户提出来的需求。它不是”最好测一下“。</p>     <p>它是一个软件的任何一段代码的固有组成。</p>     <p>不错,你可以开发出不经测试的软件。它甚至可以运行,就像是摞起来的砖块看起来也是一堵墙。但如果遇到大一点的风,它有可能就会砸到某人的头上。</p>     <p>你会对持这样观点的人做怎样的回复?</p>     <p id="page-note">[本文英文原文链接:<a href="/misc/goto?guid=4958337772068558215">Testing is not a Feature</a> ]<br /> <br /> 本文转载自: 外刊IT评论 <a href="/misc/goto?guid=4958183272158702965" rel="nofollow" target="_blank">http://www.aqee.net/</a></p>    </div>