我对高度复杂的开发项目应用什么标准来保证获得“真实世界”的数据?

软件测试 测试管理 测试设计
2022-01-22 19:00:51

我过去开发的产品和我现在开发的产品都有一个相当大且复杂的矩阵,包含可能的配置、工作流程和数据场景。不开玩笑,一个产品有接近(如果不超过)100 个布尔配置标志,不一定都在一个地方,但它们中的许多相互不兼容(如果我将此位设置为 true,我无法使用激活时激活的功能我将该位设置为 false),而没有在应用程序中进行任何真正的内部验证以防止无效配置。此外,虽然该产品的大多数用户使用标准配置,但所有用户都有一些非常独特的配置组合。

该产品的许多新功能开发都是由客户驱动的,因为客户提交了带有要求的更改请求,并且根据这些要求进行了开发。但是在变更单的这些要求中,对于客户的现有配置并不总是透明的,因此对于那些非标准配置的风险因素是什么也不是很清楚。由于新功能一旦发布,就会发布给所有具有当前维护合同的现有客户,风险管理要求我们将大部分时间和精力集中在那些常用配置上。

然而,在过去和现在,我都经历过很多情况,这些非标准配置对我们造成了严重的伤害。真正了解这些的唯一方法是拥有客户端当前配置的精确副本。但是对于拥有数百个客户端的客户端群,每个客户端都有不同的配置,通过所有客户端数据运行测试以进行 EVER 开发工作似乎并不切实际。

因此,有时需要在测试过程中使用客户端数据。但也需要优先考虑那些对大多数客户产生最广泛影响的测试用例。在某种程度上,这些似乎是相互冲突的需求。

那么问题是:构建和修改如此高度复杂的项目的软件开发组织如何确定在发布前测试过程中何时使用客户数据,同时仍保持满足交付期限所必需的时限风险评估?

3个回答

在我的团队中,这个过程很简单。我们没有自动化测试,所以我们得到的几乎都是使用真实世界的数据,这些数据通常是一周、一个月或更长时间的过时数据。当有人把它搞砸或者他们需要说明生活中发生的事情时,它就会焕然一新。

您试图在您一直使用的系统上重现它。

  • 如果你不能在那里,那么你会找到更多关于他们的设置,然后去一个有那个配置的系统。
  • 如果仍然无法复制,我们要求从实时系统中刷新其中一个系统。
  • 如果我们仍然无法从实时配置中重现它,那么我们假设用户在撒谎(实际上已经发生了!)或者他们并没有真正理解过程/错误/场景,只是认为有问题。这种情况很少见,因为分析师通常在这些“错误错误”到达开发人员之前就将其消除。

最重要的是,如果您还没有配置,您需要一种好方法来导出他们的配置并将其加载到您的配置中。您还需要一种很好的方法来查找哪些配置标志有可能在他们声称错误所在的区域中导致问题。然后您不必使用它们的确切配置,而只需在您使用的系统上调整几个很多。

分析最流行和最有问题的非标准配置组合将对您有很大帮助。不要测试每一个(或者你永远不会完成一个项目),但获得那些相当普遍的,或者有导致问题的历史,会让你在测试中获得很好的结果。

我曾经研究过一个具有大量配置设置的金融服务产品——可能和提问者描述的一样多。我们有很多客户,每个客户都有自己的配置。所有客户都用完了我们在数据中心托管的相同产品安装。我们的数据库包含每个客户的配置设置及其所有数据,因此我们对产品的使用方式了解很多。

针对每个客户的配置测试每个功能是不可行的。但是,在我们的产品中,产品功能从未依赖于每个配置设置。我研究了每个功能以提出该功能所依赖的配置设置列表。这份清单可能并不完美——我可能时不时地遗漏了一些东西或不必要的东西——但它很接近。我分析了这些设置的可变性,以确定哪些配置被实际使用,哪些被未使用的配置支持。

鉴于这些列表,我编写了自动化测试,针对这些设置的交叉产品测试高优先级功能,或者,当这不可行时,我尝试使用成对的配置集。

这种方法并不完美,但它让我们摆脱了决定哪些公司配置最重要的陷阱。自动化测试发现了错误,看起来我们的质量提高了。

配置测试是一个常见的软件测试挑战。配置矩阵可以帮助概述常见的客户配置,甚至可能帮助识别一些“有趣的”组合。

对于高度复杂的配置,一种好的方法是组合测试方法,使用对可能的配置设置进行成对或其他 n 向分析。

我建议看一下 PICT 工具文档,它为配置测试提供了丰富的示例。http://download.microsoft.com/download/f/5/5/f55484df-8494-48fa-8dbd-8c6f76cc014b/pict33.msi