Debugging 实现功能与修复bug
我很感兴趣的是,与修复bug相比,你每天花多少时间在实现新功能上?只要我的软件中有一些未修复的bug,我就不编写任何新功能 我能想到的唯一让我的软件中的bug不被修复的原因是修复它肯定要花费很多钱。在这种情况下,我们可以选择将其从“bug”更改为“已知限制”或“已知bug”,并相应地修复我们给用户的反馈,以便用户确切地知道发生了什么以及为什么没有修复(请参阅下面的编辑) 因此,通常情况下,只要QA在抱怨某件事,我就会花所有的时间来修复bug,,而我所有的时间都在编码,而事实并非如此!:) 我这样做是因为:Debugging 实现功能与修复bug,debugging,Debugging,我很感兴趣的是,与修复bug相比,你每天花多少时间在实现新功能上?只要我的软件中有一些未修复的bug,我就不编写任何新功能 我能想到的唯一让我的软件中的bug不被修复的原因是修复它肯定要花费很多钱。在这种情况下,我们可以选择将其从“bug”更改为“已知限制”或“已知bug”,并相应地修复我们给用户的反馈,以便用户确切地知道发生了什么以及为什么没有修复(请参阅下面的编辑) 因此,通常情况下,只要QA在抱怨某件事,我就会花所有的时间来修复bug,,而我所有的时间都在编码,而事实并非如此!:) 我这样
- 当一个软件做了很多事情,但随机崩溃时,用户会觉得他不能依赖这个软件,而你也无法修复这个问题。永远
- 当一个软件缺少一些功能,但擅长做它所做的事情时,用户会认为“这可能是一个很棒的软件,可惜它不支持X和Y……我会在6个月后检查下一个版本”
乔尔·斯波尔斯基在他的博客中就这个问题写了一篇有趣的帖子
编辑以回答评论:如果我遇到随机崩溃,那肯定是一个bug,而不是“已知限制”。一旦我确切地知道发生了什么,只有到那时,我才能决定是否能解决它 我在想以下情况:
- 这个bug是由不属于我的代码(通常是第三方库)引起的。如果实现一个变通方法非常复杂,那么可以等待第三方供应商修复它。现实世界的例子:Clickonce在某些代理情况下不起作用。。。我希望微软最终能解决这个问题
- 如果问题是某个特定功能不能在所有情况下都工作,并且该功能很难在这些特定情况下实现,我认为在用户使用该功能之前,可以警告用户尝试执行的功能没有实现,而不是崩溃
这是针对个人项目或发布前/研究产品的这取决于我目前从事的项目类型。 如果项目是新的,那么在测试阶段之后,我们有一个称为bug修复的阶段。大多数bug都在那里得到修复。(!)
如果项目是维护项目,那么修复bug是日常工作 由于我没有获得维护任何项目的报酬,所以大部分时间我都在从事新项目,因此一直在添加新功能 但是,每个功能都需要进行彻底的测试和调试,因此您可以说,实现一个功能所花费的时间中有30-40%将用于调试它。这取决于bug 这是一个次要的装饰性问题,比如标签的错误,还是破坏数据的巨大缺陷 即使是轻微的或装饰性的,它是否会引起用户的头痛,比如弹出窗口出现在错误的地方?是否只有在Firefox2中才出现了数据损坏漏洞,并且满月(而您的公司内部网是IE6)
尽管这是个好问题……许多项目都有一个开发阶段(“代码解冻”),在这个阶段中,新功能的积极添加与错误修复同时发生,还有一个“代码冻结”阶段,在这个阶段中,功能集被冻结,100%的工作都是为了将关键错误数降至0(或在固定期限前修复尽可能多的错误),因此,答案将取决于项目所处的阶段
当我“做bug”时,我也会尽最大努力要求至少有一个特性可以同时工作,或者(当遇到特别有bug的代码块时)请求授权重构整个代码块。因此,我开始做一些新的开发(面对现实,我们大多数人更喜欢编写新的东西来修复旧的东西),同时减少bug数量。当我对我的工作进行分类时,我脑子里有很多优先事项:
你可以想象,#3类的工作并不经常进行,从工程角度来看,这有点令人沮丧。但是,我们的客户喜欢我们,因为他们在打电话给我们的支持热线后,几乎马上就有一名工程师处理他们的问题,并且通常在24小时内得到解决,而不管问题的大小或重要性。我为公司内部的一个团队工作,该团队负责创建“功能表”,并对客户问题做出响应。我倾向于把更多的时间花在高优先级的客户问题上(阅读:bug)。所以我想说我的时间几乎100%都花在了修复bug上 也就是说,让我们读一下字里行间的内容。这个问题似乎是在说“ugg,我花了这么多时间在错误修复上……希望我能做更多的功能开发”。如果是这样的话,我认为你需要向内看一点 正如我所说,我几乎把所有的时间都花在了修复客户问题的bug上,但我也编写了大量的工具来帮助解决这个问题。我有特价的一切