• 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。

    二、阅读材料

    • 请阅读邹欣老师的这篇博文和构建之法第1~3章内容,尤其是第2章效能分析和第3章代码规范部分

    • 回顾和复习课堂讲授的单元测试部分内容

    三、代码地址
    最大连续子数组和(最大子段和)

    四、运行结果

    五、条件组合覆盖测试用例
    条件组合覆盖:设计测试用例,使得被测试程序中的每个判定中条件结果的所有可能组合至少执行一次。

    5.1条件组合

      A B C
    1 i<n curSum<=0 curSum>maxSum
    2 i<=n curSum>0 curSum<=maxSum

    5.2测试用例

    组合编号 条件取值 判断取值
    1 i<n,curSum<=0,curSum>maxSum T1,T2,T3
    2 i<n,curSum<=0,curSum<=maxSum T1,T2,F3
    3 i<n,curSum>0,curSum>maxSum T1,F2,F3
    4 i<n,curSum>0,curSum<=maxSum T1,F2,T3
    5 i>=n,-,- F1

       

    测试用例 arr[i] 覆盖组合 路径
    1 -2,9,-3,10,-4,-3 2,3,4 (a,d,g), (a,e,g), (a,e,f)
    2 2,0,3,-6,7,0 1,3,4 (a,d,f), (a,e,g), (a,e,f)
    3 2,0,3,-6,1,0 2,3,4 (a,d,g), (a,e,g), (a,e,f)
    4 -3,-2,-1,-4,-5,-6 2 (a,d,g)
    5 -2,4,5,-6,0,3 5 (b)

    5.3程序测试代码

    #include "pch.h"
    #include "CppUnitTest.h"
    
    using namespace Microsoft::VisualStudio::CppUnitTestFramework;
    
    namespace UnitTest1
    {
    	TEST_CLASS(UnitTest1)
    	{
    	public:
    	
    		TEST_METHOD(TestMethod1)
    		{
    			int n = 6, arr[6] = {2,0,3,-6,7,0},i;
    			int maxSum = 0;
    			int curSum = 0;
    			for (i = 0; i < n; i++)
    			{
    				if (curSum <= 0)
    				{
    					curSum = arr[i];
    				}
    				else
    				{
    					curSum += arr[i];
    				}
    				if (curSum > maxSum)
    				{
    					maxSum = curSum;
    				}
    			}
    			int real = 7;
    			Assert::AreEqual(maxSum, real);
    		}
    		TEST_METHOD(TestMethod2)
    		{
    			int n = 6, arr[6] = { 2,0,3,-6,1,0 }, i;
    			int maxSum = 0;
    			int curSum = 0;
    			for (i = 0; i < n; i++)
    			{
    				if (curSum <= 0)
    				{
    					curSum = arr[i];
    				}
    				else
    				{
    					curSum += arr[i];
    				}
    				if (curSum > maxSum)
    				{
    					maxSum = curSum;
    				}
    			}
    			int real = 5;
    			Assert::AreEqual(maxSum, real);
    		}
    		TEST_METHOD(TestMethod3)
    		{
    			int n = 6, arr[6] = { -2,9,-3,10,-4,-3 }, i;
    			int maxSum = 0;
    			int curSum = 0;
    			for (i = 0; i < n; i++)
    			{
    				if (curSum <= 0)
    				{
    					curSum = arr[i];
    				}
    				else
    				{
    					curSum += arr[i];
    				}
    				if (curSum > maxSum)
    				{
    					maxSum = curSum;
    				}
    			}
    			int real = 16;
    			Assert::AreEqual(maxSum, real);
    		}
    		TEST_METHOD(TestMethod4)
    		{
    			int n = 6, arr[6] = { -3,-2,-1,-4,-5,-6 }, i;
    			int maxSum = 0;
    			int curSum = 0;
    			for (i = 0; i < n; i++)
    			{
    				if (curSum <= 0)
    				{
    					curSum = arr[i];
    				}
    				else
    				{
    					curSum += arr[i];
    				}
    				if (curSum > maxSum)
    				{
    					maxSum = curSum;
    				}
    			}
    			int real = 0;
    			Assert::AreEqual(maxSum, real);
    		}
    		TEST_METHOD(TestMethod5)
    		{
    			int n = -5, arr[6] = { 2,0,3,-6,7,0 }, i;
    			int maxSum = 0;
    			int curSum = 0;
    			for (i = 0; i < n; i++)
    			{
    				if (curSum <= 0)
    				{
    					curSum = arr[i];
    				}
    				else
    				{
    					curSum += arr[i];
    				}
    				if (curSum > maxSum)
    				{
    					maxSum = curSum;
    				}
    			}
    			int real = 0;
    			Assert::AreEqual(maxSum, real);
    		}
    	};
    }
    

    六、测试结果

    七、工作记录

    PSPO工作记录表

    项目 记录结果
    日期 2020年4月4日
    开始时间 8:00
    结束时间 10:00
    源编码行数 29
    测试代码行数 129
    错误数量 1
    错误1 用例4未通过测试
    错误1修改时间 5min
  • 相关阅读:
    svn command line tag
    MDbg.exe(.NET Framework 命令行调试程序)
    Microsoft Web Deployment Tool
    sql server CI
    VS 2010 One Click Deployment Issue “Application Validation did not succeed. Unable to continue”
    mshtml
    大厂程序员站错队被架空,只拿着五折工资!苟活和离职,如何选择?
    揭秘!Windows 为什么会蓝屏?微软程序员竟说是这个原因...
    喂!千万别忘了这个C语言知识!(~0 == -1 问题)
    Linux 比 Windows 更好,谁反对?我有13个赞成理由
  • 原文地址:https://www.cnblogs.com/shainew/p/12630676.html
Copyright © 2020-2023  润新知