医生,我的软件有什么问题?

医生软件按时提供优质的产品,可能是困难的。能够及时采取良好的测试决定是至关重要的。是否有方法可以提高您的测试决策能力?是的,人们正在使用它们,他们已经表现出有价值。因此,让我们来看看一些可能性来增强你的测试方式以及产品的质量。

当必须进行决策时,有时会在决定所做的时间和当时可用的信息之间存在冲突。在收集所有信息之前,它可能需要太长。您可以错过机会,决策选项可能过期。所以问题出现了:当你只有部分信息时,你可以做出决定吗?

医生如何决定

让我们来看看医生如何根据患者的考试做出决定,看看我们是否可以使用类似的方法来决定需要多少和什么样的测试?在电视上看房子,我被医生决定的方式触发了。它们遵循一种迭代方法:诊断患者,进行测试或给予他们特定的处理,看看它是如何工作的,如果这不起作用,则尝试另一种。它听起来有点像一个连续的计划,或者敏捷的检查和适应方法,所以这可能也可以用于测试决策。

测试和治疗的顺序通常是基于它将解决疾病原因的可能性,或者提供帮助医生治愈患者的信息。每个测试和响应组合都给他们提供了帮助他们排除令人遗症并更接近回答患者的问题并以他们所能的最佳方式对待它们的信息。

他们为什么这样工作?首先,因为在第一天运行所有测试是不可能的,它会花费太多时间,太昂贵,患者不喜欢这么多考试(它甚至可以沿途杀死他或她)。但他们这样做的另一个原因是因为他们可以这样做。研究,开发和测试了检查方法和药物,并通过专业熟练的医生和护士在日常工作中进行了记录的证据。他们知道考试确定疾病原因的机会,以及某种治疗将根据临床试验治愈它的可能性。

考虑测试决策

那么医生如何如何在管理测试时决定与决策相比?例如,我们可以测试某些功能,并根据需要进一步测试的结果来测试一些功能。但是,我们能够以这种方式工作吗?它需要我们知道一组测试如何涵盖产品的功能,能够决定进一步测试是否有用。通过寻找缺陷,还可以进一步测试帮助我们,或者测试判断或产品有足够的质量,可以发货吗?只有在这些情况下,我们通常会决定继续测试。

但是,产品往往非常复杂,可能的测试用例的数量太大,无法了解产品的质量,只有有限的测试用例。基于风险的测试方法可以有助于限制测试量,从而在完成每个测试后导致越来越小的风险;但它仍然很难知道失败的风险以及这些风险有多大。因此,我们可以从测试中获得的信息通常是有限的,不充分量化并且具有很大的不确定性;此信息并不真正帮助我们对测试和何时停止测试的决定。

在我看来,固化患者和开发和测试软件之间也存在根本差异。在第二个是发明的同时,第一可以被认为是生产的。鉴于统计学上的患者或多或少相同,已经为可以通过培训的专业人员进行的治疗方法开发了方法,并将提供规定的确定性结果。

软件产品没有这种相似之处,以及方法(无论是训练有素的专业人士使用)是否提供了不保证产品的质量水平。这也解释了为什么软件开发人员和测试人员收到的信息不会给予他们与医生一样相同的信心。顺便说一下,在施工中,已经研究和测试了有类似的物理法,类似于药物中的药物。因此,建筑工程师能够根据可用的方法和证据设计一个系统并了解,建筑物会在地震或洪水中生存的可能性。

这是否意味着我们可以’正确考虑测试决定吗?不幸的是,大部分时间我都认为’案件。虽然我们确实有见解 测试如何推动产品质量, 它’难以做出艰难的决定以及(不是)测试以及何时停止测试。我们需要找到一种量化质量的方法。

测量质量

测试通常会导致找到的缺陷。如果找到的有关已发现缺陷数量的信息,则会产生问题可以帮助您了解产品的质量,并在进一步测试中做出决定?

支持软件发布决策,所以所谓 软件可靠性增长模型 已经开发了。这些模型应用数学公式或曲线拟合,以预测基于测试结果的产品包含多少缺陷。虽然这些模型中的一些已经过测试和校准了较大的数据集,但这些模型的准确性通常非常低,直到项目迟到。在一个项目中的阶段,信息并不真正帮助您,因为您可以采取的唯一可能的决定(这是推迟发布并进行额外的测试和解决问题)并不是真正令人满意。因此,我的看法是软件可靠性增长模型并没有真正帮助您进行测试和/或发布决策。

我使用称为项目缺陷模型的缺陷估计模型 衡量和控制产品质量。该模型通过估计将进行多少缺陷,以及在缺陷信息中缺勤信息,估计将制定和跟踪质量,并在缺陷信息中持续跟踪和转向。它已被证明是一个有价值的仪器,可以定义和同意所需的产品质量,并在提供适当的质量时转向项目和团队。您还可以使用项目缺陷模型 在敏捷团队中管理产品质量.

还有其他数学技术,基于贝叶斯信仰网络,提供更多价值;提醒我在未来写下这篇文章。使用缺陷模型仍然有所不同,我听到的原因是他们太难部署和成本太多时间和金钱来实现。我不同意这个。当然,他们需要初步投资训练和教练,但有足够的证据表明 投资质量是经济的 。看着 质量差的成本, 和 由于缺陷的迟到发现,项目延迟,可以在第一项目内获得缺陷模型的使用。

敏捷迭代

可以从测试系统的信息可以帮助您采取更好的测试决策吗?如果您正在测试使用瀑布方案开发的竞争系统,但如果您正在开发产品(例如,使用敏捷方法,设计和测试),那么它肯定会有所帮助。

如果使用特定功能定义用户故事,并且验证该功能的验收测试,则运行测试将为您提供用户故事的证据(“完成”,因为它们在敏捷中称之为“完成”。如果在编写软件之前使用测试驱动开发,并在编写软件之前编写测试用例,请通过执行功能正常工作的测试。在迭代期间,这将提供正常实施功能的团队信息,并且在接受演示会议后您知道您已提供工作软件。

从缺陷数量收集的数据可以帮助您规划和跟踪质量,并改进您开发软件的方式,例如,和 根本原因分析。但仍然,“方法”不保证质量;您必须设计每个特定的测试用例,仍然是一种发明。以及一个功能或用户故事正在运行的信息仍然没有为您提供关于您将开发的软件质量的任何信息。

结论

我的结论是,在观察测试时,肯定有可能与有限的信息进行决定。最佳实践是在小迭代中开发和测试软件,估算和跟踪每次迭代的缺陷数量,并使用测试驱动的设计和基于风险的测试方法来最大限度地提高测试结果。像项目缺陷模型这样的测量工具可以帮助您了解产品的当前和预期的质量,并决定何时采取行动。这种工作方式为您的客户提供了工作软件,并尽可能在足够的功能准备就绪时发布产品。

(这篇职位于2010年12月4日发布,并于2014年7月9日完全修改和更新)。

分享这种经历
  • 21
    分享

本林德林

我帮助组织具有有效的软件开发和管理实践。有关敏捷,精益和质量的多个网络的活跃成员,以及常见的演讲者和作家。

发表评论

本网站使用AkisMet减少垃圾邮件。 了解如何处理评论数据.