我刚进入开发领域,想知道构建一致且连贯的复杂测试数据的最佳策略是什么(我的POJO需要填充的内容很复杂),以便进行单元测试?
我听说过“测试数据生成器”,但网络上很少有相关话题。
我刚进入开发领域,想知道构建一致且连贯的复杂测试数据的最佳策略是什么(我的POJO需要填充的内容很复杂),以便进行单元测试?
我听说过“测试数据生成器”,但网络上很少有相关话题。
我经常需要完成完全相同的任务。模糊测试是一个合适的方法,但我们应该注意区分原始模糊测试工具和智能模糊测试工具。智能模糊测试工具与正常的模糊测试工具(如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;
}
}