需求描述
被测试段代码实现的功能是:如果a>b,则返回a,否则返回a/b
被测试段代码由两个函数实现,分别是
---int max (int a, int b, char *msg)
---void divide (int *a, int *b)
divide函数实现a/b功能,max函数实现其他对应功能,并进行结果输出
int max (int a, int b, char *msg)
{
char dsp[20]; /*声明一个大小为20的char型数组*/
if (a<0 || b<0) /*如果a和b中有一个数不是正数*/
return -1; /*则直接返回*/
if (a>b) /*如果a大于b,*/
; /*什么也不做*/
else
divide (&a, &b);
sprintf (dsp, ”%s %d”,msg,a);
printf (dsp);
return a;
}
void divide (int *a, int *b)
{
(*a)=(*a)/(*b);
return ;
}
画出结构图为:
集成测试操作步骤
确定集成测试策略
---采用自底向上的测试策略
确定集成测试粒度
---函数
选定测试用例设计方法
---等价类划分、边界值等
编写测试用例
---因为测试策略是自底向上,所以先测试divide( int *a, int *b)函数
构造驱动(其中m和n是测试用例输入)
int test ( )
{
int a=m;
int b=n;
divide( &a, &b);
}
依次执行测试用例,完成测试
发现并跟踪处理bug
本例子中的程序都存在什么缺陷呢?
程序存在的缺陷
没有对b不能为0的情况进行限制
当字符串msg的长度加上a整数的位数超过20时,会使dsp数组溢出
当msg的值(指针的值)为NULL时,sprintf函数将出现问题