`
sundful
  • 浏览: 1250370 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

什么是BUG

阅读更多

写给我的团队成员(一)—— 什么是BUG?

 

      什么是BUG?每个写过代码或者使用过软件的人似乎都知道它是什么。然而,我们的很多工作年限有限的开发人员总是简单认为:程序跑通了,自己测了N遍了就很少有BUG了。这是个危险的观念,没有理解深刻这一点的人会在自己的进步过中走很多弯路。更会给产品和团队带来各种大大小小的危机。

 

      对抗BUG是我们程序员永恒的主题,要在这场战斗中获胜,首先要做到“知己知彼”——什么是BUG?

 

      现在,我们来一起把BUG分为以下几个种类,你在Coding的时候要随时随地的想到这些:

 

  • 最最普通的BUG。 我实在缺乏用语言来给这类BUG下定义的能力,因此你现在能够识别,这就是BUG的东西,应该可以归属于这一类。
  • 编译不通过。 你可以认为这是最简单的BUG,根本不需要特别考虑,如果编译不过,Eclipse会在设计时给你个红XX 来提示的。但是,在下面的情况中,你可能看不到红XX,但BUG依然存在。
  1. spring的xml。缺省的eclipse可不会在design time时给任何检查。你写错一个字母,都会让你无法运行。跟业务逻辑相关的依赖关系,更别指望eclipse替你找出来。
  2. jsp中引用的java代码。不用我解释了吧,大家可能都有体验。至少我目前还没找到完全可靠的jsp plugin 可以帮助 eclipse来随时随地找出jsp中的代码错误。(除非你把上千个jsp文件都关闭并重新打开一遍)。
  • 业务逻辑实现错误。 这就不需要过多赘述了。地球人都知道。
  • 缺乏必要的事务。 在99.9%的“开发时”,事务不是必须的。在仅挨着的两条insert语句执行的瞬间,出现系统失效的可能性微乎其微。然而,一旦进入了生产环境,用“事务”来保持你要进行的这个action的完整性就显得非常重要了。当然,并不是所有的业务逻辑步骤都需要用事务来保护,况且让容器帮你你管理事务也是一种懒惰但有效的做法,但与此同时自己去考虑一下“这里如果没有事务,我是否安全?“的问题,对你的进步更有好处。
  • 团队使用的基本库出错。 不要认为团队自己开发的基本类库是100%正确的,轻信不完善的API的思想是大量顽固BUG的藏身之处。团队自己生产的代码还在不断的完善和发展,毕竟咱们积累的这些”精华“与外面OpenSource的东西(而他们同样有BUG)相比,还差懂得远呢。我丝毫不怀疑里面存在超过100个算法缺陷和200个不安全的使用方式。因此,不要”拿起来就用“,而要”三思而后行“。
  • 性能陷阱。 为了尽快实现业务逻辑。我们在第一次编码的时候往往不先考虑性能问题。这个想法不算太错误,但这个想法不能太过分。特别是涉及到一些”性能敏感”的代码段,比如我们产品中多处涉及到的Tcp Server的内核。这些部件的代码1天可能遭受几百万次的访问,瞬时绝对并发100是最正常的情况。因此0.1秒的性能损失,也会带来100x0.1=10秒的性能损耗。10秒,足以使一个TCP Server达到实际“不可用”的严重程度!10行马虎的代码,可能毁掉客户对我们团队辛苦生产的100万代码的信任。切记!切记!
  • 安全隐患。 某些安全隐患在我们刚开始写实验性的代码时往往可以忽略,但绝不能忘记。你必须在这个产品进入到下一阶段的时候加上必要的安全检查代码和与安全相关的逻辑验证代码。回忆一下,你是否忽略了下面的工作:
  1. http session检查。 尽管我们可以用框架来保证这一点。但你还是要检视一下,是否在某些功能的实现上,你确实忘记它了。
  2. 参数类型校验。 当你把一个'a'传递到servlet用Internet.parse()来处理的时候,你是否考虑了可能出现的异常情况。等等此类。
  3. NullException。 特别注意,千万不要让NullException出现在jsp中,否则你很难在系统部署后排查错误。在你第一次编写jsp代码时,你就必须考虑你所使用的对象或者属性是否可能为Null。
  4. Anti-flood。 最容易被初级程序员忽略的要点之一。因为这个bug永远不会出现在你的eclipse开发运行环境里。也往往被功能测试组的人忽略。但一旦存在这个隐患,一个最菜的Hacker用最普通的teardrop也会让你tear drop。
  • 线程安全。 永远不要忘记,你的代码需要在一个多线程的环境中运行,随时随地都有可能出现并发的情况。你的产生的临时文件名是否用uuid来避免重名了?你的静态(或单态)变量是否线程安全。你是否忘记将spring里定义的bean设置为scope=prototype?
  • 忘记删除临时文件。 在上传文件、生成验证图片、生成缩略图的时候,你都可能用到临时文件。你是否在使用完毕后及时的删除了它?你是否考虑过在发生异常后,仍然安全的删除了这个文件?特别需要指出的是,我们在编码阶段的测试时,很难发现遗漏临时文件清理的工作。单在系统上线运行后,大量滞留在目录下的过期临时文件将用光客户的服务器磁盘空间,降低系统IO的性能。
  • 极不友好的UI操作。 极不友好的UI操作同样是严重的BUG。比如:
  1. 当用户提交表单的时候可能填写了错误格式的信息,而你的程序再提示错误,重新显示表单的时候清除了用户已经填写的数据。这对你的软件的使用者来说是极其恼火的体验,对于创造这个代码的您来说则是一种耻辱。
  2. 另一种“极不友好的UI操作“可能发生在这种情况——你必须跟测试人员解释——他体验到这次系统出错的原因是他(测试人员)操作的步骤或顺序不正确。天那,这是噩梦,不仅是用户的噩梦,也是你的噩梦。如果你坚持你的做法没错,我将决定在系统上线后,把你的手机和家里的电话号码做为HELP放在你创造的界面的显著位置呈现给使用它的80万用户。

 

 

 

分享到:
评论

相关推荐

    中文版bug系统下载 bug反馈系统

    首先,我们需要明确什么是Bug系统。Bug系统,也被称为缺陷跟踪系统或问题管理系统,是专门用于收集、分类、分配、追踪和报告软件错误的工具。它为开发人员和测试人员提供了一个统一的平台,使得Bug的整个生命周期...

    开源Bug管理系统

    首先,理解什么是Bug管理系统。一个Bug管理系统是一个工具,用于记录、分类、优先级排序以及分配错误报告,以便团队成员可以及时处理这些问题。它不仅提供了问题追踪的能力,还包含了问题的生命周期管理,从发现到...

    一些bug的知识集

    1. **什么是Bug?** Bug通常指软件中的编程错误,它们可能是由于逻辑错误、语法错误或设计缺陷导致的。当用户执行程序时遇到不正常的行为,如程序崩溃、数据丢失或显示错误的结果,这些都可能是Bug的表现。 2. **...

    JAVA代码BUG分析

    首先,我们需要理解什么是BUG。BUG通常是指程序中的错误、缺陷或不正常的行为,它可能导致程序崩溃、数据丢失,甚至引发安全问题。在Java编程中,BUG的来源多种多样,包括语法错误、逻辑错误、运行时异常等。 ...

    bug管理的小工具,助于对发现的bug进行分类和整理

    首先,理解什么是bug。在编程领域,bug通常指的是程序中的错误、缺陷或不正常的行为,导致软件无法按照预期的方式运行。它们可能是语法错误、逻辑错误或者是对需求理解不准确造成的。有效的bug管理能够确保这些问题...

    BUG管理系统.rar

    首先,我们需要理解什么是BUG。在编程术语中,BUG通常指的是软件中导致程序行为与预期不符的错误、缺陷或漏洞。这些BUG可能引发程序崩溃、数据丢失或其他不可预见的问题,对用户体验造成严重影响。因此,有效的BUG...

    Bug等级分类定义-超级细.zip

    首先,我们要理解什么是Bug。在IT行业中,Bug通常指的是软件程序中的错误、缺陷或故障,导致程序运行结果不符合预期。Bug的严重程度和优先级决定了修复它们的紧迫性。 1. **Bug等级划分**: - **致命错误...

    BugReport_崩溃报告

    1. **什么是BugReport**: BugReport是一份详细记录了应用程序在运行时出现问题的报告,包括错误日志、堆栈跟踪、系统状态等信息。它为开发者提供了诊断问题的关键线索,因为报告中通常会包含错误发生的时间、设备...

    apillo(bug tracker)

    **一、什么是Bug管理工具** Bug管理工具,如阿波罗(Bug Tracker),是一个系统化的平台,用于收集、分类、优先级排序和处理软件中的错误或异常。这些工具通常具有用户友好的界面,允许开发者、测试人员和项目经理...

    解决bug不要拍砖啊

    什么是bug** 在软件开发中,bug通常指的是程序中的错误、缺陷或意外的行为,导致软件无法正常运行或不符合预期的功能。它们可能是由于编码错误、逻辑错误、设计问题或者与其他组件的兼容性问题所引起的。 **2. bug...

    Bug管理的经验和实践

    首先,我们要理解什么是Bug。在IT领域,Bug通常指软件中存在的错误、缺陷或不一致,导致程序无法按照预期功能运行。当用户遇到问题或开发者在测试过程中发现异常行为时,这些都可能被定义为Bug。 有效管理Bug的第一...

    软件测试《Bug管理经验和实践》

    1. **Bug的定义与分类**:书中可能会介绍什么是Bug,以及根据严重程度、优先级、影响范围等不同维度如何对Bug进行分类,以便更高效地处理和跟踪。 2. **Bug生命周期管理**:包括Bug的发现、报告、验证、分配、修复...

    bugfree bugfree bugfree bugfree bugfree

    bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree bugfree

    bugfree,bug管理

    BugFree是一款开源的缺陷跟踪系统,专为程序代码的bug管理设计,旨在简化软件开发和测试过程中的问题追踪。在软件开发中,bug是不可避免的,BugFree提供了一个高效的平台来记录、跟踪、修复这些问题,确保项目的顺利...

    Bug报告模板.docx

    Bug 报告模板 在软件测试和质量保证过程中,_bug 报告模板是一种非常重要的文档工具。它用于记录和追踪软件中的缺陷和错误,以便在后续的开发和测试中进行修复和优化。本文将对 Bug 报告模板的主要组成部分进行详细...

    bugfree2.0软件测试bug管理工具

    BugFree 2.0 是一款专为软件测试而设计的开源Bug管理工具,它提供了高效、易用且灵活的环境来跟踪和管理软件开发过程中的缺陷。这款工具旨在帮助开发团队更好地协调工作,确保产品质量,减少错误并提高整体开发效率...

    bug定义和返工率计算统计方法

    "bug 定义和返工率计算统计方法" 本资源摘要信息主要介绍了 bug 的定义、返工率计算统计方法以及与之相关的质量提高方案。 首先,文档对 bug 的定义进行了详细的描述。bug 定义是指在软件开发过程中出现的错误或...

    Find Blue Oceans——Through the Competitive World of Bug Bounty.zi

    1. **Bug Bounty的基本概念**:介绍什么是Bug Bounty计划,包括其起源、运作模式以及对企业和白帽黑客双方的利益。 2. **白帽黑客的角色**:讨论白帽黑客在网络安全中的作用,以及他们如何通过发现和报告漏洞来促进...

Global site tag (gtag.js) - Google Analytics