课上我们王老师给我们留了一个程序,让我们分析一下这个程序的异常漏洞,为做以后完善的软件做好铺垫,软件异常的处理非常重要,这关系到软件的以后发展,甚至会造成严重的后果。小小的错误酿成严重的后果。单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。下面我们来看一个程序。
查找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 ",max);
printf("请输出5个数: ");
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 ",max);
return 0;
}
max没有定义:其中的它的值为:-858993460
其测试数据结果如下所示:
第一种情况:
第二种情况:
第三种情况:
第四种情况:
当输入为空数组的时候:-858993460
我们进行测试的时候,有的时候会出现错误和异常,这是我们不允许的,客户更不能允许,所以我们要考虑周全,当写一个模块或者函数的时候,要进行测试,保证代码的正确性!
通常,我们会认为这是一个错误,将抛出一个异常,修改方法:
int Largest(int list[], int length)
{
int i, max;
if ( list == null || length == 0)
{
return 0;
}
……
}
以上是本人的观点,谢谢观看,有什么错误的地方,欢迎大家指正!