软件工程实验一郑一鸣

沈阳航空航天大学2022级软件工程实验一

1.1 个人情况

(1) 回顾你过去将近3年的学习经历

  • 当初你报考的时候,是真正喜欢计算机这个专业吗?

答:是的,我刚报考的时候,就通过查阅资料明确了自己的专业方向——软件工程。经过了三年的学习,了解了一些有关计算机的知识,越发觉得自己的知识储备量有所欠缺,如果将来从事这方面的工作,还应该更加努力。

  • 你现在后悔选择了这个专业吗?

答:没有后悔,因为开弓没有回头箭,选择了就要继续走下去。

  • 你认为你现在最喜欢的领域是什么(可以是计算机的也可以是其它领域)?

答:最喜欢的领域是程序开发,软件测试方向。

 

(2) 总结你现在已经掌握的知识

  • 你都具备了那些专业知识和能力?

答:数据结构、操作系统、c++、编译原理等;在学校的这两年,跟随学校的课程,我学会了C++,C,python语言,学会了自己动手编程;

  • 你认为你已经为成为一个合格的计算机软件工程是做好准备了吗?在专业技术、个人能力以及其它方面你还有那些欠缺?

答:我觉得我在专业技术和个人能力方面还有欠缺。我在编程方面还不能做到灵活运用,对于软件的开发和测试了解的不够多。但是只要我一直不放弃,我相信我一定会有所长进。

 

(3) 畅想未来

  • 对照材料中前人的经历,你还准备从事计算机这个行业吗?

答:打算,通过学姐介绍自己的经历。初步打算毕业后从事软件测试的工作。

  • 你认为与其它专业的同学相比,你的优势都有哪些?

答:我最大的优势就是严谨细致,逻辑思维能力强。善于沟通协作。

  • 对已经不远的将来,你的职涯规划是什么?

答:打算继续深造,学习更多计算机方面的知识,成为一名优秀的计算机人。

 

(4) 代码托管实训

  • 用任何一种语言写一个能运行的小程序,要求输出字符串:“Hello World!”

代码如下:

https://github.com/09ZYM/zym/blob/main/09

 

1.2 题目一

  • 最大连续子数组和(最大子段和)

问题: 给定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.1代码链接

题目一代码如下:

https://github.com/09ZYM/zym/blob/main/shuzu

#include<stdio.h>
#include<stdlib.h>
int main()
{
	int x,i,j;
	char s[50],a[50];
	while(1)
	{
	int zym=0,sum=0,max=0,h=0;
	scanf("%d",&x);
	for(i=0;i<x;i++)
		scanf("%d",&s[i]);
	for(i=0;i<x;i++)
	{
		if(s[i]<0)
			zym++;
		else
			break;
	}
	if(zym==x&&zym!=0)
	{
		printf("0");
		system("pause");
		return 0;
	}
	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];
	}
	printf("%d",max);
	system("pause");
	}
}

运行结果如下:

 

1.2.2工作记录

2.1  PSP0 工作记录表

项目

记录结果

日期

2022.11.7 

开始时间

13:00 

结束时间

17:00 

编码行数

46 

错误数量

错误1

只输入一个数输出不正确

错误1修改时间

14:00

 

1.2.3测试用例

根据判定/条件覆盖测试的定义:判定条件覆盖是设计足够的测试用例,得使判断中每个条件的所有可能取值至少执行一次,同时每个判断本身所有可能结果也至少执行一次。设计三组测试用例如下:

  • 用例1:ab:{-2,-4,-1,-8,-9},最大字段和为0;
  • 用例2:acd:{1,2,3,4,5},最大字段和为15;
  • 用例3:ace:{-1,-3,5,2,-9},最大字段和为16;

1.2.4测试过程

我选择了用vs 2017的自动测试工具对程序进行测试

测试代码如下:

https://github.com/09ZYM/zym/blob/main/test

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

using namespace Microsoft::VisualStudio::CppUnitTestFramework;

namespace UnitTest1
{
    TEST_CLASS(UnitTest1)
    {
    public:

        TEST_METHOD(TestMethod1)
        {
            int max, zym = 0, i, x = 5;
            int a[5] = { -2,-4,-1,-8,-9 };
            
            for (i = 0; i < x; i++)
            {
                if (a[i] < 0)
                    zym++;
            }
            if (zym == 5)
                max = 0;
            int real = 0;

            Assert::AreEqual(max, real);
        }
        TEST_METHOD(TestMethod2)
        {
            int max = 0, i, j, x = 5, sum, h = 0;
            int s[5] = { 1,2,3,4,5 }, 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);
        }
        TEST_METHOD(TestMethod3)
        {
            int max = 0, i, j, x = 5, sum, h = 0;
            int s[5] = { -1,-3,5,2,9 }, 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 = 16;
            Assert::AreEqual(max, real);
        }
    };

  

 

1.3 实验总结

      这次作业是让我们熟悉“高质量”软件开发过程,这次是做一个程序的开发,我从中学到了很多。比如使用博客园发表随笔,如何使用GitHub系统,进行学习;针对你的程序如何去设计测试用例,使用例尽可能的覆盖到各个语句判断、分支等等。还学会了单元测试工具和参数化自动测试的方法。感觉自己但是觉得自身实力还是欠缺许多,还得继续努力。

posted @ 2022-11-08 12:09  2109zym  阅读(50)  评论(0编辑  收藏  举报