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. ActivePivot测试策略
- 2. nhibernate测试策略
- 3. EJB测试策略?
- 4. 构建Dijkstra算法测试图的策略?
- 5. Mongodb Go的测试策略
- 6. Python假设 - 为许多测试构建策略一次?
- 7. 前端测试策略?
- 8. Playstore订阅 - 测试策略
- 9. Relay + React测试策略
- 10. Java EE测试策略
- 11. 设计测试策略
- 12. 测试Passport Twitter策略
- 13. TFS2015 vNext构建“构建检入策略”
- 14. 构建部署策略
- 15. Android的SQLite数据库的测试策略
- 16. 如何根据现有策略选择实施新数据结构的策略?
- 17. 创建测试数据:域构建器
- 18. 数据库基本单元测试策略:在单元测试和测试数据之间截断表格
- 19. Node JS - C++插件的测试策略
- 20. Web服务的测试策略
- 21. 测试环境的分支策略
- 22. 单元测试策略,NHibernate的库
- 23. 测试WCF服务的策略
- 24. 测试付款回调的策略
- 25. Laravel web api的测试策略
- 26. 数据加载和数据库初始化集成测试的策略
- 27. OpenShift S2I从多个数据源构建策略
- 28. 春季启动应用程序的测试策略建议
- 29. 集成测试策略的创建方法
- 30. 创建一个依赖于rails的Gem,发布/测试策略
感谢您的回应,但在测试我的应用程序的稳健性之前,我需要为单元测试提供可行的数据。 – 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