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