如何报告 n 维测试矩阵的覆盖率?

软件测试 自动化测试 测试管理 覆盖范围
2022-01-17 16:37:57

我有一个用于我的产品安装的测试矩阵,它是 n 维的,此时 n 大约为 11 或 12。例如,操作系统是一个维度,数据库是另一个维度,报告引擎是第三个等等。在这个矩阵中,这些参数的每个交集都是一个单独的测试,需要运行和报告。

如何显示这些结果,以便可以轻松查看它们以查看哪些测试已运行/通过/失败?

4个回答

在此处输入图像描述

解决方案概述

为了解决这个问题,您需要基于成对覆盖方法(如下所述)或更彻底的组合测试设计变体,智能地选择一组可管理的组合。

Glowcoder 和 user246 有优点。我特别喜欢 testerab 的评论,原因马上就会清楚。

我已经为您的具体问题创建了一个相对详细的示例计划,并提供给任何想在这里看到它的人:https : //app.hexawise.com/share/JJNP37PJ(抱歉需要注册才能访问它诚然,这有点麻烦;好消息是注册快速且免费)。您将能够编辑我的示例计划,将我的示例占位符测试输入替换为您的实际测试输入,并快速生成测试以解决您的问题。

我已经深入研究了像你在过去 5 年中提出的这个测试设计问题。我发表了有关以下测试设计方法的好处的文章和演示文稿,与专门从事最高效测试设计的博士合作,在测试会议上发表演讲,赞扬这种方法的好处,并创建了 Hexawise 测试用例设计工具来实现它测试人员很容易自动生成测试,以精确解决您在此处讨论的那种组合爆炸。你可以正确地说我一直痴迷于理解这个难题,并尽我所能帮助其他人理解解决它的最有效和最有效的方法。根据我的经验和研究,这是我的建议:

具体解决方案(附示例)

首先,您需要确定您的测试输入。(我从 gloomcoder 的回答中借鉴了一些想法)在我的示例测试计划的输入中显示的计划中:

测试输入

完成后,单击“创建测试”按钮以创建一组成对测试。您将看到有 559,872 个可能的测试用例。从这些中,Hexawise 确定了它可以创建的最小可能测试集,以确保在至少一个测试用例中一起测试每一对可能的测试输入。信不信由你,这样做只需要 22 次测试。从技术上讲,除了一对值之外,每一对测试输入都会出现。丢失的对被有意从解决方案中删除,因为测试人员不可能执行;未出现在解决方案中的 Invalid Pair 是 O/S = Mac OSX 与 Browser = IE 一起测试的。

在此处输入图像描述

覆盖报告

如果您单击“分析测试”功能,它将带您进入一个屏幕,该屏幕会根据您的问题让您满意。它将显示在您的测试计划中的每个点都覆盖了这些组合的百分比。在仅仅十次测试之后,存在于被测系统中的潜在值对中有 76.2% 已经在至少一个测试用例中一起测试过。

在此处输入图像描述

前十个测试将在被测系统中发现很大比例的错误(而前 22 个可能会发现一些额外的错误)。从那里开始,您的测试的边际回报将显着下降,原因很简单,只能由 3 个或更多变量的特定组合触发的缺陷非常罕见。此图表显示了在前 13 次测试后停止执行测试时可能存在的特定覆盖率差距:

在此处输入图像描述

话虽如此,如果您想获得比那些异常强大的初始 22 测试更全面的覆盖率,那也很容易实现。您可以在 Create Tests 屏幕的下拉菜单中选择“3-way”覆盖。您会发现只需要 95 次测试即可测试计划中 3 个值的每个可能组合。(4 向覆盖将需要 359 次测试等。关键是,您可以向上或向下转动覆盖刻度以满足您的彻底性目标)。

可以在此处引用的链接中找到有关成对测试设计方法、组合测试、Hexawise 工具、基于实验设计的软件测试设计方法和基于正交阵列(AKA OA 或 OATS)的测试设计方法的一些好的、简洁的信息(<---- 信息链接,包括文章,以及一组有趣且富有洞察力的图片丰富的介绍性 PowerPoint 幻灯片。)

我希望这个答案有帮助。

怎么做

C1, C2 ... Cn让我们让您的尺寸大小成为尺寸n数量。因此,如果您的值是,C1 可能是 3 Windows, Mac, Linux(我确定您有不同版本的 Windows 等等,但例如,它可以工作。)您的测试总数将为C1 * C2 * ... * Cn.

我确定您已经定义了一个二维矩阵,它是您的一组标签。

我个人会将其导出为 CSV,以便您可以在 Excel(或您最喜欢的电子表格)中打开它。这是一个 4 维示例。拥有行标题使您可以轻松地按各个列对数据进行排序。如果您在此处执行此操作,您会注意到“高级模式”总是由于 DDL 中的一些拼写错误而失败。

Test No.    OS        DB      RepEngine  Easy/Adv mode     Result     Notes
0001        Windows   MySQL   Velocity   Easy              PASS       
0002        Windows   MySQL   Velocity   Advanced          FAIL       Schema failure on table AdvancedModeSettings.
0003        Windows   MySQL   Crystal    Easy              PASS
0004        Windows   MySQL   Crystal    Advanced          FAIL       Schema failure on table AdvancedModeSettings.

我想您甚至不一定需要将其吐出到 csv (尽管这不是一个坏主意。)您可以保留每个变量的测试数量标签。您的结果摘要输出可能会说(假设我们完成了整个运行)

OS:
  Windows  - 50%
  Mac      - 50%
  Linux    - 25%

Database:
  MySQL    - 42%
  Derby    - 42%

Reporting Engine:
  Velocity - 50%
  Crystal  - 33%

Easy/Adv mode:
  Easy     - 83%
  Advanced - 0%

好吧,我们显然对高级模式有一个明显的错误。因此,对于该模式有两种选择,很明显为什么有这么多类型徘徊在 50% - 其中一半总是失败。

现在,我们来看看报告引擎:速度通过了 50% 的时间,但水晶只有 33% 的时间。由于我们已将其最大值降低到 50%,这表明 33/50 = 2/3,因此它与具有 3 个选项并通过其中 2 个选项的东西不兼容。我们向上滚动到操作系统,发现 Linux 从其余的 50% 下降到 25%。看起来我们发现了它:Linux 上的 Crystal 报告似乎安装失败。

这是你可以收集到的信息的一个想法。您可以编写一个小脚本来对这些信息做出一些明智的猜测,这样您就知道要查找什么。显然,只有通过率低的事实意味着您有理由对其进行调查。

现实检查

现在,有 12 个维度,每个维度大约有 5 个选项,您正在查看大约 2.44 亿个测试。我什至认为这不可行。即使每个选项只有 3 个,您也会看到超过 50 万个测试。我觉得还是很多。除非你有一个庞大的服务器场。您真的不能期望安装时间少于 10 分钟,对吗?另外,您也必须彻底清理自己。那将是超过 88,000 小时的服务器时间。我不相信简单地制作一个十二嵌套循环是一个明智的主意。:-)

是否需要运行所有组合?这听起来像是应用所有对测试的经典场所。我自己还没有玩过这个,但我听到了关于Hexawise的好消息,这可能有助于显示和分析结果。

您需要将 11 维或 12 维交叉产品减少为可管理数量的组合。我在使用全对(参见http://en.wikipedia.org/wiki/All-pairs_testing)测试时遇到了一些运气。一旦你使用所有对减少了测试空间,你应该能够在电子表格中报告结果。