3
A
回答
0
我经常需要做完全相同的任务。 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可用,它提供了一个通用的接口(以及更多!)上述的方法。
相关问题
- 1. EJB测试策略?
- 2. 构建Dijkstra算法测试图的策略?
- 3. Python假设 - 为许多测试构建策略一次?
- 4. 测试Passport Twitter策略
- 5. 设计测试策略
- 6. TFS2015 vNext构建“构建检入策略”
- 7. 构建部署策略
- 8. Android的SQLite数据库的测试策略
- 9. 如何根据现有策略选择实施新数据结构的策略?
- 10. 创建测试数据:域构建器
- 11. 数据库基本单元测试策略:在单元测试和测试数据之间截断表格
- 12. Web服务的测试策略
- 13. 测试WCF服务的策略
- 14. Node JS - C++插件的测试策略
- 15. Laravel web api的测试策略
- 16. 数据加载和数据库初始化集成测试的策略
- 17. OpenShift S2I从多个数据源构建策略
- 18. 集成测试策略的创建方法
- 19. 春季启动应用程序的测试策略建议
- 20. 回归测试和部署策略
- 21. 集成测试策略资源
- 22. postgres在后端测试策略
- 23. Gradle为测试定义安全策略
- 24. SSIS脚本组件测试策略
- 25. 测试策略:生成XML文件
- 26. 高级Rails调试的策略建议?
- 27. 性能测试Python数据结构决策
- 28. 策略创建
- 29. 网站构建和发布策略
- 30. FirebaseRecyclerAdapter数据获取策略
感谢您的回应,但在测试我的应用程序的稳健性之前,我需要为单元测试提供可行的数据。 – jakcam 2011-06-07 15:53:44
我想我一定非常不好地解释自己,对不起!在上面的例子中,ModelGenerator为您的单元测试创建数据。 – 2011-06-07 15:54:45
好吧,如果我理解你,你的方法看起来像这个网站描述:[链接](http://martinfowler.com/bliki/ObjectMother.html)? – jakcam 2011-06-07 16:01:24