• 软件工程第二次作业


    博客信息 沈阳航空航天大学计算机学院2020软件工程作业
    作业要求 https://edu.cnblogs.com/campus/sau/Computer1701-1705/homework/10583
    课程目标 熟悉一个“高质量”软件的开发过程
    作业目标 单元测试练习

    一:题目要求

    给定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)写出可运行的完整代码提交至GitHub系统中,并将代码地址附到博客内
    (2)请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例
    (3)请利用自动测试工具对程序进行测试
    (4)请将程序运行结果和自动测试分析结果截图附到博客中

    三:代码

    源代码
    测试代码

    四:运行结果

    五:选择判定/覆盖条件测试

    用例1:acd:{1,2,3,4},最大字段和为10;
    用例2:abe:{-2,8,-4,11},最大字段和为15;

    六:测试代码

    使用vs2017中自带的单元测试,编写的测试代码如下:

    TEST_CLASS(UnitTest1)
    	{
    	public:
    
    		TEST_METHOD(TestMethod1)
    		{
    			int max = 0, i, j, x = 4, sum, h = 0;
    			int s[4] = {1,2,3,4}, a[50];
    
    			for (i = 0; i < x; i++)
    			{
    				sum = s[i];
    				for (j = i + 1; j <= x; j++)
    				{
    					a[h] = sum;
    					sum = sum + s[j];
    					h++;
    					a[h] = sum;
    				}
    				h++;
    			}
    			for (i = 0; i <= h; i++)
    			{
    				if (a[i] >= max)
    					max = a[i];
    			}
    			int real = 10;
    			Assert::AreEqual(max, real);
    		}
    		TEST_METHOD(TestMethod2)
    		{
    			int max=0,i,j,x=4,sum,h=0;
    			int s[4]={-2,8,-4,11},a[50];
    
    			for (i=0;i<x;i++)
    			{
    				sum=s[i];
    				for(j=i+1;j<=x;j++)
    				{
    					a[h]=sum;
    					sum=sum+s[j];
    					h++;
    					a[h]=sum;
    				}
    				h++;
    			}
    			for(i=0;i<=h;i++)
    			{
    				if(a[i]>=max)
    					max=a[i];
    			}
    			int real=15;
    			Assert::AreEqual(max,real);
    		}
    		
    	};
    

    七: 测试结果

    八:工作记录表

    项目 记录结果
    日期 2020/4/6
    开始时间 18:30
    结束时间 20:50
    编码行数 26
    错误数量 0

    九: 心得体会

    通过本次作业,我明白判定/条件覆盖测试的含义,以及学会了vs2017单元测试工具的使用方法。

  • 相关阅读:
    常用模块(一)
    面向对象进阶:反射以及内置方法
    面向对象三大特性之多态、封装与装饰器
    面向对象的三大特性之继承
    python之面向对象
    python之内置函数
    python之迭代器,生成器以及列表推导式
    比较好用的linux命令
    使用redission实现分布式信号量以及遇到的一些坑
    linux一些命令
  • 原文地址:https://www.cnblogs.com/lxy312/p/12644613.html
Copyright © 2020-2023  润新知