我已经使用了Phadke的实验设计方法来选择用于测试(软件)系统的参数值。

简而言之,该方法使用测试(方法)参数的最小值,典型值和最大值来改变它们根据适当选择的田口阵列。

穷举测试系统具有四个参数,每个参数具有三个值的装置即3 ^ 4测试必须运行。使用L9阵列,只需要运行9个测试,而不是81个(= 3 ^ 4)。

还有其他众所周知的选择测试参数值的方法吗?

评论

我称自己为高级软件测试员,因为我已经担任测试员7年了。我对测试有很多了解,但我知道我永远做不到。诸如此类的问题使我的心感到温暖,因为我知道接下来我需要学习什么以及仍可以从测试中学到什么。很棒的问题。 +1。谢谢!

@汉尼拔:谢谢!我看到您也看到了贾斯汀的出色答案。绝对值得入场的价格。 ;-)

#1 楼

彼得,

问得好。对于软件测试人员而言,这是极其重要的。

我研究了过去五年如何将软件测试输入最有效,最有效地稳定地组合的问题。

巧合的是,五年前,我从几乎与您现在提出的问题开始。到那时,我有了:


在Googled上搜索“实验设计”和“软件测试”,并找到了Madhav Phadke博士的参考文献(碰巧的是,他是一名前学生
发现Phadke博士设计了RDExpert,尽管RDExpert最初是为帮助研究与设计项目而创建的,但也可以用于在软件测试项目中选择功能强大的小型测试集,使用基于正交数组的测试选择标准
使用RDExpert创建测试集(并将这些测试集与软件测试人员手动选择的测试集进行比较)
通过要求一个测试人员执行来收集结果手动选择的测试和另一个测试器执行基于正交数组的测试;就每个测试人员小时发现的缺陷和整体发现的缺陷而言,基于OA的测试大大优于手动选择的测试。数据组合策略比为我正在处理的项目类型手动选择组合要有效得多,但是我很好奇其他技术是否能更好地工作。

这是我的思想发展的方式:


在软件测试中,对数比正交数组更有效。对制造业,农业,广告和许多其他环境有效。

为什么这样?


与基于正交数组的解决方案相比,成对测试几乎总是需要更少的测试。
基于正交数组的解决方案要求与成对解决方案具有相同的覆盖范围目标的原因(例如,每对输入至少要测试一次),加上附加的障碍/特征,使得整个域的分布均匀。 />额外测试(AKA实验)的“成本”值得在软件测试之外的许多设置中支付,因为结果在这些测试中是非二进制的。例如,某人在胶片的处理过程中为绿色的特定阴影寻求所需的暗度,光泽度,亮度和光泽,将从从正交阵列收集的附加信息中获得的信息将从中受益。
但是,在软件测试中,额外测试带来的额外成本是不值得的。通常,您并不是在寻找连续体中的理想点;您正在查看当两个特定的数据出现在同一事务中时将触发哪些缺陷。为了最有效地识别这种二进制方法,您想要的是成对的解决方案(具有更少的测试),而不是更长的基于正交数组的测试列表。

我分享了自己的观点,我也添加这些点。


首先,与我对组合测试设计的其他一些看法不同,我对这个狭窄主题的看法并非基于多种经验研究;它基于(a)我上面提出的推理,以及(b)我与专门研究“实验设计”和软件测试设计交集的博士的十几次对话,以及其次,据我所知,据我所知,很少有研究(如果有的话)收集到的经验数据表明,在软件测试场景中,成对解决方案与基于正交数组的解决方案相比具有优势。
第三,我强烈怀疑,如果您问Phadke博士,他会给您说明为什么基于正交数组的解决方案适合(甚至更可取)某些软件项目的成对测试案例选择方法的原因。我非常尊重他和他的儿子。
时间使我现在无法深入到最后一点,但是“混合强度”测试也是让您意识到的另一种更强大的测试设计方法。使用混合强度测试解决方案,测试设计人员能够为整个计划选择默认的覆盖强度(例如,成对/ AKA 2向覆盖),并且在同一组测试中,选择某些高优先级值以获得更高的覆盖强度(例如,为每个“信用等级”,“收入”,“贷款金额”和“贷款与价值之比”选择的4向覆盖强度)将使您的手掌对计划中的所有项目都实现成对覆盖,并为这四个高优先级参数的每一个可以想象的值组合。这种方法使您可以专注于基于风险的测试注意事项。


在提交前3条评论后添加了附加说明:

@ Hannibal,@ Peter K.和@MichaelF,谢谢您的评论!如果您想了解更多有关这些内容的信息,我建议通过此“捆绑包”中的关于成对测试和组合测试的多个链接。特别是,迈克尔·博尔顿(Michael Bolton)关于成对测试的文章直接相关,并且写得很清楚。它是周围为数不多的介绍性文章之一,可以准确地描述基于正交数组的解决方案和成对解决方案之间的区别。不过,如果我没记错的话,Michael所使用的示例是该规则的罕见例外; OA解决方案具有与最佳成对解决方案相同的测试次数。

评论


好的答案,贾斯汀!谢谢。我会再给您几个小时的时间,但是您会发现问题所在!

– Peter K.
2011年5月24日12:16

真好!我将不得不在这里阅读这些好东西!

– MichaelF
2011年5月24日13:02

#2 楼

全对是选择测试向量的另一种众所周知的方法。粗略地说,保证测试矩阵至少包括每对参数值一次。某些All-Pairs生成器可以处理约束,例如一个参数依赖于另一个参数(例如,需要在Windows上测试Internet Explorer,而不是在Linux上)或某些参数值是互斥的。