【软件工程】软件单元测试与规范

mac2022-06-30  244

测试代码

查找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


最新回复(0)