• Liam的软件测试学习历程(二):查找错误的两道例题


    观察两段代码并回答下列问题:

    (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;

    Excepted:NullPointerException,

    Actual:NullPointerException

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

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

    Excepted:1,

    Actual:1;

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

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

    Excepted:-1,

    Actual:-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=0开始执行,而应该是从x.length-1开始递减;

    (2)这里无论如何代码都会执行进入for循环,所以不存在这样的样例;(这里与上一题不同的地方在于,上一问中的fault是for循环的一个判断条件,当x为空时,for循环在执行第一步对i赋值是便会出现NullPointerException,进而不会执行到fault;而这一问中的fault是整个for循环,所以只要进入for循环就属于进入了fault中)

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

    Excepted:-1,

    Actual:-1;

    (4)x=[1,0,2];这里代码执行时会发生error状态,但是由于x中只有一个0,所以无论是正着执行for循环还是倒着执行,都不会对结果产生影响,所以没有发生failure;

    Excepted:1,

    Actual:1。

  • 相关阅读:
    微信小程序音乐播放控制API在真机上貌似不可用?
    微信小程序request合法域名怎么配置啊
    微信小程序的路径是怎么计算的?
    微信小程序微信录音的silk格式文件怎么转MP3
    微信小程序全国巡回沙龙厦门站-尚琳凯演讲详细内容实录
    微信小程序全国巡回沙龙厦门站-A闪演讲详细内容实录
    微信小程序开发指南合集 各类组件用法技巧
    微信小程序常见问题及新手跳坑指南 每日更新 欢迎补充
    微信小程序沙龙回顾 附演讲实录及ppt
    laravel中的form表单提交
  • 原文地址:https://www.cnblogs.com/tju-liuchang/p/5255062.html
Copyright © 2020-2023  润新知