Software Engineering homework 2

博客信息 沈阳航空航天大学计算机学院2020软件工程作业
作业要求 https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10583
课程目标 熟悉一个“高质量”软件的开发过程
作业目标 单元测试练习

利用JUnit5进行单元测试练习

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程序实现:

  由于最近在自学Java,所以决心练习一下使用Java语言完成此次任务。本题为一个经典的求最大子列和问题,在学习数据结构课程时曾经练习过,不过有些遗忘,重新复习一下后最终写出了程序:

(1)演示:

(2)算法流程图:

3判定/条件覆盖

(1)由算法流程图可以看出来条件路径大致分为4条:

(a)a
(b)b-c-f
(c)b-c-d-g
(d)b-c-d-h

(2)此外判定可划分为:
(a1)i<sum      (a2)i=sum
(b1)ThisSum>MaxSum (b2)ThisSum<=MaxSum
(c1) ThisSum<0    (c2)ThisSum>=0

 而且由于程序中含有循环,其实一个测试用例即可满足判定/条件测试的要求,但这里为了更清晰表示,选了3个测试用例:

测试用例 覆盖路径 判定范围 预期结果
[1,2,3,4,5] b-c-f/a a1 a2 b1 c2 15
[-1,-2,-3,-5] b-c-d-g/a a1 a2 b2 c1 0
[2,-1,-1] b-c-d-h/b-c-f/a a1 a2 b1 b2 c2 2
(3)利用Eclipse中JUnit5工具实现单元测试

 测试代码图:

 测试结果图:

 代码地址:点我,点我!!

 附:PSP工作记录表:

项目 记录结果
日期 2020-4-5
开始时间 15:00
结束时间 21:00
编码行数 57
错误数量 0

猜你喜欢

转载自www.cnblogs.com/wmzclever/p/12639262.html