测试是浪费时间,我的程序肯定没问题

尽管关于测试驱动开发(TDD)的书和文章有成百上千之多,仍然有很多人从未感受过测试的强大力量。

之所以不愿意去写测试程序不外乎有以下几个理由:

  1. 太费时间。
  2. 不值得。
  3. 我很懒。
  4. 我不知道如何做。
  5. 我知道我的程序好用,我运行过一次,没出问题。
  6. 我是超人,我从来不犯错误。

除非你的答案是6.(如果是这样,我很羡慕你),否则,你应该继续读下去。

让我们从一个简单的例子开始。就说你要写一个Email地址校验程序。

你也许会使用正则表达式,或手工实现每个字符的对比,来完成这个任务。

现在你想验证一下你的代码是否有效。你会怎么做?你可以手工输入不同的值来验证它是否符合你的要求,结果你就测试了像下面的这些东西:

foo
foo@bar
foo@bar.baz
...

如果你要改变/调整校验算法会发生什么?你需要把之前所有的过程全部重复一遍,把每个值都再输入一遍,看看校验的结果。如果让计算机自动的帮你校验这些是不是会更好些呢?

通过把测试过程自动化,你可以在任何时候对程序进行任何遍次的测试。这不仅仅在以后会节省你大量的时间,而且会增加你的自信心,因为每次当你感觉到程序可能出错时,只要运行一下你的测试程序,看看测试结果就行了。

现在设想一下你正在编写一个更加复杂的程序,比如XML解析器。

你不可能编写出解析器后不去测试它,问题是,你如何测试它?通常,你会创建一个XML样板文件,把它输入解析器里,手工检查解析的结果。当你看到解析器按照要求输出了你期望的结果后,你确信你完成了任务,解析器没问题。

问题就在于如果你发现了一个Bug。那你就需要去修改你的代码,再验证一次它是否好用。可是我们程序员都是一群懒人,我们会只测试我们遇到的这个Bug,几乎从来不会去测试解析器的其它部分。这会产生什么问题呢?你能确保没有把什么东西改坏?

当你写了单元测试程序后,这个工作流程会变的怎样?

首先,你已经对程序进行过测试,之前你必须对每个函数进行手工的测试,手工的检查输出结果。如果这种事情你只需要做一次,那也没什么了,但当有东西出错时,你不想一遍一遍的重复做这个事情,没有人喜欢来回重复的做相同的事情,特别是无聊的事情。

另一种情况,你为你的解析器里的每个功能都写了自动测试程序。在这个例子中,你已经测试过你的程序,对这个过程你并不陌生。你需要做的是把手工的检查改为assertions,它们会为你自动测试程序。

当Bug出现时,巨大的变化发生了。

如果没有自动化测试,你必须手工的检查所有的东西来确保你在修正一个Bug时不会引入其它的错误。当有数个Bug出现时,你会变得极不耐烦,你开始

不再检查其它部分的代码,只关注你的这个Bug。但假如你为程序写好了自动化测试,你唯一要做的就是点击一次按钮,让所有的测试程序运行起来,你马上就能
看到测试结果,几乎不需要在其它任何事情。

当有了测试程序后,修改Bug是怎样进行的?

首先,你需要重现这个Bug。无论如何,在你修改前,你必须要认定这个Bug是否真实的存在。如何做到这些?你要写出一个测试用例来重现这个bug,这个必须要在你做任何的修改这个bug的工作之前完成。

如果这个bug不能重现,问题就可能出自其它地方,如果不能用自动化测试来重现这个bug,你可能在错误的地方修改了这个bug,很可能改坏了你的程序。当你写出测试程序,你必须先运行它确保它会失败。如果测试没有失败,什么地方可能出了问题,你没能正确的重现它。

当你修改了这个Bug,你也有了针对它的测试程序,你可以立即发现这个bug是否还会出现。

当你这时又发现另外一个bug时该怎么做?

相同的做法。写一个测试程序,重现这个bug。即使你没有时间来立即修正这个bug或者这不是个致命的bug,你也应该有个能够让它重现的测试程序,当日后你回来解决这个问题时,你就能知道该做什么了。

来源:51CTO

时间: 2024-09-29 04:07:09

测试是浪费时间,我的程序肯定没问题的相关文章

测试是一件浪费时间的事吗?

让我们详细地说明 作为开发人员,我们都知道我们应该测试我们的代码.我们应该写单元测试,但这也通常是我们发现没时间时跳过的第一步. 作为团队的领导者或者管理者我们都知道测试是必要的,但是当截止日期临近的时候,我们倾向于减少测试,而把更多的重点放到编码上. 这样看测试领域似乎很紧张.我们都知道测试对我们是有利的,但是一旦项目面临压力时我们就不再测试了. 我们为什么测试? Edsger W Dijkstra 说过:测试可以用来找到显式的缺陷(bug),但是无法显示潜伏的软件缺陷(bug). 这意味着测

《众妙之门——JavaScript与jQuery技术精粹》——1.8 特定于浏览器的代码就是浪费时间,试试库文件

