对一个程序单元测试

课上我们王老师给我们留了一个程序,让我们分析一下这个程序的异常漏洞,为做以后完善的软件做好铺垫,软件异常的处理非常重要,这关系到软件的以后发展,甚至会造成严重的后果。小小的错误酿成严重的后果。单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。下面我们来看一个程序。

查找list[]中的最大值:int Largest(int list[], int length);

首份实现代码如下:

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;

}

我们对上面的代码进行测试:编写测试代码如下

// 单元测试.cpp : Defines the entry point for the console application.

//

 

#include "stdafx.h"

 

#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 argc, char* argv[])

{

int list[5],i,max;

//printf("%d\n",max);

printf("请输出5个数:\n");

    scanf("%d",&list[0]);

scanf("%d",&list[1]);

scanf("%d",&list[2]);

scanf("%d",&list[3]);

scanf("%d",&list[4]);

    

max=largest(list,0);

printf("list的最大值为:%d\n",max);

return 0;

}

 max没有定义:其中的它的值为:-858993460

其测试数据结果如下所示:

第一种情况:

第二种情况:

第三种情况:

第四种情况:

当输入为空数组的时候:-858993460

我们进行测试的时候,有的时候会出现错误和异常,这是我们不允许的,客户更不能允许,所以我们要考虑周全,当写一个模块或者函数的时候,要进行测试,保证代码的正确性!

通常,我们会认为这是一个错误,将抛出一个异常,修改方法:
int Largest(int list[], int length)
{
  int i, max;
  if ( list == null || length == 0)
      {
      return 0;
  }
  ……
}

以上是本人的观点,谢谢观看,有什么错误的地方,欢迎大家指正!

 

posted @ 2014-03-09 16:39  墨瞋  阅读(295)  评论(0编辑  收藏  举报