51Testing软件测试论坛

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

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 3333|回复: 11
打印 上一主题 下一主题

[原创] 5个无关联的参数,需要进行排列组合吗?

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2010-6-1 14:58:17 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
测试时,需要输入5个参数,输出一个结果,但是这5个参数间没有什么特殊联系,请问下大家,需要用排列组合的方式去写测试用例吗?还是只要把每个单独的都测到就可以?如果只需单独测,那么几个参数同时出错的情况如何考虑?先谢谢各位了!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2010-6-1 15:31:58 | 只看该作者
没有关联的话就没有必要
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2010-6-1 16:37:56 | 只看该作者
既然无关联,就是独立事件,不用排列组合,不用考虑同时出错。

但是有一个问题,你怎么知道是不是有关联的,如果你不能看到源代码的话,是无法确定的。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
 楼主| 发表于 2010-6-1 16:41:26 | 只看该作者
原帖由 zhangting85 于 2010-6-1 16:37 发表
既然无关联,就是独立事件,不用排列组合,不用考虑同时出错。

但是有一个问题,你怎么知道是不是有关联的,如果你不能看到源代码的话,是无法确定的。

你的意思是,如果不确定是不是真的无关联的话,还是要考虑排列组合?
回复 支持 反对

使用道具 举报

  • TA的每日心情
    奋斗
    2022-5-8 19:23
  • 签到天数: 137 天

    连续签到: 1 天

    [LV.7]测试师长

    5#
    发表于 2010-6-1 22:15:17 | 只看该作者
    需要考虑排列组合的,毕竟你是墨盒测试,不清楚内部实现
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    6#
    发表于 2010-6-2 08:40:14 | 只看该作者

    回复 4# 的帖子

    我的意思是如果确定是真的无关联,就不用考虑排列组合。如果不确定,那么要不要排列组合仍然要根据具体的项目情况来确定,因为你知道的,测试是不可能的穷尽的,而需要测到什么程度,必须在知道项目的具体情况之后才能判断。

    [ 本帖最后由 zhangting85 于 2010-6-2 08:42 编辑 ]
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    7#
    发表于 2010-6-2 09:50:51 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    8#
     楼主| 发表于 2010-6-21 09:02:06 | 只看该作者
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    9#
    发表于 2010-6-21 09:26:56 | 只看该作者
    >“但是这5个参数间没有什么特殊联系”
    >“没有关联的话就没有必要”
    什么是特殊联系?什么是关联?有没有明确的定义?

    以下函数有两个参数a和b,请问它们有没有“联系”?

    void foo(int a, int b) {
      return 1/(a-b);
    }

    void bar(int a, int b){
      int c = 0;   
      if (a > 0) {
        c += 1;
      }
      if (b > 0) {
        c -= 1;
      }
      return 1/c;
    }

    在函数foo中,a和b共同影响到输出(数据流影响);在函数bar中,a和b影响到控制流,间接影响到输出。在特定取值组合下,这两个函数都会出现除零的错误。组合测试可能有助于发现这两个函数的问题。

    1. 在楼主的例子中,5个参数“共同影响输出”。在不了解源代码的情况下,难以判断它们对数据流和控制流产生了什么样的影响(对于大规模代码,即便有源代码,可能也不容易分析清楚)。使用组合测试,可能是有帮助的。

    2. 在我看来,“参数之间没有关联”是一种模糊的表达。更直接的表达应该是:单因素错误,2因素错误,3因素错误……在测试时间有限的情况下,只能运行有限的测试用例。这时,要问自己:发生单因素错误的可能性有多大?两个因素共同作用导致错误的可能性如何?

    3.在特定的领域有特定的错误模型。例如PC机,单个硬件发生故障的概率比较大(例如内存错误、显卡风扇停转导致过热),两个硬件共同导致的问题较少(例如主板和内存的兼容性差导致蓝屏),三个硬件共同导致的问题更少。在你的应用领域,错误模型是怎样的?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    10#
     楼主| 发表于 2010-6-21 10:25:49 | 只看该作者

    回复 9# 的帖子

    Thank you!你的解释很清楚,事实上,正如你所说,单因素出现的错误概率比较大,2因素错误就相对少些,3因素的更少,这样是不是就要考虑所有可能出现错误的情况?
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    11#
    发表于 2010-6-22 09:45:37 | 只看该作者
    > 这样是不是就要考虑所有可能出现错误的情况?
    考虑所有的出错情况,就要覆盖全部的因素。通常没有那么多时间来进行“全覆盖”。

    依照目前的测试实践,有人建议先进行2因素覆盖,如果还有剩余时间,再进行3因素、4因素覆盖。根据一些学者的研究,6因素覆盖可以覆盖绝大多数错误。不过,对于民用软件,很少有资源做如此规模的测试。

    对于民用软件,2因素覆盖是很好的起点,它折中了漏测的风险和测试的投入。在测试过程中,如果发现某几个参数很重要,可以考虑针对它们进行3因素或多因素覆盖。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    12#
     楼主| 发表于 2010-6-22 10:00:10 | 只看该作者

    回复 11# 的帖子

    谢谢!
    回复 支持 反对

    使用道具 举报

    本版积分规则

    关闭

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

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

    GMT+8, 2024-5-24 13:59 , Processed in 0.074666 second(s), 27 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

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