周一上课时老师讲了关于单元测试的内容,下面是我对单元测试的理解。
单元测试是由程序员自己来完成,最终受益的也是程序员自己。可以这么说,程序员有责任编写功能代码,同时也就有责任为自己的代码编写单元测试。执行单元测试,就是为了证明这段代码的行为和我们期望的一致。那么单元测试需要测试哪些部分呢?
单元测试(模块测试)是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。单元测试对象也就是软件设计的最小单位,即模块,函数,类或者子过程等等。模块检测分为五块:独立路径,出错处理,模块接口,局部数据结构,边界条件。
#include<stdio.h> #include<iostream> int Largest(int list[],int length) { int i; int max; max=list[0]; if(length==0) { printf("输入的数组为空\n"); return -444; } for(i=0;i<length;i++) { if(list[i]=='.') { printf("输入的数不是整数\n"); return -4444; } if(list[i]>max) { max=list[i]; } } return max; } void main() { int i; int len; int max; int a[100]; printf("若输出数组为空且最大值输出-444或者最大值输出为-4444,说明存在异常\n"); for(int j=0;j<10;j++) { printf("\n请输入数组的长度:"); scanf("%d",&len); printf("请输入%d个整数:\n",len); for(i=0;i<len;i++) { scanf("%d",&a[i]); } max=Largest(a,len); printf("此数组的最大值max=%d\n",max); } system("pause"); }
上课时老师给的函数,如下:
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; }
测试这段代码,经过多次思量,写出了开始那段测试代码,运行结果截图如下:
这次的单元测试,有很多细节之处,比如,max没有初始化,length的边界不对。测试代码里,加了数组是否为空的判断,还有是否是整形数组的判断。当然还有很多没有实现的。比如一个一个输入比较麻烦,如果让它读一个文档会比较省力。这个想法因为时间关系,还没有实现。总之,学到了一些以前没有注意过的知识。