软工第三次个人作业

一、题目的选择。

我选择的是第一题,题目要求如下:
给定n个整数(可能为负数)组成的序列a[1],a[2],a[3],…,a[n],求该序列如a[i]+a[i+1]+…+a[j]的子段和的最大值。当所给的整数均为负数时定义子段和为0,依此定义,所求的最优值为: Max{0,a[i]+a[i+1]+…+a[j]},1<=i<=j<=n例如,当(a[1],a[2],a[3],a[4],a[5],a[6])=(-2,11,-4,13,-5,-2)时,最大子段和为20。
引用自《百度百科》

二、问题的分析。

1. 算法。

输入一组数,用curSum保存当前和,用maxSum保存当前和的最大值。并将curSum与maxSum都赋初值0。若curSum大于maxSum,则将curSum的值赋给maxSum。若最后curSum小于0,则返回0,否则返回当前和的最大值maxSum。

2. 核心代码。

public class MaxNum {
            public static int maxSum(int[] array){  
            int maxSum = 0; 
            for(int i=0;i<array.length;i++){
                for(int j = i ; j < array.length;j++){  
                     int curSum = 0;  
                    for (int k = i; k <= j; k++){  
                        curSum += array[k];  
                        if(curSum > maxSum){  
                            maxSum = curSum;  
                        }  
                    }  
                } 
            }
            if (maxSum < 0) {
                return 0;
            }
            else {
                return maxSum;
            }
        }  

3. 流程图。

1345531-20180330203933019-791769355.png

4.验证题目中的用例。

1345531-20180329212100797-851668378.png

三、单元测试。,

1. 覆盖方法。

(1)语句覆盖:选择合适用例,所有语句被执行一次。

语句覆盖又称行覆盖,段覆盖,基本块覆盖,这是最常用也是最常见的一种覆盖方式,就是度量被测代码中每个可执行语句是否被执行到了。这里说的是"可执行语句",因此就不会包括像C++的头文件声明,代码注释,空行,等等。非常好理解,只统计能够执行的代码被执行了多少行。需要注意的是,单独一行的花括号{} 也常常被统计进去。语句覆盖常常被人指责为"最弱的覆盖",它只管覆盖代码中的执行语句,却不考虑各种分支的组合等等。假如只要求达到语句覆盖,那么换来的确实测试效果不明显,很难更多地发现代码中的问题。

(2)判定覆盖:每个判定至少取一次真、一次假。

判定覆盖是设计足够多的测试用例,使得程序中的每一个判断至少获得一次"真"和一次"假",即使得程序流程图中的每一个真假分支至少被执行一次。

(3)条件覆盖:每个条件的各种可能结果至少满足一次。

条件覆盖是电脑编程术语,是逻辑覆盖的一种。它指的是设计足够多的测试用例,使得被测试程序中的每个逻辑条件的可能值至少被满足一次。

(4)判定条件覆盖:同时满足判断覆盖和条件覆盖。

判定条件覆盖是设计足够的测试用例,得使判断中每个条件的所有可能取值至少执行一次,同时每个判断本身所有可能结果也至少执行一次。缺点是忽略了条件的组合情况。

(5)条件组合覆盖:所有组合情况都要覆盖一次。

在白盒测试法中,选择足够的测试用例,使得每个判定中条件的各种可能组合都至少出现一次。显然,满足"条件组合覆盖"的测试用例是一定满足"判定覆盖"、"条件覆盖"和"判定/条件覆盖"的。

2. 我选择判定/条件覆盖。

覆盖情况应执行路径:

1345531-20180330200519635-496428121.png

3. 选择用例:

(1)测试用例1:(-1,-7,-9,-15,-20)
(2)测试用例2:(1,3,5,7,9)
(3)测试用例3:(-2,9,4,5,-3)
(4)测试用例4:(-7,1,-3,12,-5)

四、结果展示。

1. 自动测试截图。

(1)测试用例1。

1345531-20180329213832418-1449793751.png
(2)测试用例2。

1345531-20180329213856930-1446040481.png
(3)测试用例3。

1345531-20180329213923502-1729811423.png
(4)测试用例4。

1345531-20180329213949337-1873427426.png

2.单元测试代码。

    @Test
    public void test1() {
        int number = 5;
        int a[] = {-1,-7,-9,-15,-20};
        assertEquals(0, MaxNum.maxSum(a));
    }
    @Test
    public void test2() {
        int number = 5;
        int a[] = {1,3,5,7,9};
        assertEquals(25, MaxNum.maxSum(a));
    }
    @Test
    public void test3() {
        int number = 5;
        int a[] = {-2,9,4,5,-3};
        assertEquals(18, MaxNum.maxSum(a));
    }
    @Test
        public void test4() {
            int number = 5;
            int a[] = {-7,1,-3,12,-5};
            assertEquals(12, MaxNum.maxSum(a));
    }

3. 单元测试截图。

1345531-20180329215028567-102338713.png

4.结果分析。

(1). Runs:总共有4个测试方法,已经运行了4个;
(2). Errors:抛出异常的测试方法的个数是0;
(3). Failures:表示失败的测试方法的个数是0;
(4). 打钩:表示通过测试方法,测试结果完全正确。

五、代码链接。

葵花点穴手

六、总结。

本次作业是前两次作业的一个综合,难度相比前两次作业稍高,由于不熟练,所以在找测试用例方面花费了不少时间,也意识到自身的不足,以后还要继续努力。

转载于:https://www.cnblogs.com/heyanqiao/p/8672353.html

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可 6私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 、4下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。、可私 6信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值