博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Testing Is the Engineering Rigor of Software Development
阅读量:6922 次
发布时间:2019-06-27

本文共 3011 字,大约阅读时间需要 10 分钟。

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.
*
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.

转载地址:http://bwecl.baihongyu.com/

你可能感兴趣的文章
嵌入式学习方法 嵌入式学习路线
查看>>
全球首个量子区块链系统在莫斯科测试成功
查看>>
2017TEI环太湖电子竞技邀请赛已于日前正式荣誉开战!
查看>>
再谈“ASP.NET网站限制恶意访问”
查看>>
在html中使用css样式的集中方式
查看>>
新生的第一份礼物!深圳大学的通知书包括AR校徽和VR眼镜
查看>>
8Manage 一体化管理系统:解决信息孤岛
查看>>
【元气云妹】一张图了解如何将ECS统一到期日
查看>>
implode() 函数
查看>>
OGG配置
查看>>
net MVC中的模型绑定、验证以及ModelState
查看>>
linux系统挂载windows文件夹
查看>>
【总结——HTTP协议】
查看>>
Oracle12c多租户如何连接到CDB或PDB、CDB与PDB容器切换
查看>>
《X特遣队》看不过瘾?来玩一把同系列VR游戏吧
查看>>
Office Onlin Server部署(第一部分)
查看>>
Nginx从入门到掌握【(第1节(共3节)】
查看>>
菜鸟学Linux 第077篇笔记 mysql logs
查看>>
Shell中SEQ妙用
查看>>
网站SSL安装配置
查看>>