软件工程第三作业
##**1. 题目** ###**GITHUB代码地址:** **GITHUB代码地址:
##**2. 程序设计及代码编辑**
2.1程序设计
程序的主要方程为Sum = (Sum + array[i]) > (array[i]) ? (Sum + array[i]) : (array[i]);
最大和要么是前面所求最大和加下一项,要么是下一项。具体程序流程图如下:

2.2代码编辑
int GetSum(int* array, int num)
{
if (array == NULL) return 0;
int i;
int Max{ array[0] };
int Sum{ array[0] };
for (i = 1; i < num; i++)
{
Sum = (Sum + array[i]) > (array[i]) ? (Sum + array[i]) : (array[i]);
if (Sum > Max)
{
Max = Sum;
}
}
if (Max < 0)
{
Max = 0;
}
return Max;
}
3. 测试分析及结果
本次测试,我采用的是条件组合测试。本次测试中涉及到的条件选择共有四个,一共有九种组合方式。
3.1测试分析
条件选择的可能性组合的二叉图如下:

3.2测试案例设计
针对上面的九种条件组合,对应的设计案例如下:
| array==NULL? | sum取值 | sum>max? | max<0? | 测试用例 | 结果 |
|---|---|---|---|---|---|
| array==NULL | {} | 0 | |||
| array!=NULL | sum=(sum+array[[i]) | sum>max | max>0 | 6 | |
| array!=NULL | sum=(sum+array[[i]) | sum>max | max<0 | 不存在 | 无 |
| array!=NULL | sum=(sum+array[[i]) | sum<max | max>0 | 6 | |
| array!=NULL | sum=(sum+array[[i]) | sum<max | max<0 | 不存在 | 无 |
| array!=NULL | sum= array[[i]) | sum>max | max>0 | 8 | |
| array!=NULL | sum= array[[i]) | sum>max | max<0 | 0 | |
| array!=NULL | sum= array[[i]) | sum<max | max>0 | 不存在 | 无 |
| array!=NULL | sum= array[[i]) | sum<max | max<0 | 0 |
测试代码如下:
TEST_METHOD(TestMethod1) //array==NULL
{
int *array = {};
int num = sizeof(array) / sizeof(array[0]);
int Max = GetSum(array, num);
Assert::AreEqual(Max, 0);
}
TEST_METHOD(TestMethod2) //(sum=sum+array)&&(sum>max)&&(max>0)
{
int array[] = { 2,2,2 };
int num = sizeof(array) / sizeof(array[0]);
int Max = GetSum(array, num);
Assert::AreEqual(Max, 6);
}
TEST_METHOD(TestMethod3) //(sum=sum+array)&&(sum<max)&&(max>0)
{
int array[] = { 5,-2,3 };
int num = sizeof(array) / sizeof(array[0]);
int Max = GetSum(array, num);
Assert::AreEqual(Max, 6);
}
TEST_METHOD(TestMethod4) //(sum=array)&&(sum>max)&&(max>0)
{
int array[] = { -2,5,3 };
int num = sizeof(array) / sizeof(array[0]);
int Max = GetSum(array, num);
Assert::AreEqual(Max, 8);
}
TEST_METHOD(TestMethod5) //(sum=array)&&(sum>max)&&(max<0)
{
int array[] = { -2,-1,-3 };
int num = sizeof(array) / sizeof(array[0]);
int Max = GetSum(array, num);
Assert::AreEqual(Max, 0);
}
TEST_METHOD(TestMethod6) //(sum=array)&&(sum<max)&&(max<0)
{
int array[] = { -2,-3,-5 };
int num = sizeof(array) / sizeof(array[0]);
int Max = GetSum(array, num);
Assert::AreEqual(Max, 0);
}
3.3测试结果
测试时用例全部通过,结果如下:

##**3.总结** **本次作业,学到了简单的个人项目的开发,也更加熟悉了单元测试,能够对不同类型的条件进行单元测试,收获满满。 每一次作业都会有新的收获,我也会在学习的道路上一直走下去,屏幕前的你,也要加油啊! **
浙公网安备 33010602011771号