软件工程(2018)第三次做业

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。c++

二、题目要求

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


2、解题

一、解题思路

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

二、测试

  (1)语句覆盖、断定覆盖、条件覆盖、断定/条件覆盖、条件组合覆盖和路径覆盖发现错误的能力呈由弱至强的变化。语句覆盖每条语句至少执行一次。断定覆盖每一个断定的每一个分支至少执行一次。条件覆盖每一个断定的每一个条件应取到各类可能的值。断定/条件覆盖同时知足断定覆盖条件覆盖。条件组合覆盖每一个断定中各条件的每一种组合至少出现一次。路径覆盖使程序中每一条可能的路径至少执行一次。   (2)本次做业测试用例采用断定/条件覆盖,因为对Java测试工具使用不熟练,多以本次测试的测试工具选择用codeblocks配置Googletest进行单元测试,测试结果以下: 由上图能够看出我用了三个测试用例,知足断定/条件覆盖,而且测试结果彻底正确。编程语言


3、小结

  本次做业题目较简单,可是因为我对Java语言的学习不到位,对Java测试工具的使用不熟练,因此选择用C++语言进行编程,而且使用codeblocks测试工具进行测试,因此深深感觉到多掌握一门编程语言的重要性。工具

Codig代码连接:https://coding.net/u/yunshuinu/p/123/git/blob/master/1.cpp?public=true单元测试

相关文章
相关标签/搜索