私はソフトウェアテスト試験のために改訂しています。問題の1つは、この方法を示し、障害を特定し、障害を実行しないテストケース(存在する場合)を生成するよう求めます。ここでこのメソッドのフォルトまたはエラー
は、コードは次のとおりです。
public static int oddOrPos(int[] x) {
//Effects: if x==null throw NullPointerException
// else return the number of elements in x that
// are either odd or positive (or both)
int count = 0;
for (int i = 1; i < x.length; i++)
{
if (x[i]%2 == 0 || x[i] > 0)
{
count++;
}
}
return count;
}
私は二つの問題を特定しました。 1つはforループで1に初期化されるため、x [0]はテストされません。またx[i] % 2 == 0
はx[i] != 0
である必要があります。これらの問題は障害ですか?私はこの質問が、ただ一つの欠陥があるように見えるので、これを尋ねます。
また、私は、forループが常に実行されるため、フォルトを実行しないテストケースは存在しないと仮定します。 (私たちはポジティブなものと一緒に奇数値を検出したい場合。既存のコードではなくでも値を検出します)実際に
x [i]%2 == 0は他の回答を参照してください。しかし、条件を 'x [i]%2 == 1'に変更したとしても、' i = 1'は1要素配列に対して '0'を返します。 – Thomas