软件工程-单人任务
任务描述:
请阅读邹欣老师的这篇博文(地址:https://www.cnblogs.com/xinz/archive/2011/10/22/2220872.html)和构建之法第1~3章内容,尤其是第2章效能分析和第3章代码规范部分。
回顾和复习课堂讲授的单元测试部分内容。
任务目的:
熟悉一个“高质量”软件的开发过程。
任务要求:
(1) 请从语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖五个覆盖标准中(条件组合覆盖难度较大,鼓励尝试,但请谨慎选择),任选一个标准设计测试用例 。
(2) 请利用自动测试工具对程序进行测试 。
(3) 请下载《第二次作业.doc》模板将程序运行结果和自动测试分析结果截图保存到文档中,提交。
【题目内容】
使用C语言完成: 给定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】
输入:
-2 11 -4 13 -5 -2
输出:
20
【测试用例2】
输入:
6 -3 -2 7 -15 1 2 2
输出:
8
【测试用例3】
输入:
-5 -3 -7 -10 -6 -8 -2
输出:
0
“优化后的代码” #include
单元测试
参考上一届学长文章:软件工程(2019)第二次作业 - 肖乃俊 - 博客园 (cnblogs.com)
软件为visual studio 2019,不会用visual studio 2010测试。。。
安装visual studio 2019参考文章visual studio2019的安装以及使用_江小举的博客-CSDN博客
为单元测试修改代码结构
#include#include#includeusing namespace std;int maxsum(int nums[], int n) { int i = 0, sum = 0, maxsum = 0; for (i = 0; i < n; i++) { sum = sum + nums[i]; if (sum < 0) { sum = 0; } if (sum > maxsum) { maxsum = sum; } } return maxsum; }int main() { int n = 0, num = 0; int nums[1000]; #pragma warning(suppress : 4996) while (scanf("%d", &num) != EOF) { nums[n] = num; n++; if (getchar() == '\n') { break; } } cout << maxsum(nums, n); system("pause"); return 0; }
测试代码
#include "pch.h"#include "CppUnitTest.h"#include "../test.h"using namespace Microsoft::VisualStudio::CppUnitTestFramework;namespace UnitTest1 { TEST_CLASS(UnitTest1) { public: TEST_METHOD(TestMethod1) { int a[6] = {-2,11,-4,13,-5,-2}, b[8] = {6,-3,-2,7,-15,1,2,2}, c[7] = {-5,-3,-7,-10,-6,-8,-2}; Assert::AreEqual(maxsum(a,6),20); Assert::AreEqual(maxsum(b,8),8); Assert::AreEqual(maxsum(c,7),0); } }; }
测试>>运行所有测试