软件测试第二次作业

知识点内容回顾:

主要介绍了三个概念之间的区别

首先说最根本问题

Fault,什么事falut呢,代码中存在的问题,也就是和运行环境啊什么的没关系,你的代码就是有问题的,换句话说,你的实现是有问题的,但是这个问题不一定会被触发也不一定会导致error,但是无论是否导致了error都是有fault的。

其次是Error,在代码执行的过程中,运行了上面的Faults,就会出现错误,(当然也有可能不出现错误),但是这个状态称之为error,可能会导致failure

接下来说Failure,这个就是最终出现了错误的行为,那么就是failures了。

一般来说是Fault->Error->Failure这样的感觉

一切的根源是代码中的faults,faults会产生Error最终有可能导致failures。。。

接下来说说本周的作业题

public int findLast (int[] x, int y) { 

        //Effects: If x==null throw               

        //               NullPointerException 

        // else return the index of the last element 

        // in x that equals y. 

        // If no such element exists, return -1     

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

        { 

                if (x[i] == y) 

                { 

                        return i; 

                } 

        } 

        return -1; 

}

 // test: x=[2, 3, 5]; y = 2 

// Expected = 0

      

1.Fault:for循环的控制条件i > 0这里应该是i>=0,否则将不会访问x[0];

2.一个不执行fault的样例

x = {} y = 3;

这样情况会直接访问无效内存导致程序挂掉

3.执行了fault但是没有返回错误的值

x={1,2,3} y = 2

期望是1,答案也是1

4.导致错误但不会失败的

x={1,2,3},y =0

期望答案是-1,实际答案是-1;

public static int lastZero (int[] x) {

        //Effects: if x==null throw 

        //           NullPointerException 

        // else return the index of the LAST 0 in x. 

        // Return -1 if 0 does not occur in x 

        for (int i = 0; i < x.length; i++) 

        {

                 if (x[i] == 0) 

                { 

                        return i;

                } 

        } 

        return -1; 

}

// test: x=[0, 1, 0] 

// Expected = 2

1.fault代码是找数组中最后一个0的位置,但是却实现的是查询第一个0的位置

2.不执行fault,因为从循环处就有fault(方向反了)所以不存在不执行fault的用例

3.执行fault但不Error的情况是数组只有一个元素,无论正反遍历都不会有区别(都是只遍历下标为0不存在正反)

比如x={4};

4.执行fault导致error但没有failure的,当x中只有一个或没有0的时候

x = {1,0,2,3}

答案为1期望答案也为1

原文地址:https://www.cnblogs.com/Durandal/p/5256524.html