51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 8641|回复: 12
打印 上一主题 下一主题

[讨论] 白盒测试中,for循环怎样设计测试用例?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-11-29 11:38:54 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
在设计白盒测试用例时,应该考虑判断条件覆盖。需要测的程序是用C语言编的,测试用例也用C来编。我是一个新手,请问如果遇到for循环,应该怎样设计测试用例?
谢谢。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-11-29 17:46:58 | 只看该作者
循环结构一般看作具有两个分支的分支结构,即考虑进入循环和不进入循环,不考虑循环的次数。有些测试方法介绍中主张考虑循环的上下界,实际应用中不太实用,一是很多时候要依靠外部输入来实现上下界覆盖很困难,二是实际效果并不突出。如果循环内有分支,倒是要考虑内部的分支要能覆盖。
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2015-4-23 14:35
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    3#
    发表于 2006-11-29 17:48:44 | 只看该作者
    那就用判断条件、语句覆盖编写测试用例
    for (i=0;i<10;i++)  
      假如是这样的for循环,然后结合测试用例设计方法,等价类、边界值、因果图、错误推测方法设计用例,具体还是根据i的数据类型来分析,简单设计的用例如下,假如i为整型
    当i=0时,。。。
    当i=—6时,
    当i=5时,
    当i=9时,
    当i=10时
    .....
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    4#
    发表于 2006-11-29 19:14:12 | 只看该作者
    for (i=0;i<10;i++)  
      假如是这样的for循环,然后结合测试用例设计方法,等价类、边界值、因果图、错误推测方法设计用例,具体还是根据i的数据类型来分析,简单设计的用例如下,假如i为整型
    当i=0时,。。。
    当i=—6时,
    当i=5时,
    当i=9时,
    当i=10时


    为什么要考虑i=-6和i=5呢?这是用错误推测法?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5#
    发表于 2006-11-29 22:04:02 | 只看该作者
    原帖由 yangkinki 于 2006-11-29 17:48 发表
    那就用判断条件、语句覆盖编写测试用例
    for (i=0;i<10;i++)  
      假如是这样的for循环,然后结合测试用例设计方法,等价类、边界值、因果图、错误推测方法设计用例,具体还是根据i的数据类型来分析,简单设 ...


    假如是这样一个函数
    int Func(参数表)
    {
        ....

        for(i=0; i<10; i++)
        {
            ....
        }

        ....
    }

    请问如何设计测试用例,分别覆盖 i=0 / i=5 / i=9 / i=10 呢? 这种情形下必定进入循环,除非内部有跳出语句,否则i等于0到9必定会分别执行一次,什么测试用例都一样,不进入循环的情况是不会发生的,也就是说,不进入循环是一个不可覆盖分支。如果是这样:

    int Func(int N)
    {
        ....

        for(int i=0; i<N; i++)
        {
            ....
        }

        ....
    }

    那么就可以考虑设计测试用例,覆盖 N > 0 和 N <= 0,即进入循环和不进入循环两种情况,如果for内部没有分支,这样就够了,如果有分支,可能需要通过考虑覆盖内部分支来增加测试用例。

    [ 本帖最后由 VisualUnit 于 2006-11-30 09:23 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2006-11-30 10:45:38 | 只看该作者
    for (i=0;i<10;i++)  
      假如是这样的for循环,然后结合测试用例设计方法,等价类、边界值、因果图、错误推测方法设计用例,具体还是根据i的数据类型来分析,简单设计的用例如下,假如i为整型
    当i=0时,。。。
    当i=—6时,
    当i=5时,
    当i=9时,
    当i=10时


    为什么要考虑i=-6和i=5呢?这是用错误推测法?


    i=5及i=负数,都是等价类吧.
    i=5是循环内的等价类
    i=负数是循环外的等价类
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2006-11-30 11:55:25 | 只看该作者
    原帖由 qrz2000 于 2006-11-30 10:45 发表
    for (i=0;i<10;i++)  
      假如是这样的for循环,然后结合测试用例设计方法,等价类、边界值、因果图、错误推测方法设计用例,具体还是根据i的数据类型来分析,简单设计的用例如下,假如i为整型
    当i=0时,。 ...



    问题是,你怎么做得到呢? 例如:

    int Func(int i)
    {
        ...

        for(i=0; i<10; i++)
        {
            ....
        }

        ....
    }

    无论参数i的输入是什么,for循环都是一样的,输入-6或5或其他什么值,对于测试这个for循环有什么意义呢?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2006-11-30 12:31:53 | 只看该作者
    谢谢大家的讲解,请问,像
    for(int i=0; i<N; i++)
        {
            ....
        }
    这样的循环,在白盒测试时,是否应该分别考虑i<0; i=0; i=N-1; i=N四种情况分别选择测试用例?
    但等价类划分和边界值法都是黑盒测试时考虑的方法,在白盒时也这么考虑吗?
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    难过
    2015-4-23 14:35
  • 签到天数: 3 天

    连续签到: 1 天

    [LV.2]测试排长

    9#
    发表于 2006-11-30 15:30:58 | 只看该作者

    回复 #8 yamaya 的帖子

    如果楼主是想测试这个循环的内部操作,那么就只要考虑满足这个循环条件的用例,即o<=i<=9的整数时的操作,如果说要测试这个循环,当然得考虑循环之外的数据,如果不满足条件的数据也进行了这个循环呢,所以i=-6等无效数据也是必须要有的
    至于测试用例设计方法,黑盒和白盒都能用得上的
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
    发表于 2006-12-20 11:05:22 | 只看该作者

    回复 #7 VisualUnit 的帖子

    你是用VisualUint工具进行C++语言程序测试的吗?这个工具好用不好用呢,我初步学习使用,还没找到门路,只是看说明文档!
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2009-4-6 09:36:53 | 只看该作者
    原帖由 yangkinki 于 2006-11-30 15:30 发表
    如果楼主是想测试这个循环的内部操作,那么就只要考虑满足这个循环条件的用例,即o


    斑竹说的好。就是应该考虑这么多。
    另外,边界值和等价类划分,不论白盒黑盒都用得到的。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
    发表于 2009-9-6 21:03:32 | 只看该作者
    我觉得现在普遍用的都是灰盒,用黑盒的测试技术来设计白盒的测试用例
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    13#
    发表于 2009-9-6 22:08:03 | 只看该作者
    对于这样的循环:
    for(i=0; i<10; i++)  

    去测什么0,-6,5,9,10的循环条件,都挺扯淡的。这等于是在测试编译器是否按照C语言的语法规定编译代码了。不知道哪个编译器会犯这样的错误。

    就算是要看写这段代码的人是否写对了上下边界,也不是用0和10来能测得出的,这是需要理解上下文代码的。
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-11-15 12:39 , Processed in 0.095267 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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