测试代码
查找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; }编写一个程序对Largest函数进行测试,并写出所有的测试用例。
下面我们编写合适的函数功能,使其能测试出上面测试代码的错误。
测试代码如下:
// 20140303.cpp : Defines the entry point for the console application. // #include "stdafx.h" int largest(int list[],int length) { int i,max=0; for(i=0;i<(length-1);i++) { if(list[i]>max) { max=list[i]; } } return max; } int main(int argc, char* argv[]) { int max1,arr[100],k; printf("数字的个数:"); scanf("%d",&k); printf("请输入测试数字的值:"); for(int i=0;i<k;i++) { scanf("%d",&arr[i]); } max1=largest(arr,k); printf("最大值为:%d\n",max1);//printf("Hello World!\n"); return 0; }通过运行,我们发现了一些问题:
我们发现,最后的结果并不正确。经过逻辑分析,我们可以看出是int largest(int list[],int length)函数中的条件设置错误。
应将其中的for语句调整为:
for(i=0;i<length;i++) { if(list[i]>max) { max=list[i]; } }然后运行得到正确的结果:
接下来,我们测试其他的几点案例:
数组①含有相同的数字:
测试结果OK:
数组②都为负数:
测试结果坑爹了,出现了0:
经过排查,我们发现里max初值为0,我们选取的Max也不合适。这里我们可以将max值赋值为数组的第一个数字的值。
程序代码修改为:max=list[0];
然后测试发现正好可以通过:
数组③:正数负数一起测试
测试结果OK:
数组④:只输入一个数字
测试结果OK:
数组⑤:输入0个数字呢
测试结果出现意外的结果:
这里我们发现,我们并没有对不输入给出提示。
修改代码即可:
if(k==0) { printf("无数据!!!!"); } else { max1=largest(arr,k); printf("最大值为:%d\n",max1); }然后再查看结果:
测试通过。
经过上面的多个数组的测试,我们得到完善的代码:
// 20140303.cpp : Defines the entry point for the console application. // #include "stdafx.h" int largest(int list[],int length) { int i,max=0; max=list[0]; for(i=0;i<length;i++) { if(list[i]>max) { max=list[i]; } } return max; } int main(int argc, char* argv[]) { int max1,arr[100],k; printf("数字的个数:"); scanf("%d",&k); printf("请输入测试数字的值:"); for(int i=0;i<k;i++) { scanf("%d",&arr[i]); } if(k==0) { printf("无数据!!!!"); } else { max1=largest(arr,k); printf("最大值为:%d\n",max1); } //printf("Hello World!\n"); return 0; } 点击查看完整代码总结单元测试的内容:
每个测试的模块一般是一个完整的函数,我们经过各种极端的测试案例,然后排查函数功能的缺陷。
例如本次的测试用例中,我们将各种情况均考虑到了,这样,程序的功能才能完善。
转载于:https://www.cnblogs.com/renguoqing/p/3589530.html