51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

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

疑问:关于单元测试用例的设计的方法。大家有什么好的建议?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-9-7 16:08:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
学习了单元测试用例设计后,我一直对以下两种设计方法难以取舍:
1、先从黑盒的角度去考虑(用等价类划分等方法),再用白盒的方法(比如语句覆盖等方法)做一些补充。
     优点:设计的用例覆盖比较充分,速度也比较快。
     缺点:用例数目过多,用例效率不高。
2、先从白盒的角度去考虑,再用黑盒方法补充。
     优点:设计的用例少而精,用例效率较高。
     缺点:从白盒的角度设计出用例后,再用黑盒的方法补充起来比较困难,很容易出现功能重复的用例。
也许是我太笨,到现在也没想清楚到底该用什么方法来设计COUNTER的单元测试用例,大家帮忙看看呀!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-9-7 17:18:47 | 只看该作者
LZ真牛啊;把这区分的这么清晰
不过有一个疑问:
    “先从白盒的角度去考虑,再用黑盒方法补充。
     优点:设计的用例少而精,用例效率较高。”
这是谁说的呢?
比如 说要求分支覆盖100%;;而作为嵌套的循环,你要设计多少个case呢?
如:
  for(i=0;i<=100;i++)
{
      for(i=0;i<=100;i++)
    {
           for(i=0;i<=100;i++)
               {
                  printf("Bonjour!");
               }
    }
}
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-9-7 17:49:57 | 只看该作者
可能更好的还是先从黑盒的角度出发,然后在黑盒用例的基础上考虑白盒的各种覆盖率是否达到标准了.这样比较能覆盖的充分,速度也快.
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-9-7 17:51:06 | 只看该作者
先用黑盒再用白盒比较好!
通过黑盒测试,你很快就能验证功能是否都正确的实现了!
功能都正确的实现了再继续用白盒去测才有意义,如果基本的功能都没能正确的实现就去花费大量的时间做白盒测试效率很低的!做白盒测试要的工作量要比黑盒测试大很多啊!
回复 支持 反对

使用道具 举报

该用户从未签到

5#
发表于 2006-9-7 23:12:40 | 只看该作者
我认为先用白盒方法再用黑盒方法补充更为合理。因为经过白盒的方法可能对基本的路径,分支和条件都有了一定范围的测试,就是说单元内部逻辑上的问题大部分都被发现出来了。逻辑上没有问题,那就可以找一些比较生僻的输入来做黑盒测试,也就是错误猜测方法。这样的话,内部的逻辑没什么大问题,而碰到一些生僻的输入也可以应付,那么说明这个单元已经很成熟了,单元测试到这一步就可以了。
        如果先用黑盒测试的话,那么用例实在是太多,效率确实如楼主所说不高。而且可能对于一些不易用到的路径的测试不会很充分。
        所以单元测试最好是白盒测比较好。书上不是也说单元测试是白盒测试么。
        不知道说的有没有道理,请大家批评。
回复 支持 反对

使用道具 举报

该用户从未签到

6#
发表于 2006-9-9 10:05:01 | 只看该作者
楼主是13期的吧?
我的疑问和edwin_chen一样, 请问一下你是如何定义黑盒,白盒设计出来的用例效率高低的?根据在哪里?

观点上,我与empire,xiaoan的意见相同,先黑盒再白盒. 根据: <软件测试技术概论>P21页2.3节’白盒测试与黑盒测试的比较’. 我就劳累点,将一些重点打上来以供大家再深入讨论一下.

白盒优点比如说,可以检测测试对象代码中各条路径,分支; 发现代码本身的错误;等. 白盒缺点就是成本高,不对代码是否实现了规格要求做验证,等.
黑盒优点,估计大家都可以数N多出来,比如说测试起来不用了解代码是咋写的,内部结构是咋整的, 站在用户角度来测试,可以找出与规格不同之处,用例可以执行得早等等. 这缺点也就多了些, 比如说,输入的测试就不可能完全实现,如果完全实现,还不累死? 所以才出现了等价类划分等方法嘛; 假若规格不清楚,用例就难整出来;还有就是前面的同学也提到过N多路径不会被测到,等等.

因此,我个人认为, 在单元测试阶段, 你用例的设计应该是以黑盒为先, 先验证了单元是与规格(LLD,如果没有,找设计人员喝茶去;-))要求相符了, 以及有没有做些规格上没有写的东西, 如果连规格要求都不符,还搞下面的测试干嘛?这不是浪费成本吗?通过黑盒后,再用白盒测试设计方法来对代码本身进行测试.(请参考<软件测试技术概论>P101页)

综上所述, 在单元测试(当然也包括其它阶段的测试)中设计用例,应该以满不满足规格要求为先(黑盒),然后再搞白盒为好.

Stringw的说法有问题, 如果白盒先行, 等你费了老大的劲, 把单元内的逻辑问题,代码问题都搞定了, 回过头来才发现,你测的单元连规格要求都没实现, 内部逻辑再没问题, 当规格一改正确了,你还不一样要返工重新测试? 基于这一点, 你觉得是不是应该是用黑盒对规格测试先为好? ;-) 还有, 在各个阶段的测试,都可以应用各种测试方法的, 比如说我们现在说的在单元测试中的设计用例方法,就是结合了黑白盒的优点来对单元进行测试, 而不是书上说单元测试是白盒测试,所以就应该只用白盒的方法去测试,而不考虑其它的方法.

讨论让我们学习更进一步! 欢迎拍砖!!
回复 支持 反对

使用道具 举报

该用户从未签到

7#
发表于 2006-9-9 18:28:38 | 只看该作者
原帖由 qiqi 于 2006-9-7 16:08 发表
学习了单元测试用例设计后,我一直对以下两种设计方法难以取舍:
1、先从黑盒的角度去考虑(用等价类划分等方法),再用白盒的方法(比如语句覆盖等方法)做一些补充。
     优点:设计的用例覆盖比较充分,速度 ...


听周老师的,先白后黑,总不能ST,IT,UT一上来都先黑后白吧~咋说我们也学习过白的呀,对不?qiqi
回复 支持 反对

使用道具 举报

该用户从未签到

8#
发表于 2006-9-9 20:33:27 | 只看该作者
首先要明白黑白设计的原理,一句话:用最少的用例保证最好的质量

不要被黑白的区分迷惑的眼睛,他们都是方法而已
不要被谁先谁后迷惑了心智,他们都是一样的,只是关注的角度不同
没有好坏,没有先后,没有任何优先级,要根据自己的特长,产品的特点,进行设计,只要能达到目的的方法就可以,不限于仅仅分的很清楚的黑白。
回复 支持 反对

使用道具 举报

该用户从未签到

9#
发表于 2006-9-9 20:40:25 | 只看该作者
区分黑白的方法,区分单元,集成,系统的阶段,只是让我们能更容易,更简单的关注某些方面,更容易在某些点上关注于质量的好坏。

希望大家不要被黑白,单元,集成,系统而束缚了自己的思想。

如果你认为你的智商能达到200,甚至300,能一次考虑很多方面的话,根本就不需要考虑这些分类,任意发挥就好了。只要目的能达到就OK了。
回复 支持 反对

使用道具 举报

该用户从未签到

10#
 楼主| 发表于 2006-9-10 09:12:43 | 只看该作者
听君一席话,胜读十年书!
回复 支持 反对

使用道具 举报

本版积分规则

关闭

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

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

GMT+8, 2024-11-18 18:46 , Processed in 0.072372 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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