题记

你越了解你的对手——BUG,你的测试就越做的更好,软件质量就越可靠。

虽然很难将其他组织的经验数据应用到自己所在的组织,甚至有些数据和直觉相反,但你需要行动起来,借助一些方法,评估自己的情况,去改进。

BUG不是均匀分布

如果没有经过分析,自然的想法是BUG的分布会比较分散的,等概率的存在于整个系统。事实上经典的2-8原则这里依然有效:

20%的类/子程序中存在80%的BUG,换言之,20%的类/子程序占用了80%的开发成本;甚至有人统计出50%的BUG存在于5%的类中;

有资料说IBM对自己的OS/360操作系统的分析发现,只占少数的容易出问题的子程序每千行代码BUG高达50个,修复的代价是开发整个系统的成本的10倍(这个成本包括了客户支持和现场维护)

因为复杂造成BUG集中的类/子程序,则需要设计时考虑降低复杂度,已经开发的应该考虑重构方案。

大多数BUG的影响范围是有限的

研究发现,85%的BUG可以在修改不超过一个类/子程序的范围内被修正。

大部分BUG都很容易修正

大约85的BUG可以在几个小时内修正;大约15%的BUG需要几个小时到几天;只有不到15的BUG需要更长的时间;

程序员错误理解设计引起的BUG的情况

有研究表明16%的BUG是这个原因造成的,另一个研究结果该原因带来了19%的BUG。因此花点时间彻底了解设计是很值得的。

软件设计编码之外最常见的三种BUG源头:

缺乏应用领域的知识;

频繁变动或者矛盾的需求;

沟通和协调的失效;

软件设计构件期的BUG源头分布情况是:

95%的BUG是程序开发人员造成的,系统软件造成的为2%,硬件原因为1%,其他软件为2%;

特别的,拼写错误是一个很常见的BUG源

不同类型的软件系统,拼写带来的BUG情况差别是比较大,从4%到36%不等。

想一想人类有史以来三个最昂贵的软件BUG——分别价值16亿、9亿和2.45亿美元,都是因为一个不正确的字符造成的。

我自己曾经因为把user拼写为uesr带来很大麻烦,昨天下午检查数据库数据时又无意中发现一个把organization拼写为organiztion的BUG。

业界经验,在已经发行的大多数软件中平均千行代码中有1-25个BUG。

微软的数据是内部测试千行代码有10-20个缺陷,已经发布的产品则下降为0.5。

国防和航天类系统则能达到每50万行0个BUG的水平。

有报告宣称使用TSP方式的开发小组,可以达到千行代码0.06个BUG的水平。

除开特殊类型的软件系统,一般情况下,开发高质量的软件,比开发低质量软件然后修正的成本要低。

不再调试上花时间?——这是一个很有价值,并值得努力的目标

转载于:https://www.cnblogs.com/PiedPiper/archive/2006/05/18/403038.html

[笔记]3.软件代码中的BUG问题的一些记录相关推荐

  1. 育碧开发了一个 AI 工具,能快速找出代码中的 Bug

    据 Neowin 报道,育碧(Ubisoft)目前正在开发几款旨在改进游戏体验和开发流程的 AI 应用,像是针对玩家被称为 Sam 的 AI 助理,以及一个专注于改善开发流程的 Commit Assi ...

  2. 程序员从复杂代码中找BUG的5种方法,你用过几个?

    有不少的新手程序员,刚开始都是从修BUG开始做起的. 修bug有助于熟悉项目,了解大概哪些类参与了执行线路,相互调用关系又是如何,结构设计上有什么特点. 对于新手程序员而言,在复杂代码中找BUG是一个 ...

  3. 软件测试学习笔记:找代码中的fault,并设计特定的测试用例

    观察两段代码: (1) 发现代码中的错误: (2) 设计测试用例,不执行fault部分: (3) 设计测试用例,执行fault部分,但不出现error情况: (4) 设计测试用例, 出现error情况 ...

  4. 杨桃的Python笔记1——Python代码中分号的使用

    本人CSDN博客专栏:https://blog.csdn.net/yty_7 Github地址:https://github.com/yot777/ 初学者都认为Python是一种没有分号的语言.的确 ...

  5. 关于在阅读nnUNet代码中的一些小细节的记录(一)

    首先,感谢paper桑大佬关于nnUNet项目的解释,我从中获益很多.本片是关于nnUNet代码中我看到的认为可能比较重要的某些细节的记录. 1.推理阶段.在nnUNet/nnunet/preproc ...

  6. (转)程序员新人怎样在复杂代码中找 bug?

    我曾经做了两年大型软件的维护工作,那个项目有10多年了,大约3000万行以上的代码,参与过开发的有数千人,代码checkout出来有大约5个GB,而且bug特别多,open的有上千,即使最高优先级的s ...

  7. 程序员新人怎样在复杂代码中找 bug?

    我曾经做了两年大型软件的维护工作,那个项目有 10 多年了,大约 3000 万行以上的代码,参与过开发的有数千人,代码 checkout 出来有大约 5 个 GB,而且 bug 特别多,open 的有 ...

  8. 全志代码中的bug之2

    此处跟踪,发现调用的一个虚拟函数接口没有实现,出现段错误,程序退出.

  9. 全志V3S代码中的bug之1

  10. 关于在阅读nnUNet代码中的一些小细节的记录(二)

    1.推理阶段:在nnUNet/nnunet/network_architecture/neural_network.py的250行的_get_gaussian函数. def _get_gaussian ...

最新文章

  1. oracle统计数据库所有表的数据记录数SQL
  2. System.Data.OracleClient requires Oracle client software version 8.1.7 or greater.
  3. Android Shell命令dumpsys
  4. selenium的三种等待时间
  5. 人脸检测算法_腾讯已开源高精度人脸检测算法DSFD
  6. numpy 中的axis轴问题
  7. 盒子横向排列-初识浮动Float(HTML、CSS)
  8. build shop
  9. [JAVA #183; 初级]:1.环境变量的配置
  10. 数据之路 - Python爬虫 - urllib库
  11. iOS7以上: 实现如“日历”的 NavigationBar
  12. 【电脑使用】插入SD卡图标是灰色的,点击显示“请将磁盘插入驱动器”
  13. http状态404 vscode_HTTP常见状态码(404、400、500)等错误
  14. LeetCode 229 求众数 II
  15. wp模板里面的各种判断
  16. VUE记录用户切屏次数并弹出提示
  17. ICC 图文学习——LAB4:CTS 时钟树综合
  18. python 中正无穷,负无穷的表示
  19. 嵌入式linux 系统支持usb wifi BL-R8723BT1
  20. Moloch 搜索栏常用命令

热门文章

  1. java文件乱码 环境变量_JAVA安装后,环境变量的PATH被我改了,后来发现改错了,但是不知道怎么改回去了,就是一堆乱码的...
  2. 有关计算机的未来想象作文,电脑的想象作文
  3. chown: 无效的用户: hadoop-3.1.4_Ubuntu 21.04 用户主目录权限将14年来首次变更及新功能预览...
  4. 基于springboot的健身管理系统
  5. java 开关按钮_SwitchButton开关按钮的多种实现方式
  6. ubuntu设置始终亮屏_教你在Ubuntu系统下保存屏幕亮度设置
  7. 如果有人问你 Dubbo 中注册中心工作原理,就把这篇文章给他
  8. RocketMQ 常见异常处理
  9. Navicat连接Mysql报错:Client does not support authentication protocol requested by server;
  10. 阶段1 语言基础+高级_1-3-Java语言高级_06-File类与IO流_05 IO字符流_4字符输出流的基本使用_写出单个字符...