<读书笔记>软件调试之道 :从大局看调试-发现代码存在问题

声明:本文档的内容主要来源于书籍《软件调试修炼之道》作者Paul Butcher,属于读书笔记。欢迎转载!

-----------------------------------------------------------------------------------------------

缺陷可以随时发生,从代码编写完毕到代码发布后的成年累月!

无论你开发什么样的软件,都需要创建一些流程,通过这些流程,可以告诉你软件哪里出了问题,并且应该如何修复!

1、缺陷管理系统

既有简单用途的,也有全面流程管理的,但其目的都一样。

  • 确保不会遗漏缺陷。
  • 通过提供一个缺陷报告的标准格式,把所有相关信息都包含其中!
  • 作为审查线索,可以确保我们知道每一个版本还有哪些缺陷未解决。
  • 也可以作为软件发布的重要信息来源 可以设定缺陷优先级,并确定先解决哪个。
  • 为相关利益方提供一个有效的沟通方式,确保在团队之间传递时准确提供了相关信息
  • 作为一个管理工具,提供了该项目的当前状态

2、如何写出一份出色的缺陷报告

一份好的缺陷报告宁多勿少,因为我们无法知道哪些信息是相关的,哪些是无关的。

  • 报告应该是具体的、明确的和详细的。
  • 报告也应该是最小化的、唯一的。比如报告1万字,其是否可以消减?哪一个版本出现缺陷,其它版本有没有?

3、简化流程-通过消减不利条件来提高缺陷报告质量

如果没有人花时间和精力向你反映问题,你就不能找出这些缺陷,也不会修复它!

  • 明确说明如何报告缺陷。 提高多种选择: 比如电子邮件、直接交谈、在线沟通等!
  • 要尽量简单 :要求用户执行的动作要尽量少,否则其可能不会完成
  • 模板不要太死板 :确保每个区域设置合理选项,比如“以上都不是”。 尊重用于隐私:用户的数据属于他们,而不是属于你,要遵守相关隐私策略。

4、有效沟通

聪明是一个软件工程师的必要条件,大多数在学校都有良好的成绩,但这并不能保证我们不会犯错。在应用领域客户依靠他们的专长,可能理解的比你好,因此当存在明显误解的时候,要记住你可能出错了!

  • 从用户的角度设想一下会发生什么,你的目标是把他们的观察结果和他们的解读分开。
  • 和非技术人员沟通,唯一办法是要有耐心,解释一下为何这些细节很重要,并通过必要的步骤说服他们收集相关数据。
  • 发布你的缺陷数据库,虽然让大家看到你的“爆料”可能很可怕,但其好处巨大。
  • 提高反馈,收到缺陷报告时,需积极回应并支持他们继续下去。
  • 拜访用户,拜访用于可以比任何缺陷报告了解的更多 。

5、与支持人员协作

技术支持,QA,客户工程师,技术客户经理等都可以在调试过程中提高帮助!

  • 可以考虑和QA团队的一名同事在诊断阶段一起工作
  • 为了确保客户团队能帮助我们解决沟通问题,你应该能够判断并确保所有相关信息已被确认,避免吹毛求疵以及一些相关细节,可以考虑要求他们执行一项特定进程,来提高缺陷报告质量
  • 偶尔也做做客户支持,以表示对客户的尊重,避免被用户封杀
  • 由于QA的所具有的不同视角,他们需要守护的是避免与开发团队先入为主的“同流合污”,但也容易过火!比如作者所工作的一个公司开发和QA团队之间存在很深的隔阂,QA能得到的信息就是一个已编译的二进制文件,开发团队唯一能得到信息就是“通过”或者“失败”。
时间: 2024-08-04 18:33:59

<读书笔记>软件调试之道 :从大局看调试-发现代码存在问题的相关文章

&lt;读书笔记&gt;软件调试之道 :从大局看调试-理想的调试环境

声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! ----------------------------------------------------------------------------------------------------- 自动化测试 1.有效的自动化测试 明确说明测试结果是否通过 不需要安装.测试后也能够撤销对环境所做的任何修改 单击运行所有的测试 全面覆盖,做到足够解决完全覆盖是可能的 2. 自动化测试

&lt;读书笔记&gt;软件调试之道 :从大局看调试-零容忍策略

声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! -------------------------------------------------------------------------------------------- 缺陷优先 如何使缺陷修复与软件开发相结合? 如何估计缺陷修复花费的时间? 如何确保项目不会陷入<人月神话>中所描述的无数缺陷修复的焦油坑中呢? 缺陷优先 要采用早起缺陷修复原则,并且基于以下两