1.8 特定于浏览器的代码就是浪费时间,试试库文件 在我进行网络开发之初,利用document.all还是document.layers来访问文件还存在很大的争议.我当时选择了document.layers方式,因为我喜欢将层作为当前层文件的思想(我为此还编写了大量document.write方法).这两种方式后来都被淘汰了.Netscape 6问世以后,它仅支持W3C DOM模型,我非常喜欢这种方式,但是终端用户并不在意这些,他们看到的只是这种浏览器没有正确显示大部分互联网内容(实际上是显示了

测试 XML Web 服务和应用程序(自MS)

web|xml|程序 测试 XML Web 服务和应用程序 注意:在公开发布的 Visual Studio.NET Beta 2 中可能不提供某些功能. 随着松散耦合的计算和 XML Web 服务的不断增长,各个组织越来越需要能够提供成功解决方案的工具,并且这些解决方案可以满足全球用户的不同需要.Visual Studio.NET 不仅为构建 XML Web 服务和应用程序提供了业界领先的工具,而且其中包括的某些重要功能可以用来测试这些应用程序的可扩展性.性能和功能完整性.应用程序中心测试 (A

如果你做的事情毫不费力,就是在浪费时间

原文出处: 钛媒体   欢迎分享原创到伯乐头条 曾担任苹果副总裁的Roizen女士提出了八条职业原则,其中关于创业她说:很多怀有雄心壮志的人力求消除工作中的困难,顺利到达梦想彼岸,这是不对的.现实情况是,即使你真的轻松成功,你也会感到无聊.所以,找点困难的事情做吧.创业的美妙之处正在于其艰难.没有安全可言,没有稳定的收入,你必须完全靠自己.   注:本文作者Heidi Roizen系DFJ Venture合伙人,曾任苹果公司主管开发者关系的高级副总裁,女性创业者.   Heidi Roizen女

网赚述说:浪费时间体力网赚不如抓紧时间分析网赚

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 网络中还不如债券市场,债券市场赚钱与没有赚钱还是28开,而网络中赚钱的与没有赚钱的简直是不成比例,赚钱的不到百分之零点5,不赚钱的占了百分之99点5,因为百分之99的人都是停留在点击,挂机,邮件等等不赚钱行业中,只有极少数的人冲出了这个魔圈,最终走向了成功的网赚. 现在上搜索引擎随便搜,体力网赚都占了百分之九十以上,最有影响力的无非就是一些点

不要浪费时间写完美代码

一个系统可以维持5年,10年,甚至20年以上,但是代码和设计模式的生命周期非常短,当对一个解决方案使用不同的方法进行迭代的时候,通常只能维持数月,数日,甚至几分钟的时间. 代码重要性区分 随着对代码是如何改变的研究,致力于代码修改艺术的人发现了一个代码库的规律曲线.每个系统都有很多从未改变的代码.但是也有小部分非常重要且有用的代码一次又一次的改变,经过了多次重构和重写. 当你对一个系统,问题域,或者架构方法越来越熟悉的时候,就更容易发现和预测哪些代码会经常修改,哪些代码不会被修改,即区分重要代码

不要浪费时间去写所谓的完美代码

一般而言,一个系统能用 5 年.10 年,甚至 20 年以上.但是某特定代码行以及某特定设计则往往比较短:当我们使用了不同的解决方法,其生命周期可能就只有几个月.几天,甚至是几秒种的时间. 有的代码就是比其他代码更重要 通过研究代码如何随时间变化,Michael Feathers 确定了代码库的功率曲线.每个系统都有代码,通常而言里面的很多很多代码,一次写好之后就永远不会变了的.但是还是有少量的代码,包括最重要和最有用的代码,会被一遍又一遍地改动.重构甚至是重头开始重写. 随着你对系统.问题领域

葛优:做个浪费时间的富人

生活 "现在,我一年就拍一部戏,其他时间就在沙发上呆着.我要是去拍电视剧,一年得挣多少钱?可我不愿意这么干.我觉得吧,那些有钱却没闲的人,他们不是自由的,不算真正的富人,哥们儿敢浪费时间,是一富人吧?" --葛优 他有一颗中国最著名的光头,一张被所有人认识的很中国的喜剧面孔. 8月底,我们将在银幕上再见到这张面孔.不过这一次,他留起头发,演一个患有严重焦虑症的倒霉蛋,围绕着他的所有关系都很糟糕:要债的债主,欠钱的朋友,肥胖神经质的妻子,朋克怪异的儿子,他自己头部也出现了一个阴影--又一

网站推基因配对专家称浪费时间金钱

摘要:现代人生活节奏加快,吃饭选快餐,出门就驾车,连结婚这种人生大事,有人也选择"闪婚".欧美一些约会网站推出基因配对服务,通过检测基因帮助会员寻找速配的另一半,缩短寻觅真爱过程,找到幸福捷径.欧美约会网站推出寻找伴侣"捷径" 忘记在线约会吧,寻找理想伴侣的最新工具是DNA配对. 现代人生活节奏加快,吃饭选快餐,出门就驾车,连结婚这种人生大事,有人也选择"闪婚".欧美一些约会网站推出基因配对服务,通过检测基因帮助会员寻找速配的另一半,缩短寻觅真爱