生成测试用例

时间:2011-08-02 19:39:01

标签: testing automated-tests generator

我需要一种算法来根据一组因变量自动生成测试用例。实施语言并不重要。

作为简化示例:

假设我正在测试函数F(a,b,c,d)

  1. a可以是a1,a2,a3
  2. b可以是b1,b2
  3. c可以是c1,c2,c3
  4. d可以是d1,d2如果a = a1,d2,d3,d4如果a = a2,d5如果a = a3
  5. 如何生成所有参数组合?

    [a1,b1,c1,d1] [a2,b1,c1,d3] [a2,b1,c1,d4]

    等等?

3 个答案:

答案 0 :(得分:1)

您所看到的正式名称为组合测试。您可以阅读有关此here的更多信息。您可以在线找到许多工具,但我使用CTE-XLPICT

取得了很好的成功

它们都没有生成代码,但会为您生成组合。

答案 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进行更改。