博客信息 | 沈阳航空航天大学计算机学院2020软件工程作业 |
---|---|
作业要求 | https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10583 |
课程目标 | 熟悉一个“高质量”软件的开发过程 |
作业目标 | 单元测试练习 |
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。
2.具体要求
- (1) 请从上述两个题目中根据个人实力任选一题,要求写出可运行的完整代码提交至GitHub系统中,并将代码地址附到博客内
- (2) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例
- (3) 请利用自动测试工具对程序进行测试
- (4) 请将程序运行结果和自动测试分析结果截图附到博客中
3.思路
1、定义两个变量,一个用来存储之前的累加值,一个用来存储当前的最大和。遍历数组中的每个元素,假设遍历到第i个数时如果前面的累加值为负数或者等于0,那对累加值清0重新累加,把当前的第i个数的值赋给累加值。如果前面的累加值为正数,那么继续累加,即之前的累加值加上当前第i个数的值作为新的累加值。
2、判断累加值是否大于最大值,如果大于最大值,则最大和更新;否则,继续保留之前的最大和。
4.代码
https://github.com/ld835/https-github.com-lidong/blob/master/%E8%BD%AF%E4%BB%B6%E5%B7%A5%E7%A8%8B%E7%AC%AC%E4%BA%8C%E6%AC%A1%E4%BD%9C%E4%B8%9A
5.运行结果
6.判定条件覆盖用例
- 测试用例一:{-1,-1},路径ace
- 测试用例二:{-1,11,-1},路径acd
- 测试用例三:{2,-1},路径abe
- 测试用例四:{2,3},路径abd
7.工作记录
项目 | 记录结果 |
日期 | 04-07 |
开始时间 | 14:00 |
结束时间 | 16:40 |
编码行数 | 11 |
错误数量 | 0 |