(我想这将是一个很好的面试问题,但就我而言,这比这更为实际。)
我们有一个庞大而复杂的应用程序,可以对数十种化学成分之间极其漫长而复杂的化学反应过程进行建模。我们正处于为应用程序设计验收测试的阶段,但是对于可能的测试路径数量之多,我们有些畏缩。在我看来,我们的情况非常类似于Google Maps开发团队在其“获取路线”功能中测试路线规划算法时必须面对的情况。显然,他们无法测试(验证和验证)所有可能的路线。那么,他们如何使自己的应用程序在任何情况下都能运行的信心?
而且由于我不希望知道他们是如何做到的,所以让我问您:您将如何设计一个具有足够代码覆盖率的测试套件,以使自己确信给定的应用程序是健壮的,而这在实际上是不可能的探索整个系统的每条潜在路径?
我正在寻找的原则是您可以用来将棘手的问题分解成较小的,易处理的部分,这些部分的总和提供了令人满意的整体估计:“我无法测试所有内容,但我可以对此进行测试,这个和这个-就足够了。” 考虑到实际的预算/时间限制,我并不是在寻找一种“证明是正确的”方法,而是一种审慎的方法。
(我将Google Maps示例用作箔纸,以寻求尽可能具体的答案。)