• 软件测试学习(2)


    最近软件测试学习的重点,应该就要算

    Software Faults, Errors & Failures的基本概念和对它们之间区别的理解了

    我个人对这三个概念是这么理解的

    Faults:静态代码中存在的错误,和程序是否运行无关,一个程序存在Faults只能代表这个程序有错,不能代表这个程序被运行的时候一定会出错

    Errors :程序在运行的过程中,运行到了存在Faults的代码时,而产生的一种异常的中间状态。首先,这种状态是临时的,不会长时间存在;其次,error不是一定会导致Failures,但是如果代码运行过程中没有error就一定不会Faults

    Failures:程序中的Faults被执行之后,程序出现过Error状态之后,可能导致的程序运行失败的最终结果,这个结果有可能是结果错误,有可能是运行异常。

    我理解的三者之间的关系是这样的:如果代码中没有Faults,那么运行时一定不会出现Errors,如果运行中没有出现Errors那么最后的程序运行结果一定不会是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
            
    

    这段代码的功能是从一个数组中找最后一个值等于y的元素

    很明显,我们能发现这段代码的for循环没有循环数组的第一个元素,这就是这段代码的Fault

    如果我们想要找一组测试数据不执行一开始的for循环,那么也只有当输入的x数组为空时,抛出空指针异常了

    执行Fault但是不进入Error状态的一种情况就是在倒序循环数组元素时,在数组第一个元素之前找到y的位置,比如说x={1,2,3},y=3,最后都返回2

    进入Error状态但是没有出现Failure,就是说程序的运行结果没错,一种简单的情况就是数组中不存在我要查找的元素值,如x={1,2,3},y=4,最后都返回-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
    

    第二小题的代码也很简单寻找数组中的最后一个0的位置,但是实际功能却变成了寻找第一个0,这个就是这段代码的Fault

    不执行Fault的测试用例还是一个空指针的数组

    执行Fault但是不进入Error状态的一种情况比较难想,因为这段代码和代码原来的意思是完全相反的,所以说只有数组只有唯一一个元素的时候如,x={0},返回0

    进入Error状态但是没有出现Failure,一种情况是数组里面的0小于等于1个,如x={1,2,3},返回-1

  • 相关阅读:
    docker初识--简单用法
    性能测试--面向目标场景设计
    性能测试之--波浪场景设计
    性能测试之--阶梯负载场景设计
    Jmeter后置处理器之正则提取器详解
    JMETE-元件执行顺序
    python高阶函数-map、reduce、filter
    socket 多线程安全、粘包问题
    The fastest MySQL Sandbox setup ever!
    两个实用的Python的装饰器
  • 原文地址:https://www.cnblogs.com/ljc825/p/5247295.html
Copyright © 2020-2023  润新知