Testing Is the Engineering Rigor of Software Development

翻译 2015年07月11日 07:23:08

Testing Is the Engineering Rigor of Software Development

Neal Ford

DEVELOPERS LOVE TO USE TORTURED METAPHORS when trying to explain what it is they do to family members, spouses, and other nontechies. We fre- quently resort to bridge building and other “hard” engineering disciplines. All these metaphors fall down quickly, though, when you start trying to push them too hard. It turns out that software development is not like many of the “hard” engineering disciplines in lots of important ways.
Compared to “hard” engineering, the software development world is at about the same place the bridge builders were when the common strategy was to build a bridge and then roll something heavy over it. If it stayed up, it was a good bridge. If not, well, time to go back to the drawing board. Over the past few thousand years, engineers have developed mathematics and physics they can use for a structural solution without having to build it to see what it does. We don’t have anything like that in software, and perhaps never will because software is in fact very different. For a deep-dive exploration of the comparison between software “engineering” and regular engineering, “What is Software Design?”, written by Jack Reeves in C++ Journal in 1992, is a clas- sic.* Even though it was written almost two decades ago, it is still remarkably accurate. Reeves painted a gloomy picture in this comparison, but the thing that was missing in 1992 was a strong testing ethos for software.
* http://www.developerdotstar.com/mag/articles/reeves_design.html
166 97 Things Every Programmer Should Know

Testing “hard” things is tough because you have to build them to test them, which discourages speculative building just to see what will happen. But the building process in software is ridiculously cheap. We’ve developed an entire ecosystem of tools that make it easy to do just that: unit testing, mock objects, test harnesses, and lots of other stuff. Other engineers would love to be able to build something and test it under realistic conditions. As software devel- opers, we should embrace testing as the primary (but not the only) verifica- tion mechanism for software. Rather than waiting for some sort of calculus for software, we already have the tools at our disposal to ensure good engineering practices. Viewed in this light, we now have ammunition against managers who tell us “we don’t have time to test.” A bridge builder would never hear from his boss, “Don’t bother doing structural analysis on that building—we have a tight deadline.” The recognition that testing is indeed the path to repro- ducibility and quality in software allows us as developers to push back on arguments against it as professionally irresponsible.
Testing takes time, just like structural analysis takes time. Both activities ensure the quality of the end product. It’s time for software developers to take up the mantle of responsibility for what they produce. Testing alone isn’t sufficient, but it is necessary. Testing is the engineering rigor of software development.

(Development)Software Engineering:Theory and Practice

(Development)Software Engineering:Theory and Practice 看来我很容易忘记面向对象中的很多概念.参看很多概念书,规...
  • dyqq12
  • dyqq12
  • 2009年05月14日 00:24
  • 336

Software Engineering--A Practition's Approach 软件工程

下载地址:Part01: http://d.download.csdn.net/down/520811/LittlePushPart02: http://d.download.csdn.net/dow...
  • LittlePush
  • LittlePush
  • 2008年07月01日 01:19
  • 284

软件工程(Software Engineering,简称为SE)

      软件工程(Software Engineering,简称为SE)是一门研究用工程化方法构建和维护有效的、实用的和高质量的软件的学科。它涉及到程序设计语言,数据库,软件开发工具,系统平台,标...
  • zjp8023
  • zjp8023
  • 2008年01月02日 21:42
  • 1210

Rapid Software Testing【by James Bach】

When someone tosses you a program and says "you have one hour to test this" can you do it? Are you c...
  • dokieyang
  • dokieyang
  • 2012年06月17日 11:07
  • 1305


本文将向大家介绍软件工程研究领域最顶级(最牛X)的两个期刊,分别是IEEE Transactions on Software Engineering (TSE)和ACM Transactions on...
  • LoveLion
  • LoveLion
  • 2014年02月09日 23:12
  • 22295

Adt-Bundle v22.3.0升级到v23.0.7时出错

最近想把Adt-Bundle  v22.3.0升级一下,结果发现用help->Install New Software在线升级会报错: Cannot complete the install beca...
  • yzpbright
  • yzpbright
  • 2015年08月25日 21:24
  • 2136

Software Testing: Testing Across the Entire Software Development Life Cycle

版权声明:原创作品,允许转载,转载时请务必以超链接形式标明文章原始出版、作者信息和本声明。否则将追究法律责任。http://blog.csdn.net/topmvp - topmvpBusinesse...
  • topmvp
  • topmvp
  • 2008年11月21日 22:27
  • 481


 一、自动化测试类:1、软件自动化测试:引入、管理与实施Automated Software Testing Introduction,Management,and Performance2、软件测试...
  • gracestoney
  • gracestoney
  • 2008年10月23日 21:32
  • 2684

Software Engineering is NOT an Engineering

by JOKER on 2013/06/02 周六把《梦断代码》(Dreaming in code)看完,一直在思索这本书的主题是什么,想了半天也没有头绪。翻到书一开始的《作者的话》,看到这...
  • xuehaiwuya_1
  • xuehaiwuya_1
  • 2014年08月18日 21:26
  • 236

品味 Systematic Software Testing (一)

作者:余正洋Systematic Software testing 一书是Rick D. Craig和Stefan P.Jaskiel 所著。书中提出了一套系统的测试的方法,这个方法是作者在实践当中得...
  • rogeryu
  • rogeryu
  • 2006年11月04日 19:02
  • 1028
您举报文章:Testing Is the Engineering Rigor of Software Development