【Software Testing Homework 2】

课后1.2节练习第三题

第一段程序:

  (a) for 循环没有遍历数组第一个元素,即第0号元素,改正为

for ( int i = x.length - 1; i >= 0 ; i -- ) {...}

  (b) 如果想要不执行故障就抛出一个空指针错误,那么如果x数组为空即可。给出一组可能的测试用例

  x == null ; y == 1;
  期望的输出:NullPointerException;
  实际的输出:NullPointerException;

 

  (c) 执行故障,但是不会导致错误状态的测试用例,需要保证最后一次出现y的数值绝对不可能是在数组第一个位置,给出一组可能的测试用例:

 

  x == [ 10, 11, 12] ; y == 11;
  期望的输出:1
  实际的输出:1

 

  (d) 如果一组数据进行了上述的算法之后,会导致错误而非失败,那么y对应的值就一定不能出现在x数组中,给出一组可能的测试用例

  x == [10, 11, 12] y == 13
  期望的输出: -1
  实际的输出: -1

 

第二段程序:

  (a) for循环应该从数组的最后开始往前遍历,这样寻找最后一个0的位置比较方便。

  for ( int i = x.length - 1 ; i >= 0 ; i -- ){...}

  (b) 所有的测试用例都会执行故障。

  (c) 如果数组长度为0时,for循环根本不会执行,也就不会出现错误;当数组长度为1时,循环只会执行一次,此时无论顺序遍历还是倒序遍历,最后的结果都是一样的,所以也同样不会出现错误

    x == [11]
    期望的输出 : -1 
    实际的输出 : -1

  (d) 因为题中的代码是顺序遍历而非倒序,所以只要进入循环超过一次,那么就会有错误出现,想要不导致失败,那么测试用例中就需要有0个或者1个0,这样最后输出的结果就和遍历的顺序无关了

    x == [11, 12, 13]
    期望的输出: -1
    实际的输出: -1

 

posted @ 2016-03-09 23:00  木木む  阅读(135)  评论(0编辑  收藏  举报