软件工程(2019)第三次作业

一.题目的重述

1.题目背景

问题: 给定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.题目背景

从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中任选择一个标准测试用例,并用自动测试工具对程序进行测试,并将测试结果和自动测试分析结果截图附到博客中。

二.题目的解答

1.解题思路

源代码链接:https://www.cnblogs.com/19940630naxubo/p/10746301.html

此次作业编程我采用了c++编程,首先定义一个变量S来记录当前子段的和,定义变量Maxi和变量Maxj来记录和最大的子段的下标范围,定义变量Sum记录最大子段和,子段从第一个数开始,判断是否为负数,若是负数跳过,若不是负数,再比较S与Sum的大小,若S大于Sum,则将S的值赋给Sum,循环遍历全部整数,求得最大子段和。流程图如下:

 

 

 

2.测试代码及结果

(1)语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。判定覆盖每个判定的每个分支至少执行一次。条件覆盖每个判定的每个条件应取到各种可能的值。判定/条件覆盖同时满足判定覆盖条件覆盖。条件组合覆盖每个判定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径至少执行一次。

  (2)单元测试代码

 

 

2)本次作业测试用例采用判定/条件覆盖,测试结果如下:

 

 

 

 

 

 

 

 

 由上图可以看出足判定/条件覆盖,并且测试结果完全正确。

三.作业总结

经过这次作业,对Visual Studio软件的用法变得更加熟练,对语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准也有了更加深刻的理解。

 

posted on 2019-04-21 19:43  无敌小那  阅读(150)  评论(0编辑  收藏  举报

导航