51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1146|回复: 9
打印 上一主题 下一主题

问一个单元测试的问题

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-7-26 14:19:38 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家都知道,做单元测试的时候,往往对被测试函数写驱动以及桩
桩和驱动都比较容易理解,但是在实际写驱动的过程中遇到一个问题.
问题描述如下:
这是被测试代码:
int main()
{
  int i, l = 0;
  for (i = 3; i < 65536; i += 2) {
    int j, k, m = 1;
    k = sqrt(i)+1;
    for (j = 3; j < k; j += 2) {
      if (i % j == 0) {
        m = 0;
        break;
      }
    }
    if (m == 1) {
       l++;
    }
  }
  printf("%i\n", l);
  return 0;
}

我们看到了,所要测试的是 main 函数!!!!
如何写驱动呢?

问题二:同样是这个函数,如果没有覆盖率的需求(既直接给这么一个函数,就要求做单元测试),那么我们自己是不是就要考虑覆盖率呢?

以该函数为例子,望解答................................
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-7-26 19:00:05 | 只看该作者
这个函数是打印出3到65536之间的质数个数的吧,该函数根本就没有输入数据,要驱动干什么。。驱动本来就是接受测试数据并把它传送给被测单元的。
我觉得这个main()函数根本不需要测试。。它没有需要测试的接口什么的,而且语句覆盖100%,所有循环都跑到了。。

一定要测试的话,就程序插桩吧。。

个人意见,仅供参考。

[ 本帖最后由 guolm1225 于 2006-7-27 07:42 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-7-26 22:04:28 | 只看该作者
呵呵。JJKUI说的有道理哦。觉得像是大学里程序设计后的调试。在加上头文件,在加上调用这个函数的一个语句直接在TC下编译调试后看运行结果就可以判断是否正确了。没有必要用驱动函数了。。。。。。。。
个人意见,仅供参考,如有异议,还请指教。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2006-7-27 09:51:52 | 只看该作者
我感谢前面两位同学的解答
不过,注意到了没有,该main有返回值,既然有返回值的话,就应该要测试啊

正是考虑 main()可以直接运行,所以一直疑问怎么写驱动?
不是有main()就不用测试的,假设一个程序,把所有的功能都写到了 main()函数中(当然,这种写法不理想的),难道也不测试吗?当然不会

当然,这个是给的任务,不测也得测
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-7-27 13:54:07 | 只看该作者
千万不要陷入教条主义

1、这本来就是顶层函数,可以从外接受输入(当然这里不需要输入),还要写驱动干什么?
2、就这个对象而言,内部流程完全不受外部控制,是不需要考虑逻辑覆盖的。只要把它看成一个黑盒验证其结果是否正确就行了。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-7-28 00:58:09 | 只看该作者

这样的代码为什么要写成MAIN函数?

感觉不符合编程的风格,封装在其它函数里,用MAIN函数调用不是更好?函数还可以重用。
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-7-29 20:44:04 | 只看该作者
要测的是主函数,而那又是个函数又没子模块,都相当于测整个程序了,又没界面,都可以看成是系统测试的,不知道这么想对不对!
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-7-30 20:29:17 | 只看该作者
同意六楼的说法,这样就可以将main 函数作为驱动来解决没有驱动的问题了。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-7-30 20:32:03 | 只看该作者
而且这段程序输出的只有一个值而已,似乎与作者的原意不符。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
发表于 2006-7-30 21:17:24 | 只看该作者
测试需要依据,光一段代码就要测试?似乎太不规范了。
同意 2楼的意见。
如果该程序要求输入一个3~65535之内的限制值x,打印3~x之间的质数个数那么还有点意思。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-11-18 22:57 , Processed in 0.075449 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表