生成随机测试用例

时间:2010-10-27 10:13:49

标签: java

我正在开发一个库,需要测试它。在我的类中定义了几个操作(作为函数),可以由客户端以任何顺序调用。

Operation1(param1, param2)
Operation2(param3)
.
.
.
OperationN(paramX, paramY, paramZ)

param1,param2等是整数/双

现在,我正在考虑编写一个测试代码来随机化操作的执行,这样就可以随机执行一系列M操作。每次调用操作时,都需要随机生成参数。

在Java中执行此操作的最佳方法是什么。

2 个答案:

答案 0 :(得分:1)

您需要一个操作界面,例如

public interface Operation {
  public void do();
}

为要执行实现接口的类的每个操作创建。各个参数可以传递给构造函数。

然后将所有实例放在类型操作列表中,随机化并迭代它。

List<Operation> ops = new Vector<Operation>();
ops.add(new ...);
Collections.shuffle();
for (Operation o: ops) {
  o.do();
}

答案 1 :(得分:1)

随机测试似乎很有吸引力,因为它们似乎可以避免编写大量单独的测试。问题是你永远不能确定随机序列会遇到可能失败的边缘情况等。 IMO它们不能替代精心设计和实施的白盒测试。

对于像你这样的案例,我尝试设计一堆测试助手,以便于构建输入数据结构。例如,一个简单的语言+解析器,允许我将输入和预期输出表示为文本,嵌入在单元测试用例中或作为单独的文件。