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

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

#1 楼



解决方案概述

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

Glowcoder和user246有其优点。我特别喜欢testerab的评论,原因会在一分钟内变得显而易见。 :https://app.hexawise.com/share/JJNP37PJ(很抱歉,必须注册才能访问它,这确实有点麻烦;可喜的是,注册是免费且快速的)。您将能够编辑我的示例计划,将您的示例占位符测试输入替换为实际测试输入,并快速生成测试以解决您的问题。

我已经认真研究了测试设计问题,例如您最近5年提出的问题。我已经发表了有关以下测试设计方法的好处的文章和演示,与专门研究最高效率测试设计的博士合作,在测试会议上发表了演讲,赞扬了这种方法的好处,并创建了Hexawise测试用例设计工具来实现这一目标测试人员可以轻松地自动生成测试,以精确地解决组合爆炸的问题,例如您在此谈论的那种。您可以说对,我一直痴迷于理解这个难题,并尽我最大的努力来帮助他人理解解决该难题的最有效方法。根据我的经验和研究,我将建议这样做:

特定解决方案(带有示例)

首先,您需要确定测试输入。 (我已经从glowcoder的答案中借鉴了一些想法)在示例测试计划的输入中,显示在计划中,如下所示:



完成此操作后,单击“创建测试”按钮以创建一组成对测试。您会看到有559,872个可能的测试用例。从中,Hexawise可以确定它可以创建的最小的一组测试,以确保在至少一个测试用例中对每一对可能的测试输入进行一起测试。信不信由你,只需要22个测试即可。从技术上讲,每对测试输入都会出现,但一对值除外。遗漏的一对被有意地从解决方案中删除了,因为测试人员不可能执行该任务。解决方案中未出现的无效对已通过操作系统= Mac OSX和浏览器= IE进行了测试。


覆盖率报告

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



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



话虽如此,如果您想获得比那些功能异常强大的初始22个测试更全面的覆盖范围,那也很容易实现。您可以在“创建测试”屏幕的下拉菜单上选择“三向”覆盖率。您将发现只需要95个测试就可以测试计划中3个值的每个可能组合。 (四向覆盖将需要359个测试,等等。要点是,您可以向上或向下拨动覆盖范围以达到您的彻底性目标)。

关于成对测试设计方法,组合测试,Hexawise工具,基于实验设计的软件测试设计方法以及基于正交数组(AKA OA或OATS)的测试设计方法的一些很好的简洁信息可以在此处引用的链接中找到(<----信息性链接,包括文章,以及一组有趣的,有见地的,丰富的pohtograph入门PowerPoint幻灯片。)

我希望这个答案会有所帮助。 br />

评论


Hexawise看起来不错,并且在确定要运行哪些测试以及如何实现良好覆盖率方面显然会有所帮助。但是,OP的问题集中在报告此类测试的结果。

–西蒙·斯蒂尔(Simon Steele)
11年5月12日在11:09

Simon,我在回答中添加了几个屏幕截图,希望可以使其更加清晰。最终的屏幕快照是coverage屏幕。它表明计划中的值对的100%被第22个测试覆盖,并且,如果某人想要创建10个快速的“烟雾测试”,那么即使前十个测试也将测试所有可能的测试对中的76.2%被测系统内存在的输入。对于“已经测试了三分之二的百分比?”,可以制作相同类型的覆盖图。也一样谢谢。

–贾斯汀·亨特(Justin Hunter)
2011年5月13日19:13

我添加了一些绿色和红色“矩阵报告”的新屏幕快照,因为一些测试人员喜欢它们如何提供清晰的摘要覆盖范围以及存在的特定差距。 (这些视图以前不可用)。

–贾斯汀
15年1月27日在21:04

#2 楼

怎么做
让我们将尺寸的大小设为C1, C2 ... Cn,其中n是尺寸数。因此,如果您的值是Windows, Mac, Linux(我确定您使用的Windows版本不同,而C2可以,则C1可能是3),但是对于示例来说,它可以工作。)您的测试总数将是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.

好吧,好吧,显然我们在高级模式下有一个明显的错误。因此,对于该模式有两种选择,很明显为什么会有如此多的类型以50%徘徊-其中一半总是失败。
现在,我们来看一下报告引擎:Velocity在50%的时间内通过了,但是水晶只有33%的时间。由于我们已将其最大值降低到50%,这表明33/50 = 2/3,因此它与具有3个选择并传递2个选择的东西不兼容。我们向上滚动到OS,发现Linux的比例从其余的50%降低到25%。看起来好像我们发现了它:Linux上的Crystal报表似乎无法安装。
这是您可以收集的信息的想法。您可以编写一个小脚本来对这些信息做出一些聪明的猜测,以便知道要查找的内容。显然,只有一个通过率低的事实意味着您有理由对其进行调查。
现实检查
现在,有了12个维度,每个维度大约有5个选择,您正在寻找大约2.44亿个测试。我什至认为运行是不可行的。即使每个选择只有3个,您也要进行超过一百万次测试。我仍然认为很多。除非您拥有庞大的服务器场。您真的不能指望安装少于10分钟,对吗?另外,您还必须完全清理自己。那将超过8.8万小时的服务器时间。我不认为简单地进行十二个嵌套的循环是一个明智的主意。 :-)

评论


操作系统细分很重要,因为这些可以单独发布。我曾经在一个驱动程序必须支持大约40种不同操作系统的地方工作。当您考虑32位和64位Windows版本,Itanium和Alpha以及受支持的所有不同版本的linux,unix和大型机时,这些数字加起来非常快。通常,您需要做一个“向下钻取”报告,以使观众确定他们想要在广阔的组合中看到的内容。

– Tangurena
2011年5月8日19:37

我支持坦格琳娜的评论。向下钻取报告对于显示此类信息非常方便。

– Ethel Evans
2011年5月10日在18:31

是的,假设您在所有维度上的覆盖率均为100%,则Excel的数据透视表非常适合查看此类结果。找出要显示成对结果的数字会更加复杂。

–西蒙·斯蒂尔(Simon Steele)
2011年5月12日,11:10

我和Tangurena有相同的问题,因为我在大约40种不同的环境中支持过滤器驱动程序,这些数字肯定可以建立起来!

– MichaelF
2011年11月3日15:10

#3 楼

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

评论


这就是我的想法!我也从未使用过它,但是所有配对或类似的东西听起来很有希望。

– Ethel Evans
2011年5月10日18:30

#4 楼

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