2020软件工程第二次作业

博客信息 沈阳航空航天大学计算机学院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.代码地址

点击这里

4.测试样例

(1)-2,11,-4,13,-5,-2

(2)1 2 5 -4 3

(3)1 2 3 -14 5

(4)1 -5 -9 -18 -6 -3

(5)-1 -2 -2 -3

5.单元测试

(1).覆盖流程图

(2).单元测试用例
选择条件组合覆盖:每个判定的条件组合至少执行一次
选择n个数 即n次循环
需要覆盖的条件组合如下:
1 b[0]>0
2 b[0]<0
3 b[1]>max
4 b[1]<max
5 b[1]>0
6 b[1]<0
7 b[2]>max
8 b[2]<max
9 b[2]>0
10 b[2]<0
11 b[3]>max
12 b[3]<max
以此类推
选择数字 1 3 5 7 9 10 覆盖组合 1 3 5 7 9 11......
选择数字 -1 -5 -6 -10 -12 覆盖组合 2 4 6 8 10.....
(3).单元测试代码

#include "pch.h"
#include "CppUnitTest.h"

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

int maxsub(int* arr, int N)
{
    int max1, max2, i;
    for (i = 0, max1 = 0, max2 = 0; i < N; i++)
    {
        max1 += arr[i];
        if (max2 < max1)
        {
            max2 = max1;
        }
        if (max1 < 0)
        {
            max1 = 0;
        }
    }
    if (max2 < 0)
    {
        return 0;
    }
    else
        return max2;
}

namespace UnitTest1
{
    TEST_CLASS(UnitTest1)
    {
    public:

        TEST_METHOD(TestMethod1)
        {
            int arr[] = { 1,3,5,7,9,10 };

            int n = 6;

            int i;

            i = maxsub(arr, n);

            Assert::AreEqual(i, 35);
        }

        TEST_METHOD(TestMethod2)
        {
            int arr[] = { -1,-5,-6,-10,-12 };

            int n = 4;

            int i;

            i = maxsub(arr, n);

            Assert::AreEqual(i, 0);
        }
    };
}

(3).单元测试结果

6.PSPO工作记录

项目 记录结果
日期 2020.4.8
开始时间 1.20
结束时间 9.30
编码行数 54
错误数量 1
错误1 在测试时候Assert::AreEqual函数不会使用导致出错
错误1修改时间 16分钟
posted @ 2020-04-08 19:30  loduskve  阅读(...)  评论(...编辑  收藏