博客信息 沈阳航空航天大学计算机学院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。
-- 引用自《百度百科

二、代码:homework_002

三、程序运行结果:

四、选择测试工具:

本次作业选择用C语言编写,利用VS2019自带的单元测试工具进行单元测试,VS2019单元测试基本框架如下:

五、判定测试覆盖用例:

覆盖情况:应执行路径:ace^abd或acd^abe,本次测试选择路径ace^abd;

选择用例:ace:(1,2,3,4,5);

abd:(-1,2,-1,3,-2);

六、编写测试代码:

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

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
              {
                      TEST_CLASS(UnitTest1)
             {
              public:
                       TEST_METHOD(TestMethod1){
                       int n = 5;
                       int a[5] = { 1,2,3,4,5 };
                       int sum = 0, b = 0;
                       for (int i = 0; i < n; i++) {
                              if (b > 0) {
                                               b += a[i];
                                              }
                               else    b = a[i];
                              if (b > sum) {
                                         sum = b;
                                  } }
                       int real = 15;
                             Assert::AreEqual(sum, real);
               }
                   TEST_METHOD(TestMethod2){
         int n = 5;
         int a[5] = { -1,2,-1,3,-2 };
         int sum = 0, b = 0;
         for (int i = 0; i < n; i++) {
              if (b > 0) {
                      b += a[i];}

else   b = a[i];

              if (b > sum) { 
              sum = b;
         }}
        int real = 4;
         Assert::AreEqual(sum, real);
        }
        };
       }

 

七、自动测试结果:

                                     

八、工作记录:

PSP0 工作记录表

项目 记录结果
日期  2020.4.2
开始时间  8:31
结束时间  13:05
编码行数 39 
错误数量  1
错误1 测试代码无法比较
错误2修改时间     4分钟
错误2 输入负数不能计算
错误2修改时间     30分钟

九、心得体会:

    选择第一题是因为大一的时候做过,这次新加了单元测试的步骤,可谓是难到一片,也在自己的摸索中学会了使用VS2019自带的测试工具,还有就是在编程的时候不能粗心大意,可能很小的问题就会浪费自己很长时间。一步一步跟着做,并且学习了测试代码怎么写,目前不管是源代码还是测试代码写的都有些简陋,希望可以通过不断学习了解运用不同的语言,尝试不同的单元测试方法。

