假设我在一个java方法中有很多嵌套的循环(3-4层),并且每个循环都可以有一些if-else块。我如何检查所有这些东西是否都正常工作?我正在寻找一种逻辑的方法来测试这一点,而不是使用暴力方法,比如替换非法的值。
编辑:你能为初学者推荐一些好的测试书吗?
发布于 2012-07-31 07:27:44
我一直被教导的基本测试方法是尽可能多地处理边缘情况。
例如,如果您正在检查变量i在0和10 if(i>0 &&i<10)之间的条件,我自然会测试一些使测试条件为真的值,最好是在边缘附近,然后是真和假的组合的边缘上的一些值,最后是超出界限的情况。使用上述条件,我将测试1,5 ,9,0,10,-1,11,最后测试一个非常大的整数,包括正和负。
这一类与“不替换非法值”相违背,但我觉得你必须这样做,以确保你的条件正确地失效。
发布于 2012-07-31 07:26:14
EMMA是一个代码覆盖工具。您在EMMA下运行您的单元测试,它将生成一个HTML报告,其中包含彩色源代码,显示哪些行已经到达,哪些行没有到达。在此基础上,您可以添加测试,以确保您正在测试所有不同的分支。
代码中的每个if/then都包含一个布尔子表达式,就像循环中用来决定是否进入/重新运行循环的子表达式一样。谓词复盖应该告诉你,你的测试有多彻底。
Wikipedia解释谓词覆盖
条件覆盖(或谓词覆盖)-是否每个布尔子表达式都计算为true和false?这并不一定意味着决策覆盖率。
发布于 2012-07-31 18:27:18
我相信使用debug是发现错误的最简单的方法。您可以在以下链接中找到有关调试的完整解释:http://www.ibm.com/developerworks/library/os-ecbug/。
你也可以使用这个链接:http://webster.cs.washington.edu:8080/practiceit/来练习。
https://stackoverflow.com/questions/11731053
复制相似问题