zoukankan      html  css  js  c++  java
  • 软件测试学习(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

  • 相关阅读:
    HDU 1075 What Are You Talking About(字典树)
    HDU 1075 What Are You Talking About (stl之map映射)
    HDU 1247 Hat’s Words(字典树活用)
    字典树HihoCoder
    HDU 1277全文检索(字典树)
    HDU 3294 Girls' research(manachar模板题)
    HDU 3294 Girls' research(manachar模板题)
    HDU 4763 Theme Section(KMP灵活应用)
    Ordering Tasks UVA
    Abbott's Revenge UVA
  • 原文地址:https://www.cnblogs.com/ljc825/p/5247295.html
Copyright © 2011-2022 走看看