软件工程homework-002的更多相关文章

  1. Team Homework #3 软件工程在北航——IloveSE

    任务要求: 采访以前上过北航  (计算机系/软件学院) 软件工程课的同学.现在上研/工作的也可以. 采访问题如下:* 平均每周花在这门课上的时间 (包括上课/作业/上机)    * 平均写的代码总行数 ...

  2. 团队博客作业Week1 Team Homework #3软件工程在北航

    这次我们采访了一位大四的学姐,让她简单地谈了谈去年学习软件工程的经历和感受. 在完成软件工程大作业的过程中,由于计划安排与实际脱节,导致时间前松后紧,平均每周花在这门课上的时间大约有8个小时. 项目完 ...

  3. Week1 Team Homework #3: 软件工程在北航

    在组内成员的共同努力,我们采访了几个学长学姐,顺利完成任务.反馈信息如下: 平均每周花在这门课上的时间 平均写的代码总行数 学到的最有用的部分 最没用的部分 <软件工程>最应该改进的地方 ...

  4. 软件工程first homework

    1) 2017*****7193:我是最乐观的刘新飞:我的爱好是下中国象棋和听音乐: 我的码云个人主页是码云个人主页: 我的第一个项目地址是×××: 自己目前的代码量是三千行左右:我最喜欢蛋肠炒面(一 ...

  5. 软件工程导论九月26号Homework

    习题3 (1)数据流图 (2)实体关系图ER 习题6

  6. 软件工程 week 05

    关于 石墨文档客户端 的案例分析 作业地址:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505 一.调研测评 测试平台:Windows 1 ...

  7. 软件工程第四次作业 石墨文档IOS

    待分析的产品:石墨文档IOS客户端 作业地址: https://edu.cnblogs.com/campus/nenu/2016CS/homework/2505   第一部分 调研, 评测 1.下载并 ...

  8. 软件工程 week 04

    四则运算 一.摘要 作业地址:https://edu.cnblogs.com/campus/nenu/2016CS/homework/2266 git仓库地址:https://git.coding.n ...

  9. 【软件工程Ⅱ】作业二 |分布式版本控制系统Git的安装与使用

    本次作业的要去来自于:https://edu.cnblogs.com/campus/gzcc/GZCC-16SE2/homework/2097 远程库地址:https://github.com/Mol ...

  10. 软件工程课堂作业(五)——终极版随机产生四则运算题目(C++)

    一.升级要求:让程序能接受用户输入答案,并判定对错.最后给出总共对/错的数量. 二.设计思想: 1.首先输入答案并判断对错.我想到的是定义两个数组,一个存放用户算的结果,另一个存放正确答案.每输出一道 ...

随机推荐

  1. Linux下Mysql端口修改及防火墙开端口

    用户权限问题:https://blog.csdn.net/weixin_43670802/article/details/103019598 Linux下修改Mysql默认的3306端口 如下: 1. ...

  2. 「游记」CSP-S 2021 爆零记

    推荐访问本人自建博客 \(\text{cjwen.top}\) 初赛 之前参加过「难度介于 J 组(基础组)和 S 组(提高组)之间」的 [LGR-(-13) ]SCP 2021 第一轮(初赛)模拟, ...

  3. Pandas常用操作 - 删除指定行/指定列

    1. 删除指定行 new_df = df.drop(index='行索引') new_df = df.drop('行索引', axis='index') new_df = df.drop('行索引', ...

  4. 从零开始实现一个分布式RPC框架

    该rpc框架是一个mini版的dubbo.学习rpc之前,建议先了解NIO,Netty和Dubbo等知识.请移步网络编程 前言:(借用阿里大佬的一段话) 为什么要自己写一个RPC框架,我觉得从个人成长 ...

  5. 基于C6678+XC7V690T的6U VPX信号处理卡

    一.概述 本板卡基于标准6U VPX 架构,为通用高性能信号处理平台,系我公司自主研发.板卡采用一片TI DSP TMS320C6678和一片Xilinx公司Virtex 7系列的FPGA XC7V6 ...

  6. Process Doppelg&#228;nging

    进程注入:Process Doppelgänging   攻击者可以通过Process Doppelgänging将恶意代码注入到进程中,从而逃避基于进程的防护,并且进行可能的特权提升.Process ...

  7. uniapp 微信发送订阅消息

    这篇主要针对小程序进行演示,既然是发送消息,那么就有三个问题.发送什么内容,给谁发送,怎么发送!往下一条一条解决. 发送什么消息内容 - 通过微信公众号平台 选择对应的消息模板 选择以后在我的模板里面 ...

  8. 我们一起来学grep

    文章目录 grep 介绍 grep 命令格式 grep 命令选项 grep 实例 查找指定进程 查找指定进程个数 从文件中读取关键词进行搜索 从多个文件中查找关键字 输出以u开头的行 输出非u开头的行 ...

  9. 痞子衡嵌入式:介绍i.MXRT定时器PIT的多通道链接模式及其在coremark测试工程里的应用

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家介绍的是i.MXRT定时器PIT的多通道链接模式及其在coremark测试里的应用. 早在 2018 年 i.MXRT 系列跨界处理器刚推出的时 ...

  10. 解决POI多线程导出时数据错乱问题

    项目里有一个导出功能,但随着数据量大量上涨,导出时间长到不可忍受,遂重写此接口,多线程导出的代码并不复杂,每页有一条线程负责写入,利用线程池去调度,用countdownLatch保证在所有数据写完后再 ...