1

Java メソッドに多数のネストされたループ (3 ~ 4 レベル) があり、これらのループのそれぞれに if-else ブロックを含めることができるとします。これらすべてが正しく機能しているかどうかを確認するにはどうすればよいですか? 不正な値を代用するような力ずくのアプローチを使用する代わりに、これをテストする論理的な方法を探しています。

編集:初心者向けの優れたテストブックも提案できますか?

4

5 に答える 5

3

私がいつも教えられてきた基本的なテストの方法は、可能な限り特殊なケースを処理することです。

たとえば、変数 i が 0 から 10 の間であるという条件をチェックしている場合、if(i>0 &&i<10)私が自然にテストするのは、テスト条件を真にするいくつかの値、できればエッジの近く、次にいくつかの組み合わせであるエッジの値です。 true と false、そして最後に範囲外のケースです。前述の条件で、1、5、9、0、10、-1、11 をテストし、最後に正と負の両方の非常に大きな整数をテストします。

この種の「不正な値を代入しない」に反しますが、条件が適切に失敗するようにするためには、そうしなければならないと感じています。

于 2012-07-30T23:27:44.043 に答える
1

間違いを見つける最も簡単な方法はデバッグを使用することだと思います。デバッグに関する完全な説明は、次のリンクにあります:http ://www.ibm.com/developerworks/library/os-ecbug/ 。

また、このリンクを使用することもできます:http ://webster.cs.washington.edu:8080/practiceit/練習用。

于 2012-07-31T10:27:18.403 に答える
1

EMMAはコード カバレッジ ツールです。EMMA の下で単体テストを実行すると、到達した行と到達しなかった行を示す色付きのソース コードを含む HTML レポートが生成されます。それに基づいて、テストを追加して、さまざまなブランチをすべてテストしていることを確認できます。

コード内の各 if/then には、ループに入る/再実行するかどうかを決定するためにループで使用される部分式と同様に、ブール部分式が含まれています。述語のカバレッジは、テストがどれほど完全であるかを示す良いアイデアを提供するはずです。

ウィキペディアは述語範囲を説明しています

条件カバレッジ (または述語カバレッジ) - 各ブー​​ル部分式が true と false の両方に評価されましたか? これは必ずしも判定カバレッジを意味するものではありません。

于 2012-07-30T23:26:14.333 に答える
0

たとえば、いくつかの値でこれらの各ループを通過する入力を見つけます。次に、if の各分岐を通過する入力を見つけます。次に、大きな値、小さな値、または不正な値を持つループを通過する入力を見つけます。

于 2012-07-30T23:22:15.023 に答える
0

入力データと出力データを設定します。計算は自分で行ってください。出力値が個別に計算した値と一致するかどうかを確認するクラスを作成します。

例:

入力: 配列 (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();    
    }
}
于 2012-07-30T23:25:22.133 に答える