【亚博网站信誉有保障】13年的Bug调试经验总结

【亚博网站信誉有保障】13年的Bug调试经验总结

本文摘要:在《LearningFromYourBugs》文章中,我写了关于如何追踪我遇到的最有趣的bug。

亚博APP

在《LearningFromYourBugs》文章中,我写了关于如何追踪我遇到的最有趣的bug。最近,我总结了我的194个项目(从13岁开始),认为有些经验和教训我可以自学。以下是我总结的最重要的一课,包括编码、测试和调试三个方面。

编码下的这些是我经历过的问题,会引起问题的问题。bug: 1。

事件顺序。处理案件时,明确以下问题是没有帮助的。事件能以不同的顺序到达吗?如果我们没有接手这个案子会怎么样?如果这个事件反复发生两次,会怎么样?通常,即使再次发生,系统(或交互式系统)其他部分的错误也会导致事件再次发生。

2.太早了这是第一个“事件顺序”的特例,但肯定不会引起麻烦的bug,所以我把它分开解释。例如,如果信号消息在设备和启动程序完成之前过早地接管,很多奇怪的不道德行为可能不会再次发生。另一个示例:连接在进入空闲列表之前显示为down。

调试这些问题时,我们总是假设在空闲列表中时连接设置为down。但是当时为什么只放名单?)。

这是我们思维的严重不足。有时没有考虑到事情不会太早再次发生。3.无声的故障。

一些最不可跟踪的错误是由不抛出错误、安静地结束和扩展的代码引起的。例如,不确认代码,返回错误的系统调用(例如bind)。另一个示例:解析代码在发生错误元素时返回,而不抛出错误。

在错误状态下持续一段时间的调用不会使调试更加无力。最坏的情况下,如果检测到失败,就会返回错误。4.If .有几个条件的If语句,if(a或B),特别是有链接的话,if(x)elseif(y)给我带来了很多错误。

If语句在概念上非常简单,但当有多个条件需要跟踪时,很容易出错。这几天我想重写代码,以免处理简单的if语句。5.Else .有一个错误,是因为条件为false时没有正确考虑再次发生的事情而发生的。

在所有情况下,必须有else部分来处理所有if语句。另外,如果在if语句的分支中设置变量,则可能需要在其他分支中设置变量。在这种情况下,标记已设置。虽然只添加用作设置的标记的条件很难,但在需要重新设置标记时,添加的条件更容易忘记。

如果有一天留下设置的徽标,可能会出现随后持续的bug。6.改变假设。因为很多一开始最不设防的bug改变了假设。例如,一开始每天只能有一个客户活动。

所以很多代码都是用这种假设写的。但是之后设计发生了变化,每天都允许很多客户事件。如果这种情况再次发生,所有受新设计影响的情况都很难改变。

很难找到所有对变化的明确依赖关系,也不可能找到所有隐性依赖原始设计的情况。例如,您可能有提供特定日期所有客户事件的代码。这里假设结果集总有一天会达到客户数。

对于这方面的问题,我也没有好的战略方法。如果大家在的话,请慷慨指教。7.日志记录。可视化程序做什么很重要。

尤其是逻辑简单的时候。补充足够的(但不要太多)日志可以解释程序为什么这样做。如果一切正常,那也没关系,但如果问题再次发生,你就不会为自己添加到这个日志中而伤心了。(威廉莎士比亚、哈姆雷特)作为开发者的测试要经过测试,才能不处理功能。

约翰肯尼迪,学习)至少也就是说,新代码或更改后的代码行至少继续执行一次。此外,单元测试和功能测试都很低俗,但太多了。新功能也要进行测试,探索与产品相似的环境。只有这样,我才能说我已经完成了功能。

以下是我经历的bug教会我关于测试的一些最重要的教训:8。零和空。如果不现实,就要经常用零和空来测试。

对于字符串,这意味着测试长度为零的字符串,并且字符串为空。另一个示例:要测试TCP连接插入,必须在将数据发送到之前进行测试。

不用于这些组方法测试是经常发生bug的第一个原因。9.添加和删除。

通常,新功能还包括需要添加到系统中的——,例如用作手机号码切换的新配置文件。测试它能否添加到新的个人资料中是自然的。

但是我发现,测试个人资料的删除在多大程度上是ok的更容易。10.错误处理。

处理错误的代码经常无法测试。最坏的情况下,有自动测试可以确认错误处理代码,但有时可能不可行。有时不使用的一种方法是临时更改代码,使错误处理代码一起运行。

实现这一点最简单的方法是翻转if门3354。例如,将iferror_count0更改为error_count==0。另一个示例是,拼写错误数据库被选为,并运行所需的错误处理代码。

11.随机输出。通常,暴露bug测试的测试方法之一是为了随机输出。

例如,H.323协议的ASN.1解码用于二进制数据操作员。通过发送到任意字节进行解码,解码器找到了几个错误。另一个例子是使用测试调用分解脚本。这时,呼叫持续时间、电话延期、1字中断等将随机分解。

这些测试脚本不会暴露很多错误。特别是一起再次发生的事件不会引起肘部障碍。

本文关键词:亚博APP,亚博APP安全有保障,亚博网站信誉有保障

本文来源:亚博APP-www.thefapper.com

相关文章

评论已关闭。

网站地图xml地图