程序的单元测试?软件工程课上所获得的感悟
作者:网络转载 发布时间:[ 2014/5/26 13:25:39 ] 推荐标签:程序 单元测试 软件工程
现在说单元测试,那么什么是单元测试呢?单元测试是开发者编写的一小段代码,用于检验被测代码的一个很小的、很明确的功能是否正确。通常而言,一个单元测试是用于判断某个特定条件(或者场景)下某个特定函数的行为。
课堂上王老师给了我们一个例子。查找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;
}
|
当然这个函数是有一定的小小的问题的!通过对程序的编写以及编译,其中的错误是i的范围有误,且没有给max定义初值。前面的那个问题课堂上是找到了,但是同样我和我同桌蔡都没有想到为max定义一个初值。(这是一个程序员不应该有的问题)歪打正着的测试了几组数据竟然是正确的。{2,4 6,0}大值是6。又测试了另外一组{-1,-7,-3 ,0}大的数为0,{-7,3,45,0,-2}大的数为45,王老师在不停的说,输入的数组为空怎样处理,数组中的数有浮点数怎么办,若输入的是字符怎么办,这个函数还可以满足性能要求吗,答案当然是否定的。所以课下我对这个函数又进行了修改。代码如下:
1 int Largest(int list[],int length)
2 {
3 int i,max;
4 max=list[0];
5 bool bRet = cin.good();
6 if(list==NULL)
7 {
8 cout<<"数组不能为空!"<<endl;
9 exit(-1);
10 }
11 else if(length==0)
12 {
13 cout<<"数组长度不能为零!"<<endl;
14 exit(-1);
15 }
16 else if(!bRet)
17 {
18 cout<<"您输入的有误,必须输入整数!"<<endl;
19 exit(-1);
20 }
21 else
22 {
23 for(i=0;i<=length-1;i++)
24 {
25 if(list[i]>max)
26 {
27 max=list[i];
28 }
29 }
30 return max;
31 }
}
|
这样上述的问题都得到了解决。bool bRet = cin.good()函数是用来判断从键盘输入的数据是不是与定义的整型数据相同(输入的类型包括浮点型与字符型)。只要用户输入的数据有上述问题都会有相应的提示。
其实单元测试是很重要的,像盖楼房一样,如果每块砖都是不合格的,那么整栋楼的质量也不能保证了。只有我们把每个函数或者模块的功能做好,整个工程的bug才会越来越少。(真是受益匪浅啊!)把单元测试做好了,会大大地节省我们的调试程序的时间。所以有必要对这方面提起重视来。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11