软件测试技术作业2

时间:2022-05-12 21:56:32

软件测试,简单来说就是通过测试用例来寻找程序中的BUG。在软件测试过程中,有几个名词需要我们特殊注意。

 Fault:

     在软件测试中,fault是指程序中静态的缺陷,也就是指在程序中存在的编程错误。

Error:

     在软件测试中,error是指由于程序中存在的fault而产生的不正确的内在状态。

Failure:

     在软件测试中,failure是指程序产生与我们期望不同的结果,强调外在表现。

举个简单的例子来说,一个患者去到医院看病,向医生说明自己的症状(在这里,症状就是failure),医生根据症状,尽力查找病因(病因就是fault),查找病因的过程中,医生可能会给患者量血压,量体温(这里高血压就可以理解为error)。了解了以上概念,接下来就是本次作业内容。

 

程序1:

 1 public int findLast (int[] x, int y) {
 2 //Effects: If x==null throw NullPointerException
 3 // else return the index of the last element
 4 // in x that equals y.
 5 // If no such element exists, return -1
 6 for (int i=x.length-1; i > 0; i--)
 7 {
 8 if (x[i] == y)
 9 {
10 return i;
11 }
12 }
13 return -1;
14 }
15 // test: x=[2, 3, 5]; y = 2
16 // Expected = 0

问题:

1、找到程序中的Fault

Fault:应该将 for 循环语句中 i>0 改为 i>=0,否则无法比较数组 x 中的第一个元素。

2、设计一个不执行Fault的测试用例:

X = null ,y = 2

3、设计一个执行Fault,没有导致Error的测试用例:

X = [3,5,2] , y = 2

4、设计一个导致Error,但不导致Failure的测试用例:

X = [3],y = 2

//Expected = -1
//Return = -1

 

 

程序2:

 1 public static int lastZero (int[] x) {
 2 //Effects: if x==null throw NullPointerException
 3 // else return the index of the LAST 0 in x.
 4 // Return -1 if 0 does not occur in x
 5 for (int i = 0; i < x.length; i++)
 6 {
 7 if (x[i] == 0)
 8 {
 9 return i;
10 }
11 } return -1;
12 }
13 // test: x=[0, 1, 0]
14 // Expected = 2

问题:

1、找到程序中的Fault

Fault:应该将 for 循环语句中(int i = 0; i < x.length; i++)改为(int i = x.length-1;i>=0;i--),否则返回的是数组 x 中第一个 0 的索引。

2、设计一个不执行Fault的测试用例:

X = null

3、设计一个执行Fault,没有导致Error的测试用例:

X = [0,1,2]

4、设计一个导致Error,但不导致Failure的测试用例:

X = [1]

//Expected = -1
//Return = -1