3月1日收到信息说周一的软件工程课老师要求我们每人都带笔记本去上课,说是要当堂编写程序,心里有点虚,要是出糗了怎么办。
2014年3月3日 上午10点
上课了,老师先是给我们讲了软件单元测试与规范,生动形象的给我们讲解为什么要进行软件测试,单元测试的目的,范围。紧接着就到了我们单元测试的时候了。
老师要求我们两个人一组,一个人主要编写代码,一个人纠错并记录。以下是我们pair的劳动成果。
这是测试代码:
查找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;
}
这下我就安心多了,这个程序非常简单,我们只需要写一个简单的测试程序就可以了。下面是我们的程序代码:
#include<iostream> using namespace std; int Largest(int list[],int length) { int i,max; max=list[0]; if(length<=0) return 0; for(i=0;i<length;i++) { if(list[i]>max) max=list[i]; } cout<<max; return max; } void main() { int n,i; cout<<"输入数组个数:"<<endl; cin>>n; int a[10]; cout<<"输入整数数组:"<<endl; for(i=0;i<n;i++) { cin>>a[i];} Largest(a,n); }
这个代码是改进后的代码,改进解决的问题:
1,max没有初始化,通过max=list[0]解决
2,for循环中i范围不对,应该改成i<length;
3,length范围限制。即如果length<=0时应提示错误并退出
这是初步的代码,能够实现基本测试
测试数据:
输入数组个数: 4 输入整数数组: 3 2 0 3 3Press any key to continue
这是第一组数据,有重复数据3 测试都能通过。
输入数组个数: 3 输入整数数组: -1 -9 -0 0Press any key to continue
第二组测试数据:特点含有负数和零 单元测试通过
输入数组个数: 1 输入整数数组: 1 1Press any key to continue
第三组测试数据实现了只有一个数据时的最大值查找通过
这个代码还存在一个错误,即数组数据为空怎么办,使用
if(list==null)
return 0;
来抛出异常 ,但是貌似没有实现该功能2014.3.3 22:08
2014.3.4 13:00-13:30
对于昨晚的数据为空的解决办法
if(a[0]==-858993460) cout<<"error";
在王老师的耐心讲解下我才了解到了单元测试不但会使你的工作完成的更轻松,而且会令你的设计变得更好,甚至大大减少你花在调试上面的时间。 单元测试可以提高底层代码的正确性,从而提高调用它的高层代码的正确性。 使用单元测试这个简单有效的技术就是为了令代码变得更加完美。单元测试与代码规范是一个好的编程人应该具有的优秀品质,我们还要加强练习。这次结对训练正是我们软件结对编程的开始,让我们两个有了更好的交流,磨合,学会与人合作,事半功倍。