初学者的代码测试 - 怎么做?

时间:2012-07-30 23:19:31

标签: java unit-testing testing

假设我在java方法中有很多嵌套循环(3-4级),并且每个循环都可以有一些if-else块。如何检查所有这些是否正常工作?我正在寻找一种合乎逻辑的方法来测试它,而不是使用强力方法来代替非法值。

编辑: 你能为初学者推荐一些好的测试书吗?

5 个答案:

答案 0 :(得分:3)

我一直被教授基本测试的方法是尽可能地处理边缘情况。

例如,如果你正在检查变量i在0到10 if(i>0 &&i<10)之间的条件,我自然会测试的是一些使测试条件成立的值,最好是在边缘附近,然后是几个在真实和虚假的组合的边缘,最后是超出范围的情况。在上述条件下,我测试了1,5,9,0,10,-1,11,最后是一个非常大的整数,包括正数和负数。

这种情况违背了“不替代违法的价值观”,但我觉得你必须这样做,以确保你的条件不正确。

答案 1 :(得分:1)

EMMA是一种代码覆盖率工具。您在EMMA下运行您的单元测试,它将生成一个带有彩色源代码的HTML报告,显示已到达哪些行以及哪些行未到达。在此基础上,您可以添加测试以确保您测试所有各个分支。

代码中的每个if / then包含一个布尔子表达式,循环中使用的子表达式决定是否进入/重新运行循环。谓词报道应该告诉你一个好的想法,你的测试有多彻底。

Wikipedia解释了谓词覆盖率

  

条件覆盖(或谓词覆盖) - 每个布尔子表达式都被评估为true和false?这并不一定意味着决策覆盖。

答案 2 :(得分:1)

我相信使用调试是查找错误的最简单方法。您可以在此链接找到有关调试的完整说明:http://www.ibm.com/developerworks/library/os-ecbug/

您也可以使用此链接:http://webster.cs.washington.edu:8080/practiceit/进行练习。

答案 3 :(得分:0)

例如查找输入,它将通过某些值遍历每个循环。然后找到将通过if的每个分支的输入。然后找到将通过具有大或小或非法值的循环的输入。

答案 4 :(得分:0)

设置一些输入和输出数据。自己做计算。 创建一个类来检查输出值是否与您单独计算的值相匹配。

示例:

input:Array(3,4,5,6);

输出(奇数之和):8

 class TestClass{

     //test case
     //here you keep changing the array (extreme values, null etc..
    public void test1(){
     int[] anArray=new int[4];
        anArray[0] = 3;
        anArray[1] = 4;
        anArray[2] = 5;
        anArray[3] = 6;
       int s=Calculator.oddSum(x);
       if (s==8) 
            System.out.println("Passed");
       else 
            System.out.println("Failed");
    }

    public static void main(){ 
      TestClass t=new TestClass();
      t.test1();    
    }
}
相关问题