`
阅读更多

题记

你越了解你的对手——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的水平。

 

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

 

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

分享到:
评论

相关推荐

    基于springboot和vue的 笔记记录分享网站源码 笔记记录分享网站代码(高分毕设项目源码)

    1. 笔记记录分享网站代码说明:经导师指导并认可通过的98分毕设项目代码。 2.适用对象:本代码学习资料适用于计算机、电子信息工程、数学等专业正在做毕设的学生,需要项目实战练习的学习者,也适用于课程设计、期末...

    2023年软件测试技术经典教程笔记修.docx

    Bug广义上是指软件生命周期中,不符合用户需求的问题。类型一包括未实现的功能、功能实现不完全或性能问题,以及实现了用户不需要的功能。类型二主要涉及测试执行阶段的问题,如缺陷、需求和设计错误、开发中的bug、...

    一款基于Material Design 设计的开源笔记本应用.zip

    描述中的"材料设计笔记应用程序"是对标题的进一步确认,说明这款应用是专为记录笔记而设计的,并且采用了Material Design的风格。开源意味着源代码对公众开放,允许开发者查看、修改和分发代码,促进了软件的持续...

    测试基础理论学习笔记.pdf

    软件测试是确保软件质量、符合用户需求的关键环节,它包括多个方面,如测试流程、测试方法、测试文档、BUG管理等。 测试流程通常分为多个阶段。首先,需求分析阶段,测试人员需要理解业务流程,提取功能点,编写...

    基于springboot和vue的 笔记记录分享网站源码 (优秀毕业设计源码)

    1. 笔记记录分享网站代码说明:经导师指导并认可通过的98分毕设项目代码。 2.适用对象:本代码学习资料适用于计算机、电子信息工程、数学等专业正在做毕设的学生,需要项目实战练习的学习者,也适用于课程设计、期末...

    软件测试笔记

    5. **缺陷管理**:当发现软件缺陷(也称为bug)时,需要记录、跟踪、优先级排序,并与开发团队沟通以便修复。 6. **回归测试**:在缺陷修复后,对受影响的部分进行重新测试,以确保修复没有引入新的问题。 7. **...

    软件测试技术基础及分类笔记

    【软件测试技术基础及分类笔记】是对软件测试的初步学习和理解,涵盖了软件的基本概念、错误类型、测试定义、测试用例、测试人员素质、测试与质量保证的关系、软件测试的基本规则以及测试分类等多个方面。...

    TSD2108-缺陷报告-DAY03笔记.rar

    在IT行业中,缺陷报告是软件开发过程中的一个重要环节,它涉及到对软件系统中发现的问题进行记录、分类、分析以及跟踪,以确保软件质量并推动产品的持续改进。标题"TSD2108-缺陷报告-DAY03笔记"暗示了这是一个关于...

    2023年软件测试技术经典教程笔记修汇总.docx

    广义上,Bug是软件生命周期中与用户需求不符的问题。它们可以分为两大类:一类是在软件生命周期早期就存在的问题,如未实现的功能或功能上的缺陷;另一类是在测试执行阶段发现的Defects,包括Requirements&Design ...

    VNote 笔记 window 64位版本 2.1

    3. **笔记功能**:作为一款笔记软件,VNote的核心功能是笔记的创建、编辑和管理。它可能支持Markdown语法,这是一种轻量级的标记语言,让文本格式化变得简单,同时保持纯文本的可读性。VNote可能还提供图片插入、...

    Simple-Notes,一个简单的文本字段,用于添加没有广告的快速笔记。.zip

    在数字化时代,笔记应用已经成为日常生活和工作中不可或缺的工具,它们帮助我们记录思绪、保存重要信息。而"Simple-Notes"就是这样一款专为快速记事设计的应用,其核心特点在于简洁无广告,为用户提供了一个纯粹的...

    程序员记笔记的小工具

    在【压缩包子文件的文件名称列表】中的`vNote_38366`可能是VNote的一个版本号或者更新包,用户可以通过安装或更新此文件来获取最新功能和修复的bug,提升使用体验。 总之,对于程序员来说,【程序员记笔记的小工具...

    mybase7.0 笔记本软件

    总的来说,mybase7.0 是一款集文档管理、代码存储和笔记记录于一身的强大工具,适用于那些需要高效整理和检索信息的专业人士。通过合理利用mybase7.0,我们可以构建一个个性化的知识库,提升工作效率,实现信息的...

    MTK工作笔记.doc

    这些笔记详细记录了MTK设备在软件定制过程中的各个步骤,涉及了从硬件交互、系统UI、音频设置到应用功能等多个层面的调整和优化。对于进行MTK平台开发或维护的工程师来说,这些知识是非常宝贵的参考资料。

    MTK 部分bug修改记录

    根据给定的文件信息,以下是对“MTK部分bug修改记录”的详细解析,涉及的知识点主要围绕MTK平台上的软件开发、调试与优化,特别针对bug修复和代码修改的记录。MTK,即联发科技(MediaTek),是全球领先的芯片设计制造...

    svn-笔记.docx

    SVN,全称Subversion,是一款广泛应用于软件开发领域的版本控制系统,旨在解决多人协作开发中可能出现的问题,如代码冲突、版本管理混乱等。它通过跟踪文件的修改历史,使得开发者能够轻松备份不同版本,追踪问题...

    【Leetcode刷题笔记01】704.二分查找 27.移除元素.md

    了解双指针技巧在数组问题中如何应用;学习算法代码的编写方法。 阅读建议:仔细理解题目要求,分析清楚算法思路才开始编程;可以边学习参考代码,边自己实现对应算法。对比输出结果,分析差异找到bug。逐题逐步深入,重复...

    Git学习笔记.pdf

    版本控制工具可以分为集中式与分布式两大类,集中式版本控制工具中,例如SVN,存在一个单一的集中管理的服务器,所有代码变更记录都保存在该服务器上;而分布式版本控制工具如Git,每个开发者本地都会有一个仓库的...

    LotusDomino学习笔记.doc

    ### LotusDomino学习笔记知识点概览 #### 1. 选取视图的列的内容 (@Trim @DbColumn) - **@Trim**: 是一个内置的LotusScript函数,用于去除字符串两端的空白字符。 - **@DbColumn**: 此函数用于获取指定列的信息。...

    内核208天bug分析

    3. Linux内核调度器:在内核代码路径kernel/sched.c3928中,出现bug的代码与Linux内核调度器(scheduler)有关。Linux内核调度器负责根据进程优先级和系统负载情况分配CPU时间片,让不同的进程得到运行的机会。调度...

Global site tag (gtag.js) - Google Analytics