51Testing软件测试论坛

标题: 5个无关联的参数,需要进行排列组合吗? [打印本页]

作者: xiaoxue1506    时间: 2010-6-1 14:58
标题: 5个无关联的参数,需要进行排列组合吗?
测试时,需要输入5个参数,输出一个结果,但是这5个参数间没有什么特殊联系,请问下大家,需要用排列组合的方式去写测试用例吗?还是只要把每个单独的都测到就可以?如果只需单独测,那么几个参数同时出错的情况如何考虑?先谢谢各位了!
作者: chengning    时间: 2010-6-1 15:31
没有关联的话就没有必要
作者: zhangting85    时间: 2010-6-1 16:37
既然无关联,就是独立事件,不用排列组合,不用考虑同时出错。

但是有一个问题,你怎么知道是不是有关联的,如果你不能看到源代码的话,是无法确定的。
作者: xiaoxue1506    时间: 2010-6-1 16:41
原帖由 zhangting85 于 2010-6-1 16:37 发表
既然无关联,就是独立事件,不用排列组合,不用考虑同时出错。

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

你的意思是,如果不确定是不是真的无关联的话,还是要考虑排列组合?
作者: msnshow    时间: 2010-6-1 22:15
需要考虑排列组合的,毕竟你是墨盒测试,不清楚内部实现
作者: zhangting85    时间: 2010-6-2 08:40
标题: 回复 4# 的帖子
我的意思是如果确定是真的无关联,就不用考虑排列组合。如果不确定,那么要不要排列组合仍然要根据具体的项目情况来确定,因为你知道的,测试是不可能的穷尽的,而需要测到什么程度,必须在知道项目的具体情况之后才能判断。

[ 本帖最后由 zhangting85 于 2010-6-2 08:42 编辑 ]
作者: liuhuihui    时间: 2010-6-2 09:50

作者: xiaoxue1506    时间: 2010-6-21 09:02

作者: liangshi    时间: 2010-6-21 09:26
>“但是这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机,单个硬件发生故障的概率比较大(例如内存错误、显卡风扇停转导致过热),两个硬件共同导致的问题较少(例如主板和内存的兼容性差导致蓝屏),三个硬件共同导致的问题更少。在你的应用领域,错误模型是怎样的?
作者: xiaoxue1506    时间: 2010-6-21 10:25
标题: 回复 9# 的帖子
Thank you!你的解释很清楚,事实上,正如你所说,单因素出现的错误概率比较大,2因素错误就相对少些,3因素的更少,这样是不是就要考虑所有可能出现错误的情况?
作者: liangshi    时间: 2010-6-22 09:45
> 这样是不是就要考虑所有可能出现错误的情况?
考虑所有的出错情况,就要覆盖全部的因素。通常没有那么多时间来进行“全覆盖”。

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

对于民用软件,2因素覆盖是很好的起点,它折中了漏测的风险和测试的投入。在测试过程中,如果发现某几个参数很重要,可以考虑针对它们进行3因素或多因素覆盖。
作者: xiaoxue1506    时间: 2010-6-22 10:00
标题: 回复 11# 的帖子
谢谢!




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2