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

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

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

83. 测试是软件开发的工程严谨度相关推荐

  1. 软件工程-软件开发的工程思维

    软件工程-软件开发的工程思维 目录 软件工程-软件开发的工程思维 前言 什么是软件工程? 定义 出现的背景 软件工程核心知识 与项目管理的区别 软件工程的目标 为什么需要软件工程 如何做好软件工程:原 ...

  2. 【软件测试】稳定性和可靠性测试在软件开发中的重要性

    软件测试的某些方面经常会在那些刚接触流程的人中造成混淆--例如在稳定性和可靠性测试之间划清界限.两者通常可以互换使用,并且有一个共同的目标,即确保系统可以在选定的时间范围内稳定运行. 在这篇文章中,我 ...

  3. 软件开发生命周期中的设计阶段_测试基础——软件开发生命周期

    今天和大家分享的是软件开发生命周期,主要介绍软件的生命周期和软件的设计模型. 国标(GB8566-88)中将软件生命周期分为8个阶段:可行性研究与计划.需求分析.概要设计.详细设计.实现(包括单元测试 ...

  4. 测试基础---软件开发生命周期

    今天和大家分享的是软件开发生命周期,主要介绍软件的生命周期和软件的设计模型. 国标(GB8566-88)中将软件生命周期分为8个阶段:可行性研究与计划.需求分析.概要设计.详细设计.实现(包括单元测试 ...

  5. 测试分类-软件开发阶段的各个测试

    大家好,我是十一. 还记得我们上篇中的测试分类图吗?其中有一部分是"按软件开发阶段划分",不记得没关系,这里我截了图出来,大家直接看图吧. 这个图呢就是我们这篇所要讲解的内容.主要 ...

  6. 软件开发丨关于软件重构的灵魂四问

    在软件工程学中重构就是在不改变软件现有功能的基础上,通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性. 摘要 在本文中,您会了解到如下的内容: 先添加新 ...

  7. 软件开发公司管理手册 (下)

    软件开发公司管理手册  (下) 所有版权保留 lu_yi_ming@sina.com 2003.9-2004.3 (第三版) 8. 组织人力 组织人力包括部门的设立与调整,以及中层管理人员及普通员工的 ...

  8. 豆瓣9.1分:软件开发的201个原则

    给中国软件工程师的寄语 (节选) 致我的兄弟姐妹们: 和你们一样,我的职业生涯始于软件工程师,那是1975年,将近半个世纪之前.我认为我们在时间和国家方面的差异相当微不足道.所以,我像和我的朋友.我的 ...

  9. 引用 软件开发公司管理手册

    引用 uvsoftlifeng 的 软件开发公司管理手册 一.动态平衡与发展 公司创办的热情.首轮机会过去后,面对经营中不断出现的诸多问题,经营者的想法会发生很多变化,会发现可以导致公司走向衰落甚至垮 ...

最新文章

  1. 实例化servlet的几种方式
  2. 最新建账年(over partition by)的研究
  3. mapbox 导航_狂甩不掉,骑行最稳手机支架!一体式安装太方便,秒变单车导航仪...
  4. 教师节 | 程序员都这么玩,你敢挑战吗?
  5. Java有哪些常用的转换类,JavaSE——常用类、类型转换
  6. UOJ276 [清华集训2016] 汽水 【二分答案】【点分治】【树状数组】
  7. 甲骨文Java Archive
  8. dsp 链接命令文件的写法
  9. 遗传算法C语言实现以及思路详解简单易懂
  10. 【源码】手把手教你用Python实现Vivado和ModelSim仿真自动化
  11. java解析axure原型rp文件_AxureRP原型制作中在线文件的存储方案
  12. fft和freqz的区别
  13. 计算机考研各科时间安排,计算机考研专业课复习全程的时间安排
  14. Access键盘快捷键大全(一)
  15. 李清照《声声慢》欣赏(转载)
  16. 量化投资_期货日内交易的波动率思考
  17. 如何将华为云服务器重做系统并保留其中的指定数据
  18. 不一样的视觉盛宴,Python实现3D地图
  19. 中国移动5G专网运营体系:一支队伍、一个平台、一把钥匙
  20. PR模板如何使用?Premiere模板如何替换图片、视频及文字的PR模板使用教程

热门文章

  1. 计算机网络 华南理工大学期末重点 第二章 物理层 谢希仁
  2. 如何将多个文件夹重命名
  3. 光电子学教材 马养武
  4. js制作的炫酷3D太阳系行星运行效果
  5. 【Flutter实战】六大布局组件及半圆菜单案例
  6. [转载]深入理解Android系统网络架构
  7. 51/时钟周期、时钟频率、状态周期、机器周期
  8. 网站应用开发Web App Development:如何让前端与后端快速地跑起来
  9. EXCEL中实现16进制MAC的下拉
  10. [网络安全自学篇] 九十一.阿里云搭建LNMP环境及实现PHP自定义网站IP访问 (1)