我需要一种算法来根据一组因变量自动生成测试用例。实施语言并不重要。
作为简化示例:
假设我正在测试函数F(a,b,c,d)
如何生成所有参数组合?
[a1,b1,c1,d1] [a2,b1,c1,d3] [a2,b1,c1,d4]
等等?
答案 0 :(得分:1)
答案 1 :(得分:0)
这听起来比较特别。假设您订购了参数,以便一个参数的可能性列表仅取决于“之前”参数,您应该可以执行以下操作:
recursiveTestAllCombinations(previousParameters)
{
if (length(previousParameters) == numberOfParameters)
{
performTest(previousParameters)
return; //end of recursion
}
possibilitiesForCurrentParameter = getPossibilities(currentParameterIndex, previousParameters)
foreach (p in possibilitiesForCurrentParameter)
{
parameters = previousParameters
parameters.append(p);
recursiveTestAllCombinations(parameters)
}
}
recursiveTestAllCombinations([])
方法getPossibilities
将定义参数的条件:
getPossibilities(previousParameters)
{
if (length(previousParameters) == 0)
{
return [a1, a2, a3];
}
..
if (length(previousParameters) == 3)
{
if (previousParameters[0] == a1) return [d, d2];
..
}
}
答案 2 :(得分:0)
也许是the question and answers here might be worth following up on中的一些链接。您需要问的基本问题是,是否值得生成所有组合(可能是)。 Phadke的方法允许选择所有组合的良好子采样子集。这不是详尽的测试,但它提供了非常好的覆盖率。
Phadke's design of experiments方法为测试(软件)系统选择参数值。
简而言之,该方法使用测试(方法)参数的最小值,典型值和最大值,并根据appropriately chosen Taguchi array进行更改。