keenling 发表于 2007-5-16 10:40:36

问一个集成测试的问题

资料请看集成测试课上发的 自顶向下单元测试策略和集成测试策略比较.doc
关于 测试ctrl函数和add函数的集成 下的 针对接口 有一个疑问:
源代码:
int ctrl(int x, int y)
{
int temp=0;
if(x>=y)
{
    temp=add(x, y);
    if(x==2 && y==1 && temp==3)
      printf(“testcase JISUAN_IT_CTRL ADD_001 pass”);
    else
      printf(“testcase JISUAN_IT_CTRL ADD_001 fail”);
}
else
    temp=stub_sub(x, y);
return temp;
}
这里既然要测试ctrl函数和add函数之间的接口参数传递是否正确,为什么要在t emp=add(x, y);之后加上:
if(x==2 && y==1 && temp==3)
      printf(“testcase JISUAN_IT_CTRL ADD_001 pass”);
    else
      printf(“testcase JISUAN_IT_CTRL ADD_001 fail”);
这样和 测试针对集成后的加法功能 没有实际区别呀,把以上代码加到 add(x,y)函数内部去做判断不是更适合判断参数传递的正确性吗?麻烦大家告诉我一下。sdlkfj8

dxhwj 发表于 2007-5-16 10:55:23

因为要测 ctrl和add的接口,要ctrl把输入传给add,add产生输出后,还要测把输出返回给ctrl,才能测接口的正确性。所以要在ctrl里测add的返回值temp的正确性。
sdlkfj5 我是这样这样理解的,不知道全部的资料是什么。。。

[ 本帖最后由 dxhwj 于 2007-5-16 19:25 编辑 ]

jane.su 发表于 2007-5-16 14:48:50

我还没有看文档,只是看楼主描述的这一部分,来说说我滴想法。

temp=add(x, y);
    if(x==2 && y==1 && temp==3)

这个判断放在这里,感觉是,针对用例中参数的输入(x==2 && y==1),和输出(temp==3,add的结果值)做的判断;
如果判断放在add里面的话,那么就不算是集成的测试了,因为判断进入到函数add内部了;集成测试不是只关注接口吗?

如果有错,麻烦各位大大指正。sdlkfj5

mowuhen 发表于 2007-5-16 15:27:19

回复 #1 keenling 的帖子

兄弟,一个前提,在开展集成测试的时候,单元测试已经完成了,ctrl函数和add函数内部实现之正确性已分别得到了保障。在此前提下才开展的集成测试。
而集成测试,所站的高度,绝不应仅仅是某个单独的函数,你说对么?
我们要站在集成后的模块高度看它整体实现是否达到我们预期的要求,对不对?

个人想法,如有偏颇还请各位不吝指正。sdlkfj1

v_v 发表于 2007-5-16 18:58:15

测试ctrl函数和add函数之间的接口参数传递是否正确?这是个前提,集成测试是看这两函数之间的接口传递值的正确性,要是"把以上代码加到 add(x,y)函数内部去做判断"这就变成做单元测试了......个人意见.呵呵

candy_83 发表于 2007-5-18 17:55:06

ctrl通过temp=add(x, y)向add传入1,2,经过add对x,y的处理得到结果3,add将3传递给了temp,正确完成这两次传递后,if(x==2 && y==1 && temp==3)条件成立
所以   printf(“testcase JISUAN_IT_CTRL ADD_001 pass”);如果两次传递中的任意一次不正确printf(“testcase JISUAN_IT_CTRL ADD_001 fail”);所以这个函数很好地验证了参数传递的正确性。

[ 本帖最后由 candy_83 于 2007-5-18 18:00 编辑 ]
页: [1]
查看完整版本: 问一个集成测试的问题