&lt;读书笔记&gt;软件调试之道 :问题的核心-修复后的反思

声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! -------------------------------------------------------------------------------------------------- 有时尽管修复设计的是一个孤立的代码区,但你还是需要大局观,在修复缺陷之后花时间反思一下! 一旦确定了错误的来源,就可以采取措施避免它再发生!有些情况下,只不过是告诉你未来在在这一方面要更加小心

&lt;读书笔记&gt;软件调试之道 :问题的核心-如何修复缺陷

声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记.欢迎转载! 修复缺陷 对于一个好的修复来说,不仅仅是让软件运行正确,还需要为将来奠定基础.一些列零散的未经仔细考虑的修改,都将是原本的简洁设计逐步消失. 好的修复必须同时实现以下目标: 修复问题 避免引入回归 维持或者提高代码的整体质量 -----------需要参考的规则如下---------- 1.清除障碍 确保一切从头开始,当你不舍得抛弃诊断阶段所做的修改时,利用源码控制系统. 需要对所做的修

&lt;读书笔记&gt;软件调试之道 :问题的核心-诊断

声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记. 不要急于动手! 尽管可以利用各种工具和技术以及软件自身查找缺陷,但是你最重要的财富是你的智慧 一种调试方法 提出假设->设计实验->假设不成立,重新开始 采用不同类型的实验 进行几种不同类型的实验,但是每种实验必须有一个明确的目标.比如软件内部运行状态.软件的输入参数.本身编码逻辑. 实验必须起到验证的作用 实验是一种达到目的手段,而不是目的的本身.可以通过实验用来证明或者推翻假设.

&lt;读书笔记&gt;软件调试之道 :问题的核心-重现问题

声明:本文档的内容主要来源于书籍<软件调试修炼之道>作者Paul Butcher,属于读书笔记. 重现第一,提问第二 问题重现是实证过程的最强大武器,如果不能重现问题,你也无法证明修复了它 首先按照缺陷报告的描述的步骤来做, 抓住重点,包含三个控制因素 软件本身:确保你使用的软件版本和bug提交的版本一致,使用相同的编译工具和相同的编译参数. 软件运行环境:如果要与外界环境交互,则确保使用相同外部系统.比如测距仪,需要在同样的光照环境.温度和供电方式. 提供的输入:如果软件代码的运行和配置参数

&lt;读书笔记&gt;软件调试之道 :实证方法

有效调试不仅仅是排除缺陷,其包含如下几个步骤 弄明白软件为何运行错误 修复这个问题 避免破坏其它部分 保持或者提高代码的总体质量 确保同样的问题不在其它地方发生,也不会再次发生 构建实验.观察结果 依赖观察和经验,而不是理论和纯逻辑推理 阅读源码,推理软件的运行状况,通常效率低下而危险 要仔细的构建实验环境并观察软件的运行状况 需要澄清的几个问题 你知道发生了什么吗? 要明确知道到底发生了什么,什么情况下发生的. 不要完全依赖缺陷报告,缺陷报告本身的错误也不会少 如果没有缺陷报告,应该在了解整个

《基于Android的读书笔记api》

1.     系统的需求分析 1.1系统目标 目本程序旨在开发一款简单实用.易操作的一款读书笔记软件. 1.2功能需求 该记事本软件应该具有以下功能: (1)登录 (2)书籍分类管理 (3)书籍管理 (4)我的读书笔记 (5)汇总每个用户的笔记数量 (6)统计某一个用户的每一本书的笔记数量 2.     系统的概要设计 该软件是一款是基于Android开发的手机应用,简单实用,易于上手. 2.1    运行环境 1.Android手机或平板电脑:主频在1Ghz及以上,内存为1GB以上,系统版本为

第七章读书笔记《深入理解计算机系统》

第七章 读书笔记<深入理解计算机系统> 链接是将各种代码和数据部分收集起来并组合成为一个单一文件的过程,这个文件可被加载(或拷贝)到存储器并执行. 链接可以执行于编译时,也就是在源代码被翻译成机器代码时:也可以执行于加载时,也就是在程序被加载器加载到存储器并执行时:甚至执行于运行时,由应用程序来执行. 在早期的计算机系统中,链接是手动执行的.在现代系统中,链接是由叫链接器的自动执行的. 7.1 编译器驱动程序 1.大部分编译系统提供编译驱动程序:代表用户在需要时调用语言预处理器.编译器.汇编器