第三周读书笔记

这周我继续阅读了《调试九法》的后面章节,我个人认为调试在制造一个可以投入使用,并且具有吸引力的软件(或者说是任意一种产品)占据着十分重要的作用。

在《制造失败》这一章节中,让我印象最深刻的是下面这一段对话。

如果Charlie现在正在我的公司工作,你问他:“当你发现一个故障时该怎么办?” 他会回答说:“试着让他再次发生”

让错误重演在调试中是十分重要的,当你能够让错误重演时,实际上,你已经掌握了攻克他的必要条件。再不知道错误时,你甚至不能判断问题是否已经修复,这其实会产生不可预见的隐患。

            书中也同样的提到了,让失败重现的三个原因。

            可以观察他;

            可以专心查找原因;

            可以判断是否已修复问题;

      然而我认为,书中有一个地方说的并不能够完全依靠,书中说,当你执行X操作时,失败率为100%,修复问题后,再执行X操作,失败率为0,则说明BUG已完全修复。但是在我自己的实际操作中,当你执行X操作不再失败后,实际有可能只是做出了让这个操作不再出问题的操作,他很有可能引起新的问题,具体的判断解决方案相信书中后续部分会提到。

而为了能够制造失败,详细记录测试步骤也是十分重要的,这是你制造失败的重要步骤,然而如果这个错误存在巨大的破坏性或是高额的代价,就需要改变一些地方,但应尽量少改动原来的系统和顺序。

在制造失败时,应试着从一个已知的状态开始,因为计算机有可能处在一个复杂的状态下,而BUG有可能仅会在机器的某个复杂状态下出现。所以应试着从一个已知的状态开始,如刚重启的计算机。

引发失败,自动化的调试过程其实是很有启发的,由于重复引发失败时,很多步骤都是重复执行的,所以将这些步骤自动化实际基于了很大的帮助。

引发失败和模拟失败的区别,这一段实际我看的不是特别懂,核心思想应该是告诫调试员,不要试图的猜测产生失败的机理,在你猜测失败时,模拟很可能会失败,并且产生新的BUG,这在调试中是非常让人痛苦并且延缓效率的。

在上面这些步骤时,间歇性的BUG是很难处理的,在自己的调试过程中,如果一个BUG重复的出现,其实他并不能造成太长时间的困扰(很有可能只是一个疏忽造成的,并且很好调试消除),但间歇性的BUG,导致很多调试的规则很难实现,关键的问题正如书中所说,间歇性的BUG其实是因为失败原因很难被直接找出。

 

原文地址:https://www.cnblogs.com/lanziwen/p/8658127.html