我们都读过这样一句话“一分预防胜过十分治疗”。如果把这句话用到软件领域,就意味着如果缺陷在流程中存在时间越长,修复成本就会越高。因此需要进行根因分析,以找出问题的原因,并提供适当的解决方案。
我们将重点关注以下几点:
- 什么是根因分析
- 为什么会出现缺陷
- 如何进行根因分析
- 根因分析示例
1. 什么是根因分析
根因分析是一种系统化的方法,用于确定事情的根本原因。它有助于采取适当的措施来解决问题。理想情况下,软件应该是零缺陷,不出现任何故障。但实际上,这是不可能的。通过有效的质量保证过程,我们可以确保软件具有最少的缺陷。我们还可以确保有正确的技术可供使用,以找出任何缺陷的根本原因。这种确定问题发生原因的过程称为根因分析(RCA)。
理解根因分析的最简单方法是思考日常问题。如果我们生病了,我们会去看医生,请他们查找病因。如果汽车坏了,我们会请一个师傅找出问题的根本原因。要解决或分析一个问题,我们需要进行根因分析,准确找出问题的原因以及解决方式。
根因分析就像一个逆向的事件链。它从最后一个可能的行动开始,向前逐步追溯。它会一直延续到问题的起始点。因此,被称为逆向工程。
有几个基本问题需要问:是什么、为什么、什么时候、什么方式。借助这些问题,我们可以深入研究软件生命周期的每个阶段。这样做是为了准确跟踪缺陷的起源以及缺陷何时出现在系统中。
2. 为什么会出现缺陷
在深入研究根因分析之前,让我们先了解一下导致软件缺陷的常见因素:
- 需求不清晰: 任何软件应用程序的成功都取决于开发团队对客户需求的理解。需求不明确和对需求的误解是导致软件缺陷的两个主要因素。
- 编程错误:程序员和其他人一样,也会犯编程错误。缺乏经验或没有相关领域知识的程序员,会在编码过程中出现简单的错误。缺乏简单的编码实践、单元测试、调试,是大多数问题出现在开发阶段的常见原因。
- 沟通障碍:如果没有将需求正确地传达给开发团队,就会在开发阶段引入缺陷。有时,开发人员和测试人员之间的沟通不畅也会导致软件缺陷。
- 时间压力: 软件项目的排期并非易事。当截止期限临近并出现危机时,错误就会发生。如果没有足够的时间进行正确的设计、编码和测试,那么显然会引入并漏测一些缺陷。
- 环境不合适: 不适当的环境,如硬件或软件不兼容,会导致软件缺陷。通常,一个环境中的测试数据往往与另一个环境不同。因此,一些缺陷未被发现。
3. 如何进行根因分析
根因分析分为 4 个步骤。我们需要提出 4 个问题来总结RCA流程:
- 是什么? 第一步是确定问题是什么。如果我们不明确问题,就永远无法找到根本原因。例如:客户反映说他们无法下单。
- 什么时候?下一步是找出问题发生的时间。对于我们当前的示例,当客户试图下单时,他们收到了一条错误信息:”无法处理订单“。事情发生在下午 3:30 到4:00之间,当客户点击下单按钮时,出现错误消息。
- 为什么? 下一步是确定问题发生的原因。基于在 “是什么 “和 “什么时候”中获得的信息,进行详细分析以确定根本原因。对于我们当前的例子来说,根本原因是支付系统在下午 3:30 至 4:00 之间出现故障,从而干扰了订单的下达。
- 什么方式? 根因分析的最后一步是找出如何确保问题不再发生的方式。对于我们当前的例子,我们可以增加一种告警机制,可以在任何系统出现故障时发送电子邮件。在网站上显示一条信息,说明订单下达出现了一些问题,团队正在努力解决该问题。这将确保用户体验不受影响,并且技术团队也能及时收到告警、解决问题。
缺陷可能会影响软件产品或其功能,例如功能故障或整个系统故障。这会导致资金、时间和声誉受损。因此,根因分析可以发现问题出在哪里。通常,我们使用 RCA 作为一种诊断问题的方法。然而,同样可以用它来找到成功的根本原因。这种类型的分析可以帮助确定优先级,并主动修复由于相同根本原因而可能在未来出现的问题。
4. 根因分析示例
我们已经看到根因分析如何帮助识别问题并采取下一步措施。同样重要的,各行各业也可以利用这些 RCA 来提高成功的几率。
让我们以迪士尼的《狮子王》为例。迪士尼公司于 1994 年秋季推出了第一款面向儿童的多媒体 CD-ROM 游戏《狮子王动画故事书》。虽然其他许多公司多年来一直在推销儿童项目,但这是迪士尼在这个市场上的第一次尝试,并且进行了大规模的宣传活动。销售额十分可观。然而,接下来发生的事情却一败涂地。
12 月 26 日,圣诞节后的第二天,迪士尼客服务电话就开始响个不停。很快,电话支持技术人员接到了大量的投诉电话,来自一直哭闹的孩子的家长们,因为他们无法使用软件。问题在于有缺陷的软件无法在顶级 PC 平台上运行。事实证明,迪士尼没有在市场上具有广泛代表性的不同PC 机型上测试该软件。该软件可以在迪士尼程序员用来制作游戏的一些系统上运行,但不能在普通大众最常用的系统上运行。
然而,即使在制作并销售了数千张CD-ROM之后,仍然没有人报告该缺陷。迪士尼最后只能通过产品退货和更换CD-ROM来支付费用。他们还承担了与调试、维修和测试相关的其他费用。这一缺陷影响了公司的声誉和财务。
该公司发现问题的根本原因是软件无法在顶级 PC 平台上运行。如果采用正确的测试方法,在消费者使用的前五大平台上测试软件,就能在大量印刷光盘之前更容易地发现这一问题。另一种方法是对软件进行 Beta 测试(由一组客户对其进行检查)。反过来,这可以确保在发布之前发现问题。
从那时起,大多数行业都遵循 RCA 这个简单的分析示例。所有游戏公司都会在市场上排名前五的操作系统上测试自己的游戏。
通过本文,希望您对根因分析,及其对当前和未来项目成功的重要性有了更深入的了解。