在本次软件工程作业中,我深入探讨了最大子数组和问题,通过精心设计的测试用例,采用语句覆盖策略确保了代码的每个分支至少被执行一次。以下是我实施的测试用例概览与所采用的自动化测试工具结果的完整描述。

测试用例设计与覆盖策略

  1. 全正数数组:该测试用例旨在验证算法能正确处理所有元素均为正数的情况。此时,currentSum持续累加,不会重置为0,maxSum随之更新。这个测试用例主要覆盖了算法的正常累加路径。

  2. 全负数数组:此用例检验算法对全负数数组的处理能力。在这种场景下,currentSum可能因累加负数而小于0,此时会重置为0,而maxSum保持为0。这确保了算法能正确处理全负数情况。

  3. 正负交替数组:通过正负数交替出现的数组,测试用例旨在验证算法处理复杂情况的能力。currentSum可能因累加负数而减小,甚至小于0,此时会重置为0,maxSum在遇到正数累加时更新。

  4. 包含零的数组:该用例考察算法对0值的处理。遇到0时,currentSum不变,但可能因累加负数而重置。maxSum根据情况更新。

  5. 单个正数:此用例测试算法对只含单个正数数组的处理,验证循环单次执行的场景。currentSum等于该正数,maxSum据此更新。

  6. 单个负数:用于测试算法对只含单个负数的数组处理能力。currentSum加上负数后可能小于0,此时会重置为0,maxSum保持为0。

  7. 全零数组:此用例旨在检验算法对全零数组的处理。在这种情况下,currentSum始终为0,maxSum也保持为0。

  8. 当前和始终大于最大和:该测试用例设计用来验证currentSum持续增加且不会重置为0的情况,maxSum可能在循环的每一步都更新。

自动化测试与结果

使用MinUnit自动化测试框架执行上述测试用例,确保了每个用例都能准确执行,覆盖了算法的各个分支。测试结果显示“ALL TESTS PASSED”,表明maximalSubsequenceSum函数在这八种基本情况下均符合预期行为。

这次作业加深了我对最大子数组和问题的理解,让我体会到了语句覆盖在软件测试中的重要性,以及自动化测试在确保代码质量方面的作用。