软件测试 section1.2. EXERCISES 第三题

public int findLast(int[] x, int y){
    //Effects:If X==null thro 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

  a)Identify the fault.

    在for循环中判断条件i>0,应该改为i>=0,否则数组第一个元素就不会被遍历到,使得第一个元素会影响到预期的结果。

  b)If possible, identify a test case that does not excute the fault.

    不会执行故障代码的测试用例:x=[2,3,5] ; y=3

                Expected:1; Actually:1  EQUAL!

  c)If possible, identify a test case that executes the fault, but not result in an error state

    会执行故障代码的,但不会导致内部错误(error)的测试用例:x=[2,3,5]; y=4

                Expected:-1; Actually:-1 EQUAL!

  d)If possible identify a test case that results in an error, but not a failure.

    会导致内部错误但不是程序失效(failure)的测试用例:x=Null; y=1

                Expected:NullpointerException; Actually:NullpointerExpection

  e)For the given test case, identifu the first error state. Be sure to describe the complete state.

    对于给定的测试用例,我们可以看到程序不会执行到数组下标为0的地址,所以最后的结果状态给的值就是-1,和预期的0不一致

  f)Fix the fault and verify that the given test now produes the expected output.

    只用把for循环中的i>0,改为i>=0,那么预期的结果和实际的结果就都是0.

public static int lastZero(int[] x){
    //Effects:if x==null throw NullPointerExpection
    //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

  a)Identify the fault.

    故障代码是for循环是从前往后循环,遇见等于0的值就返回数组下标,是寻找数组中的第一个0的位置。和函数的需求不一致

  b)If possible, identify a test case that does not excute the fault.

    不会执行故障代码的测试用例:x=Null;

                Expected:NullPointerException; Actually:NullPointerException  EQUAL!

  c)If possible, identify a test case that executes the fault, but not result in an error state

    会执行故障代码的,但不会导致内部错误(error)的测试用例:x=[2,3,5];

                Expected:-1; Actually:-1 EQUAL!

  d)If possible identify a test case that results in an error, but not a failure.

    会导致内部错误但不是程序失效(failure)的测试用例:x=Null;

                Expected:NullpointerException; Actually:NullpointerExpection

  e)For the given test case, identify the first error state. Be sure to describe the complete state.

    对于给定的测试用例x=[0,1,0],函数在访问到第一个元素时发现等于0,所以就直接返回第一个元素的数组下标0,和期望的2不一致。

  f)Fix the fault and verify that the given test now produes the expected output.

    只用把for循环改为for(int i =x.length-1;i>=0;i--)即可

    那么预期的结果和实际的结果就都是2.

public int countPositive(int[] x){
    //Effects:If x==null throw NullPointerException
    //else return the number of
    //positive elements in x

    int count  = 0;
    for(int i = 0; i<x.length; i++)
    {
        if(x[i]==0)
        {
            count++;
        }
    }
    return count;
}

    //test:x=[-4,2,0,2]
    //Expected = 2

  

  a)Identify the fault.

    这个函数的功能是计算数组中正数的数量,而if条件中x[i]>=0,判断的是非负数的数量,应该改为x[i]>0

  b)If possible, identify a test case that does not excute the fault.

    不会执行故障代码的测试用例:x=Null;

                Expected:NullPointerException; Actually:NullPointerException  EQUAL!

  c)If possible, identify a test case that executes the fault, but not result in an error state

    会执行故障代码的,但不会导致内部错误(error)的测试用例:x=[-2,3,5];

                Expected:2; Actually:2 EQUAL!

  d)If possible identify a test case that results in an error, but not a failure.

    会导致内部错误但不是程序失效(failure)的测试用例:x=Null;

                Expected:NullpointerException; Actually:NullpointerExpection

  e)For the given test case, identify the first error state. Be sure to describe the complete state.

    对于给定的测试用例x=[-4,2,0,2],当访问到第三个元素0的时候,满足条件所以count的值增加1,使得最后实际的值是3而不是预期的2,不一致。

  f)Fix the fault and verify that the given test now produes the expected output.

    if条件中x[i]>=0,判断的是非负数的数量,应该改为x[i]>0

    那么预期的结果和实际的结果就都是2.

