博客信息 沈阳航空航天大学计算机学院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. 为什么后台给前台Date是时间戳,而前台给后台则直接是时间字符串?

    一.因为时间的格式有很多种,不同的页面可能对不同的时间显示需求不同.比如: 05-8-8 上午9:17 2005-8-8 9:17:42 2005年8月8日 上午09时17分42秒 2005年8月8日 ...

  2. 日期类 Date

    import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; impor ...

  3. iOS block的用法 by -- 周傅琦君

    X.1 初探Block X.1.1 宣告和使用Block 我们使用「^」运算子来宣告一个block变数,而且在block的定义最后面要加上「;」来表示一个完整的述句(也就是将整个block定义视为前面 ...

  4. 国外很便宜的服务器 一年 2核2G 一年20美元

    今年 服务器 //=====================================一下是去年的================================= 优惠码:zhujicepin ...

  5. 3、前端--伪元素选择器、选择器优先级、字体、背景、边框、display、盒子模型

    伪元素选择器 # 首字调整>>>:也是一种文档布局的方式 p:first-letter { font-size: 48px; /*字体大小*/ color: red; } # 在文本 ...

  6. rsync 与 inotify 的使用 & 实现实时同步备份

    今日内容 rsync 内容详细 上一篇内容问题 1.yum源问题 2.VPN链接正常,但是没办法通过172 3.VPN链接时,出现了DNS错误 4.掩码不对 5.openvpn开启错误 复制的命令 1 ...

  7. 主机磁盘使用率超过85%导致es索引变为只读模式

    [ type=cluster_block_exception, reason=index [ index_name ] FORBIDDEN/12/index read-only / allow del ...

  8. 使用MyBatis拦截器后,摸鱼时间又长了。🐟

    场景 在后端服务开发时,现在很流行的框架组合就是SSM(SpringBoot + Spring + MyBatis),在我们进行一些业务系统开发时,会有很多的业务数据表,而表中的信息从新插入开始,整个 ...

  9. 使用并发 ssh 连接来提升捞日志脚本执行效率

    问题背景 公司有个简单粗暴的日志服务,它部署在多台机器实例上,收集的日志记录在每台机器本地硬盘,写一个小时自动切换日志文件,硬盘空间写满了自动回卷,大约可以保存两三天的历史数据.为什么说它粗暴呢?原来 ...

  10. Python+selenium自动循环扔QQ邮箱漂流瓶

    Python代码如下: # coding=utf-8 from selenium import webdriver from time import sleep from random import ...