体育平台-首页

054-334756001

在线客服| 微信关注
当前位置: 首页 > 企业新闻

LearningFromYourBugs:如何追踪我遇到的最【体育平台】


本文摘要:例如,如果信号消息在设备和启动程序完成之前过早地接管,很多奇怪的不道德行为可能不会再次发生。最坏的情况下,有自动测试可以确认错误处理代码,但有时可能不可行。有时不使用的一种方法是临时更改代码,使错误处理代码一起运行。

在《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字中断等将随机分解。

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


本文关键词:体育平台首页,代码,假设,最重要

本文来源:体育平台-www.tammy-ramirez.com

客户案例Customer case
  • 体育平台:中西方的要塞,哪种更难攻破
  • 阿里整合饿了么、口碑开战美团 已获30亿美元投资承诺
  • 揭秘:古人如何检验新娘的贞操(图)_体育平台首页
  • 体育平台首页|如何挤掉假期社会实践的“水分”
  • 南阳市重点构建现代文化体系
  • 体育平台首页-最新研究称:豪车车主更不愿礼让行人
  • 戏曲进校园传承在身边-体育平台
  • 体育平台首页-新学期新起点——郾城东街小学召开2019秋季全体教师会
  • 体育平台首页-沈义人暗示OPPOFind X2细节:3.5mm耳机孔消失实锤了
  • 新华区教体局教师培训中心:努力构建教师继续教育的“立交桥”|体育平台首页