83. 测试是软件开发的工程严谨度

测试是软件开发的工程严谨度

        当软件开发人员尝试向他们的家人、配偶或者其他不懂技术的人解释自己做什么时,喜欢用一些令人痛苦的比喻。我们经常尝试用桥梁建造或者其它的“硬”工程学科。然而,如果我们过度使用这些比喻,它们很快就就一沓糊涂了。结果是软件开发在很多很重要的方面与其它的“硬”工程学科并不相同。
        与“硬”工程相比,软件开发对于桥梁建造者来说,就像是建一座桥,然后增加它的负重,如果能承受住,那么就是一座好桥,如果不能承受,好吧,重新画一个。在过去的几千年里,工程师们已经发展出来可以用于结构化的解决方案而无需建造出来观看的数学和物理学科。在软件中我们没有这些,也许永远不会有,因为软件是不同的。深度地比较一下“软件”工程和一般工程,Jack Reeves 在1992年的C++ Journal中发表的“什么是软件设计?”是经典之作。尽管是二十年之前的作品,但现在看来仍然非常精确。他为这个比较描述了一幅惨淡的景象,但在1992年时,缺少的东西是软件中强烈的测试意识。
        测试“硬”的东西很困难,因为你只有在建造出来了才能测试,这对于用于检查的猜测性地构建是不可行的。但软件的构建成本却是令人难以置信地便宜。我们已经开发了一整套工具、生态系统来让它更容易:单元测试,模拟对象,测试框架及其它东西。其它的工程师一定会喜欢构建一些东西并在真实条件下测试。作为软件工程师,我们应该拥抱测试,将其作为首要的(不是惟一的)软件检查机制。我们已经有了可以使用的确保优秀的工程实践的工具,而不用等待某件软件中的微积分理论。从这个角度看,我们现在有了与告诉我们“没有时间测试”的管理人员的资本。桥梁建造人员永远也会从他们的上司那里听到这些话:“不要浪费时间做结构化的测试了,最后期限快到了。”测试是软件可重复性和质量的真实方法的认识,能让我们开发人员打退这种不负责任的论调。
        测试需要时间,正如结构分析需要时间一样。这两种行为都能确保产品的质量。是时候让软件开发人员对他们所生产的产品负责了。单单测试往往不是充分的,但一定是必需的。测试是软件开发的工程严谨度。

原文:Testing Is the Engineering Rigor of Software Development by Neal Ford

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值