zoukankan      html  css  js  c++  java
  • 软件测试学习笔记:找代码中的fault,并设计特定的测试用例

    观察两段代码:

    (1) 发现代码中的错误;

    (2) 设计测试用例,不执行fault部分;

    (3) 设计测试用例,执行fault部分,但不出现error情况;

    (4) 设计测试用例, 出现error情况,但不发生failure。

    代码一:

    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) for循环中循环条件为i>=0;

    (2) x=[],y=2;

    对于此测试用例,x为空,不执行for循环,直接返回NullPointerException;

    理论结果:NullPointerException,

    实际结果:NullPointerException;

    (3) x=[1,2,3],y=2;

    对于此测试用例,最后一个等于y的值不在x[0]处,而在x[1] 出,所以for循环并没有执行到"i>0"的条件出,所以不会出现error状态;

    理论结果:1,

    实际结果:1;

    (4) x=[3,4,5],y=2;

    对于此测试用例,虽然执行到了error状况,但由于x中并没有与y相等的值,所以得到结果是正确的,所以没有出现failure;

    理论结果:-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)for循环的方向反,应该从i = x.length-1执行到i = 0; 

    (2)无论如何代码都会执行进入for循环,所以不存在样例不执行fault;

    (3)x=[1];这里执行时会进入for循环,即进入了fault,但是由于x中只有一个元素,所以不存在循环执行的正反问题,所以没有error状态;

    理论结果:-1,

    实际结果:-1;

    (4)x=[1,0,2];此用例执行时会发生error状态,但是由于x中只有一个0,所以for循环执行顺序不会对结果产生影响,因此没有发生failure;

    理论结果:1,

    实际结果:1。

  • 相关阅读:
    2015-05-27 用正则把oracle时间转化到mysql时间
    linux版idea14界面美观和windows,mac基本一致
    ubuntu 下自定义快捷键,,用着舒服
    ubuntu 方便好用的截图软件
    Integer 包装器类 大小比较
    win7、ubuntu双系统,遇到分区不可用问题,和卸载ubuntu后win7开不了机
    巧妙小思想
    读取16进制文件和校验图片格式的问题。 文件名后缀
    旧电脑变废为宝!
    Win10打开Autodesk软件时提示“管理员已阻止你运行此应用”
  • 原文地址:https://www.cnblogs.com/xzzily-mitao/p/5267528.html
Copyright © 2011-2022 走看看