软件工程(2018)第三次个人作业

一、题目描述###

给定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。

二、编译环境###

此次变成采用java编程,ide为eclipse。

三、问题分析###

1.算法描述####

可以把这个问题分成两个个小的问题:1.各子段的值。2.怎么取这所有子段中的最大值。
解决1.各子段的值就可以看成遍历一个元素就得到一个子段的值,保留前一个子段的值,用新遍历的元素与前一个子段进行求和,得到新的子段值。
解决2.正因为取的是最大值,所以比较的话就可以从两个数之间进行比较,小的淘汰,大的替换现有max。

2.关键代码####

3.流程图####

四、单元测试###

1.覆盖方法:

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

语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每一个语句至少执行一次,其覆盖标准无法发现判定中逻辑运算的错误。

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

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

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

条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,判定中每个条件的所有可能结果至少出现一次,但未必能覆盖全部分支。

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

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

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

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

2.所选定的覆盖方法:####

(1)判定条件覆盖####

(2)所选用例:####

{0,0,0,0,0}
{-3,5,-7,4,6}
{-4,-2,-6,8,2}
{1,2,3,5,4}

五、测试结果展示###

六、代码清单###



coding:https://git.coding.net/qbingo/homework3.git

七、心得与体会###

难度比前两次大很多,也查阅了很多资料,询问了组员很多相关问题,让我在枯燥的编程中找到了乐趣,但这只是开始还需要更多的努力。

posted @ 2018-04-01 10:29  Qbingo666  阅读(134)  评论(0编辑  收藏  举报