PIE模型课后思考

构造一个尽可能简单的程序P(包含两个Fualts: F1和F2),同时构造t1, t2和t3,使得
1. t1单独执行到F1并且发现Failure;
2. t2单独执行到F2并且发现Failure;
3. t3同时执行到F1和F2,并且能够对F1产生Error,但没有Failure。//请标明详细注释

import org.testng.annotations.Test;

public class homework1 {
//    构造一个尽可能简单的程序P(包含两个Fualts: F1和F2),同时构造t1, t2和t3,使得
//    1. t1单独执行到F1并且发现Failure;
//    2. t2单独执行到F2并且发现Failure;
//    3. t3同时执行到F1和F2,并且能够对F1产生Error,但没有Failure。//请标明详细注释

    public int sum(int[] nums,int length){//传入-1就求总和,传入自然数就求数组前length个数的和
        int s = 0;
        for(int i=0;i<(length==-1?(nums.length-1):(length));i++){//F2:  求和 for循环错误,求总和nums.length-1漏算了最后一个数,求前length个数正常
            s+=nums[i];
        }
        return s;
    }

    public void sort(int[] arr){//冒泡排序
        int temp;
        for(int i=1;i<arr.length-1;i++){//F1:  冒泡趟数,本该从0开始,错写为1
            for(int j=0;j<arr.length-i-1;j++){
                if(arr[j+1]>arr[j]){
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }
    }
    @Test
    public void test() {
        int[] a = {5,2,3,1,0,4};
        //t1排序
        sort(a);
        for (int i : a) {
            System.out.print(i+"   ");//排序,期望输出为5 4 3 2 1 0,实际输出5 3 2 1 0 4,触发了F1,产生了ERROR,并传递到软件外部,观察到失效行为
        }
        System.out.println();
        //t2求总和
        System.out.println(sum(a,-1));//求总和期望结果15,输出11,触发了F2,产生了ERROR并传递到软件外部,观察到失效行为
        //t3求最大的两个数的和
        int[] b = {5,2,4,1,-1,0};
        sort(b);//排序后为5,4,2,1,-1,0,执行到F1并对F1产生ERROR,
        System.out.println(sum(b,2));//输出9,执行到F2,求前2个数和没有产生ERROR,F1产生的ERROR没有传递到软件外部,输出了正确的结果
    }

}

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值