代码改变世界

软件测试(由软件工程检验一段代码是否正确想到的)

2014-03-09 16:51  铿锵玫瑰—叶  阅读(373)  评论(0编辑  收藏  举报

        以前写代码,只要能够运行出来就觉得ok了,但是在软件工程课上老师说那样是远远不够的,他提到了软件测试,判断一段代码是否正确必须进行相应的软件测试。简单地说,软件测试是软件生产过程中的质量管理者,他不但要对软件产品最后的功能、性能负责,而且从软件的需求分析、结构设计阶段以及文档视频规范等诸多方面开始对软件的质量加以保障,是生产出来的软件功能达到设计之初的要求,让用户能用上高质量的软件。课上,老师给我们一段代码,让我们对它进行相应的测试,代码如下:

int Largest(int list[], int length)
{    
    int i,max;
    for (i = 0;i<(length–1);i ++ )
    {
        if(list[i]>max)
        {
            max=list[i];
        }
    }
     return max;
}

通过编写主函数,求出数组的最大值:

#include<stdio.h>
int Largest(int list[], int length)
{    
    int i,max;
    for (i=0;i<(length-1);i++ )
    {
        if(list[i]>max)
        {
            max=list[i];
        }
    }
     return max;
}
int main()
{
    int i,b;
    int a[5];
    printf("请输入您想要测试的数据:\n");
        for(i=0;i<5;i++)
        {
            scanf("%d",&a[i]);
        }
        b=Largest(a,5);    
        printf("最大数为:%d\n",b);
        return b;
}

        输入测试数据:1 5 8 6 2预期结果:最大数为:8实际结果:最大数为:8输入数据:4 8 6 2 10预期结果:最大数为:10实际结果:8.通过检查发现程序中的函数的

for (i = 0;i<(length–1);i ++ )应该改为for (i = 0;i<(length);i ++ )这样就会使输出的结果与预期结果一样了。因为数组中的数据是从第0个数开始的,如果不该写就会出现提前跳出循环的现象。本来以为这样就实现了老师的软件测试的要求,但是事实上不仅如此,还有好多我们没有实现的部分,例如,但该用户输入的数据是空怎么办,或者用户输入的数据是负数结果会如何,而且这个程序中的max没有初始化,我们输程序的编写者,不是用户,但是要站在用户的角度上考虑,考虑到任何情况的出现,这样才是一名合格的程序员。如此,更改函数如下:
int Largest(int list[],int length)
{
    int i;
    int max=list[0];
    if(list==NULL||length==0)
    {
        cout<<"数组不能为空!"<<endl;
        exit(0);
    }
    else 
    {
       for(i=0;i<=(length-1);i++)
       {
          if(list[i]>max) 
          {
              max=list[i];
          }
       }
    }
     return max;
}

在以后的编程中,我会多多注意这样面的问题,使我的程序更加完善。