51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 13279|回复: 22
打印 上一主题 下一主题

[求助] 请帮我针对下面小段程序用三种白盒测试方法设计测试用例

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2009-12-18 16:51:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
请帮我针对下面小段程序用三种白盒测试方法设计测试用例



Int  IsLeap(int year)
{
if  (year % 4 == 0)
   {
      if (year % 100 == 0)
      {
         if (year % 400 ==0)
           leap = 1;
         else
           leap = 0;
      }
      else
        leap = 1;
}
else
  leap = 0;
return leap;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏2
回复

使用道具 举报

该用户从未签到

2#
发表于 2009-12-18 20:57:59 | 只看该作者
纯粹从白盒角度来设计用例,是方向性的错误,这是缺少实践的书本和专家的误导。这叫跟着代码走,费力不讨好。

    程序中的错误,根据产生原因可分为两类:代码错误和代码缺失。代码缺失是程序员未考虑到某些输入,未编写对应代码形成的。白盒覆盖基于现有代码,无法发现这种错误。那么,白盒覆盖是否能发现前一种错误?未必!用例必须根据程序功能设定正确的预期输出,否则再高的白盒覆盖也没有意义。也就是说,程序的设计功能是用例设计工作中绕不过去的,是一切的基础。既然如此,为什么要纯粹从白盒角度来设计用例?我认为,类似基路径法之类的纯白盒方法都是应该抛弃的,效率低下不说,既不能发现代码缺失错误,也容易造成忽略程序设计功能这个测试的根本依据。

    白盒方法的价值在于衡量对既有代码的测试完整性,也可以根据白盒覆盖找出遗漏的用例,这些价值也是建立在用例是基于功能来设计、设定了必要的预期输出的基础上的。
所以,正确的方法应该是:首先根据功能来设计用例,并将数据集中起来,从“有哪些正常输入?有哪些边界输入?有哪些非法输入”三个角度检查完整性,这样可以有效发现代码缺失错误。然后,再统计白盒覆盖,根据未覆盖的逻辑单位,找出遗漏用例,实现高覆盖,新加的用例也要根据设计功能设定必要的预期输出。这样做,即避免了掉入“跟着代码走”的陷阱,白盒方法也不用起头做起,效率高得多。

    下面我就楼主提供的代码演示一下:

    首先根据设计功能:计算某一年是否为润年,设计了几个用例:
   

    这里输入只有一个参数,表格中容易检查,对于多个输入的代码来说,应该把数据进一步集中检查,除了检查每个参数或其他输入的取值,必要时还要检查这些值的组合:
     

    接下来,再查看白盒覆盖率,代码中,红色带背景的语句未覆盖,[F]表示条件的取假值未覆盖,[T]表示取真值未覆盖,[M]表示MC/DC未覆盖;逻辑结构图中,红色的分支未覆盖,未覆盖路径用红色画出。
     

    然后,选中未覆盖的语句,使用用例设计器,找出对应的遗漏用例,根据提示,year%4==0,这是不能破坏的,year%100!=0,这是我们要满足的,那么,把year的值改为1996(当然也可以是满足条件的其他值)就OK了:
   

   执行测试后,所有覆盖都已完成,包括:语句覆盖、分支覆盖、路径覆盖、条件覆盖、判定条件覆盖(C/DC)、修正判定条件覆盖(MC/DC)。
   

    这比纯粹从白盒角度来设计用例效率高多了吧?最重要的是,避免了“跟着代码走”陷阱。以上用的是Visual Unit 2.6,用别的工具,或者不用工具,道理也是一样的。

[ 本帖最后由 VisualUnit 于 2009-12-18 20:59 编辑 ]
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2009-12-21 12:36:49 | 只看该作者
学习了!没做这么方面的白盒用例设计方法
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2009-12-22 09:34:57 | 只看该作者
education~
回复 支持 反对

使用道具 举报

  • TA的每日心情
    擦汗
    2015-5-25 17:24
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    5#
    发表于 2009-12-23 11:00:59 | 只看该作者
    赞一个~~~~~~~~~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2009-12-25 18:51:00 | 只看该作者
    二楼,回答真是精辟,可谓深刻
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2010-2-22 17:55:20 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
    发表于 2010-3-6 15:42:58 | 只看该作者

    好帖

    顶一个!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2010-6-22 22:18:11 | 只看该作者
    谢谢2楼,我看白盒测试方法教程时候就想,用这些逻辑覆盖很难发现发现功能或业务逻辑问题,看了你的介绍,受益匪浅,谢谢!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2010-6-24 23:29:09 | 只看该作者
    2楼中所说的输入了数据后,可以看到测试覆盖率之类的指标,请问那个是一种工具吗?是什么工具啊
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2010-9-9 16:13:20 | 只看该作者
    那是一种单元测试工具,一个很好的工具,可以下载试用一下。VU
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2010-9-11 11:56:09 | 只看该作者
    学习了!谢谢2楼
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2011-2-28 23:12:42 | 只看该作者
    谢谢VisualUnit 提供的新思路。
    但我还是坚持先做纯粹的白盒(在企业能容忍的程度下),我觉得代码的缺失可以从概要设计和详细设计的评审中预防,而且,经过越纯粹的白盒,代码的质量才越过硬。再者,白盒之后还有黑盒测试。个人观点,请指正!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    14#
    发表于 2011-3-23 11:31:16 | 只看该作者
    黑盒和白盒测试本来就没有先后之分......  但白盒只能是在实现最基本功能的基础上进行的测试吧。否则就偏离需求了吧! 个人观点,请指正!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15#
    发表于 2011-7-15 17:14:29 | 只看该作者
    好贴一个,收藏~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    16#
    发表于 2011-9-30 11:43:23 | 只看该作者
    VisualUnit经典的回复一定要顶!不但从经验入手进行解答,而且还结合工具的使用,真是精辟!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17#
    发表于 2011-10-14 14:27:24 | 只看该作者
    不错
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    18#
    发表于 2011-12-1 09:35:09 | 只看该作者
    学习了
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    19#
    发表于 2012-10-19 14:49:45 | 只看该作者
    2楼说的真好
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    20#
    发表于 2012-10-23 16:05:19 | 只看该作者
    2楼用的是什么工具呀
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-25 14:19 , Processed in 0.100224 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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