gpt4 book ai didi

java - 构建测试数据采用哪种策略

转载 作者:行者123 更新时间:2023-12-03 02:42:41 25 4
gpt4 key购买 nike

我是开发领域的新手,我想知道为单元测试构建一致且连贯的复杂测试数据(我的意思是我的 POJO 填充起来很复杂)的最佳策略是什么?

我听说过“测试数据生成器”,但网上谈论它的话题太少了。

最佳答案

我经常需要执行完全相同的任务。 Fuzz testing是一种合适的方法,尽管我们应该小心区分原始模糊器和智能模糊器。智能模糊器与普通模糊工具(如 zzuf )的不同之处在于它生成针对您的应用程序的数据。显然在这种情况下,您需要一个智能模糊器。

要编写智能模糊器,您需要提取那些表示“一致且连贯”的规则并将它们作为逻辑。也许最好举个例子。下面的 Model 类有一些反对它的逻辑。

class Model {

// Should always be between 0 and 10
int a;

// Children
List<Model> children;

// Only true at the root
boolean isRoot;
}

我们可以通过编写这些规则来为此编写一个测试数据生成器。

class ModelGenerator {
private Random random;

// A seed is a good idea; you want your tests to be reproducible
public ModelGenerator(int seed) {
random = new Random(seed);
}

public Model arbitrary () {
return generateSingleItem(true);
}

private Model generateSingleItem(boolean isRoot) {
Model model = new Model();
model.isRoot = isRoot;
model.a = random.nextInt(10);

int childrenCount = random.nextInt(100);
model.children = new ArrayList<Model>(childrenCount);
for (int i=0;i<childrenCount;++i) {
model.children.add(generateSingleItem(false));
}

return model;
}
}

现在您可以使用生成器创建随机(但由于种子而可预测)模型供您测试断言。

这种方法与 QuickCheck 密切相关。有一个Java version可用,它提供了一个通用接口(interface)(以及更多!),即上述方法。

关于java - 构建测试数据采用哪种策略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6267298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com