public static int  oddOrPos(int[] x){
    //Effects: if x==null throw NullPointerException
    //else return the number of elements in x that
    //are either off or positive(or both)

    int count= 0;
    for(int i = 0;i < x.length;i++)
    {
        if(x[i] % 2 ==1 || x[i] >0)
        {
            count++;
        }
    }
    return count;
}
    //test: x=[-3,-2,0,1,4]
    //Expected =  3

  

  a)Identify the fault.

    if判断条件中x[i] % 2 ==1会有故障,函数的功能是判断正数和奇数的数量,而这个条件没有考虑到负数的情况所以会漏掉负数中奇数的数量。

  b)If possible, identify a test case that does not excute the fault.

    不会执行故障代码的测试用例:x=Null;

                Expected:NullPointerException; Actually:NullPointerException  EQUAL!

  c)If possible, identify a test case that executes the fault, but not result in an error state

    会执行故障代码的,但不会导致内部错误(error)的测试用例:x=[2,3,5];

                Expected:2; Actually:2 EQUAL!

  d)If possible identify a test case that results in an error, but not a failure.

    会导致内部错误但不是程序失效(failure)的测试用例:x=Null;

                Expected:NullpointerException; Actually:NullpointerExpection

  e)For the given test case, identify the first error state. Be sure to describe the complete state.

    对于第一个数的判定,取余2不等于1,所以判断不是奇数使得实际值和预期值不一致

  f)Fix the fault and verify that the given test now produes the expected output.

    将 x[i] % 2 ==1 改为 x[i] % 2 != 0即可

    那么预期的结果和实际的结果就都是2.

时间: 2024-10-21 07:05:29

软件测试 section1.2. EXERCISES 第三题的相关文章

2014马哥Linux0217中对0214三题的解答

前几天在做2014马哥Linux0214的作业的时候,发现其实这三题在0217中有解答,当然觉得马哥比自己写得好太多,所以忍不住要把马哥的答案贴出来,以供自己学习. 第一题:写一个脚本,用for循环实现显示/etc/init.d/functions./etc/rc.d/rc.sysinit./etc/fstab有多少行 #!/bin/bash for fileName in /etc/init.d/functions /etc/rc.d/rc.sysinit /etc/fstab;do line

2016/1/12 第一题 输出 i 出现次数 第二题 用for循环和if条件句去除字符串中空格 第三题不用endwith 实现尾端字符查询

1 import java.util.Scanner; 2 3 4 public class Number { 5 6 private static Object i; 7 8 /* 9 *第一题 mingrikejijavabu中字符“i” 出现了几次,并将结果输出*/ 10 public static void main(String[] args) { 11 12 String r ="imingrikejijavabi"; 13 14 15 //第一种 截取 16 int a=

LeetCode 第三题,Longest Substring Without Repeating Characters

题目: Given a string, find the length of the longest substring without repeating characters. For example, the longest substring without repeating letters for "abcabcbb" is "abc", which the length is 3. For "bbbbb" the longest s

Java-集合-第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum 表示学生的班号,例如“class05”。 有如下List List list = new ArrayList(); l

第三题 有如下Student 对象, private String name; private int age; private int score; private String classNum; 其中,classNum 表示学生的班号,例如“class05”. 有如下List List list = new ArrayList(); list.add(new Student(“Tom”, 18, 100, “class05”)); list.add(new Student(“Jerry”,

NOIP2005-普及组复赛-第三题-采药

题目描述 Description 辰辰是个天资聪颖的孩子,他的梦想是成为世界上最伟大的医师.为此,他想拜附近最有威望的医师为师.医师为了判断他的资质,给他出了一个难题.医师把他带到一个到处都是草药的山洞里对他说:“孩子,这个山洞里有一些不同的草药,采每一株都需要一些时间,每一株也有它自身的价值.我会给你一段时间,在这段时间里,你可以采到一些草药.如果你是一个聪明的孩子,你应该可以让采到的草药的总价值最大.” 如果你是辰辰,你能完成这个任务吗? 输入输出格式 Input/output 输入格式:输

2014百度之星资格赛第三题

Xor Sum Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 132768/132768 K (Java/Others) Total Submission(s): 7837    Accepted Submission(s): 3350 Problem Description Zeus 和 Prometheus 做了一个游戏,Prometheus 给 Zeus 一个集合,集合中包含了N个正整数,随后 Prometheus 将向 Z

第二题、第三题、第四题

1.以编程方式操作 HttpCachePolicy 类. HttpCachePolicy.SetExpires HttpCachePolicy.SetCacheability |NoCache|Private|Public|Server|ServerAndNoCache |ServerAndPrivate 2<%@ OutputCache Duration="60" VaryByParam="None" %>Duration 和 VaryByParam

第三题作业

第一题: import java.lang.Integer; import java.util.Arrays; class ArrDemo{     public static void main(String[] args){         int[] arr = new int[]{1,20,60,90,4};         //int[] arr = new int[5];//问题2.这个值并没有在错误判断里面,怎么判断?         System.out.println(Arra

四川大学线下编程比赛第三题:书本转移

好久没写过日志,也怪最近事情真的特别多,最近参加关于编程方面就是CSDN高校俱乐部举办的线下编程塞,说起这次编程赛,总共三道题,题目都可以在csdn高校俱乐部上看到,参加比赛的时候有点小紧张,第三题涉及到队列,当时的机器没有代码提示,坑...也怨自己平时写代码用惯了代码提示,很多stl的方法都是隐隐约约知道,但是具体的不知道,导致第三题没有做出来,遗憾哈!下面贴一下今天写的第三题的代码 题目 四川大学线下编程比赛第三题:书本转移 题目详情: 小强有 3 个箱子 A,B,C 用来装书,所有的书(一