题记
你越了解你的对手——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的水平。
除开特殊类型的软件系统,一般情况下,开发高质量的软件,比开发低质量软件然后修正的成本要低。
不再调试上花时间?——这是一个很有价值,并值得努力的目标
发表评论
-
一个简单的随机数字串函数,欢迎拍砖改进
2006-02-22 14:41 698static public string GenRandom ... -
一个简单的e-mail校验函数,欢迎拍砖改进
2006-02-22 15:13 757/// <summary> /// 校验是否 ... -
一个简单的取用户真实IP函数[B/S],欢迎拍砖改进
2006-02-22 15:28 756可以取的真实IP的哦public static string ... -
一个高效判断字符串是否全数字的函数,请大家指正拍砖
2006-02-22 18:50 964看到很多人都采用正则表达式或者一些其它五花八门的算法。经过简单 ... -
多语言Web系统布局的几个小帖士
2006-02-28 14:50 987基于窗体的整体大小使用级联样式表表达式调整元素的大小 ... -
VS2003中自定义控件的智能提示解决方案备忘
2006-02-28 21:26 979这个问题困饶了很久了。一直没有妥善解决。最近从nhiberna ... -
Oracle中隐式游标和显式游标的教训[同事的经历]
2006-02-28 21:34 834一直以为以下这种语句(执行一)就是隐式游标,跟显式定义游标(执 ... -
一个简单的UrlRewrite示例[演示用,写给同事看的,VS2003环境]
2006-03-20 13:07 922UrlDemo.rar下载比较简单。关键点如下:一.Versi ... -
[笔记]1.软件的质量特性characteristics of software quality
2006-05-17 13:14 770外在特性:该软件产品用户所能感受到的部分。包括:正确性可用性效 ... -
[笔记]2.软件质量的一些统计数据
2006-05-17 13:43 1086一个关键事实:提高开发效率和改善质量的最佳途径——减少代码返工 ... -
[笔记]4.软件规模和开发的关系
2006-05-18 13:47 552前言: 对非软件领域的其他领域[比如化工、船舶等等] ... -
[SQL使用经验]选用 IN 还是 EXISTS,哪个性能更好
2006-09-12 10:08 1335一、EXISTS 并非总比IN 快,究竟应该选用 IN 还是 ... -
两个读取数据库VIew的定义的SQL语句的写法[Oracle /SQL SERVER]
2006-12-01 18:05 1114例如想读取的VIEW名称 MYVIEW在ORACLE中:SEL ... -
部署Excel相关的应用程序过程中遇到“检索COM类工厂中CLSID...”的两个错误的解决方法
2007-01-29 10:52 2053最近用.net写了一个相关Excel的B/S的程序,部署到20 ... -
VS2005无法调试,绑定句柄无效问题的解决方法
2007-02-02 13:04 1972今天我的VS2005调试时遇到以下两个错误: 1.无法连接到名 ... -
[转]数据库存储过程中利用extproc调用共享程序库/动态链接库,间接可以实现调用操作系统命令
2007-02-09 14:49 12631 数据库程序库主要介绍使用ORACLE数据库的LIBRARY ... -
powerdesigner中生成数据库脚本时出现长度限制问题的解决方法
2007-02-09 16:23 939今天有同事问这个问题,错误显示如下:事实上相关设计的脚本可以在 ... -
[转载整理]一本java书的序言——开发历程思绪随笔
2007-11-26 13:16 756以下文字是一本java书的 ...
相关推荐
1. 笔记记录分享网站代码说明:经导师指导并认可通过的98分毕设项目代码。 2.适用对象:本代码学习资料适用于计算机、电子信息工程、数学等专业正在做毕设的学生,需要项目实战练习的学习者,也适用于课程设计、期末...
Bug广义上是指软件生命周期中,不符合用户需求的问题。类型一包括未实现的功能、功能实现不完全或性能问题,以及实现了用户不需要的功能。类型二主要涉及测试执行阶段的问题,如缺陷、需求和设计错误、开发中的bug、...
描述中的"材料设计笔记应用程序"是对标题的进一步确认,说明这款应用是专为记录笔记而设计的,并且采用了Material Design的风格。开源意味着源代码对公众开放,允许开发者查看、修改和分发代码,促进了软件的持续...
软件测试是确保软件质量、符合用户需求的关键环节,它包括多个方面,如测试流程、测试方法、测试文档、BUG管理等。 测试流程通常分为多个阶段。首先,需求分析阶段,测试人员需要理解业务流程,提取功能点,编写...
1. 笔记记录分享网站代码说明:经导师指导并认可通过的98分毕设项目代码。 2.适用对象:本代码学习资料适用于计算机、电子信息工程、数学等专业正在做毕设的学生,需要项目实战练习的学习者,也适用于课程设计、期末...
5. **缺陷管理**:当发现软件缺陷(也称为bug)时,需要记录、跟踪、优先级排序,并与开发团队沟通以便修复。 6. **回归测试**:在缺陷修复后,对受影响的部分进行重新测试,以确保修复没有引入新的问题。 7. **...
【软件测试技术基础及分类笔记】是对软件测试的初步学习和理解,涵盖了软件的基本概念、错误类型、测试定义、测试用例、测试人员素质、测试与质量保证的关系、软件测试的基本规则以及测试分类等多个方面。...
在IT行业中,缺陷报告是软件开发过程中的一个重要环节,它涉及到对软件系统中发现的问题进行记录、分类、分析以及跟踪,以确保软件质量并推动产品的持续改进。标题"TSD2108-缺陷报告-DAY03笔记"暗示了这是一个关于...
广义上,Bug是软件生命周期中与用户需求不符的问题。它们可以分为两大类:一类是在软件生命周期早期就存在的问题,如未实现的功能或功能上的缺陷;另一类是在测试执行阶段发现的Defects,包括Requirements&Design ...
3. **笔记功能**:作为一款笔记软件,VNote的核心功能是笔记的创建、编辑和管理。它可能支持Markdown语法,这是一种轻量级的标记语言,让文本格式化变得简单,同时保持纯文本的可读性。VNote可能还提供图片插入、...
在数字化时代,笔记应用已经成为日常生活和工作中不可或缺的工具,它们帮助我们记录思绪、保存重要信息。而"Simple-Notes"就是这样一款专为快速记事设计的应用,其核心特点在于简洁无广告,为用户提供了一个纯粹的...
在【压缩包子文件的文件名称列表】中的`vNote_38366`可能是VNote的一个版本号或者更新包,用户可以通过安装或更新此文件来获取最新功能和修复的bug,提升使用体验。 总之,对于程序员来说,【程序员记笔记的小工具...
总的来说,mybase7.0 是一款集文档管理、代码存储和笔记记录于一身的强大工具,适用于那些需要高效整理和检索信息的专业人士。通过合理利用mybase7.0,我们可以构建一个个性化的知识库,提升工作效率,实现信息的...
这些笔记详细记录了MTK设备在软件定制过程中的各个步骤,涉及了从硬件交互、系统UI、音频设置到应用功能等多个层面的调整和优化。对于进行MTK平台开发或维护的工程师来说,这些知识是非常宝贵的参考资料。
根据给定的文件信息,以下是对“MTK部分bug修改记录”的详细解析,涉及的知识点主要围绕MTK平台上的软件开发、调试与优化,特别针对bug修复和代码修改的记录。MTK,即联发科技(MediaTek),是全球领先的芯片设计制造...
SVN,全称Subversion,是一款广泛应用于软件开发领域的版本控制系统,旨在解决多人协作开发中可能出现的问题,如代码冲突、版本管理混乱等。它通过跟踪文件的修改历史,使得开发者能够轻松备份不同版本,追踪问题...
了解双指针技巧在数组问题中如何应用;学习算法代码的编写方法。 阅读建议:仔细理解题目要求,分析清楚算法思路才开始编程;可以边学习参考代码,边自己实现对应算法。对比输出结果,分析差异找到bug。逐题逐步深入,重复...
版本控制工具可以分为集中式与分布式两大类,集中式版本控制工具中,例如SVN,存在一个单一的集中管理的服务器,所有代码变更记录都保存在该服务器上;而分布式版本控制工具如Git,每个开发者本地都会有一个仓库的...
### LotusDomino学习笔记知识点概览 #### 1. 选取视图的列的内容 (@Trim @DbColumn) - **@Trim**: 是一个内置的LotusScript函数,用于去除字符串两端的空白字符。 - **@DbColumn**: 此函数用于获取指定列的信息。...
3. Linux内核调度器:在内核代码路径kernel/sched.c3928中,出现bug的代码与Linux内核调度器(scheduler)有关。Linux内核调度器负责根据进程优先级和系统负载情况分配CPU时间片,让不同的进程得到运行的机会。调度...