等价类分法 新解

发表于:2011-5-25 11:16

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:周伟明    来源:51Testing软件测试网采编

  3)理想等价类

  这种等价类是严格按照等价类的定义来划分的,即划分的各个等价类中,每个等价类都满足每个可测数据对揭示所有可能的缺陷都是等价的,并且划分的各个等价类中各自任意取一个可测数据做为测试数据可以将全部的缺陷都揭示出来。

  理想等价类在实际情况中是很罕见的,除非只有很少的一两种可能的出错情况,否则很难划分成对揭示所有可能缺陷都等价的子集。所以在实际使用时,没有必要去寻找理想等价类,否则徒然浪费时间,一般采用强等价类或弱等价类进行测试就足够了。

  3、等价类的判定方法

  当将一个输入域进行等价类划分后,划分出来的子集是否是等价的基本上靠经验判断,这给使用等价类分法带来很大的难度,凭经验划分出来的等价类也许并不是真的等价类,如何才能确定划分的类是等价类呢?

  按照前面讲过的弱等价类与强等价类的定义,要知道划分的子集是否等价类先要知道又那些种类的可能缺陷,然后将划分的等价类对照可能的缺陷进行验证看是否能揭示出那些可能发生的缺陷。

  这种判定方法的缺点是必须先知道会发生那些可能的缺陷,实际情况中往往并不知道所有可能的缺陷,那么在实际情况中如何采取一些简单方法来判定一个子集是否是等价类呢?

  当一个子集的处理过程与输出完全一致时,基本上可以认为是等价类,处理过程是否相同很容易从需求和设计中得出。但是现实情况中往往同一个等价类中的不同数据对应的输出结果并不相同,所以这种方法并不能对所有的情况都适用。

  其实没有什么特别好的办法可以用来判断一个子集中的任一数据对揭露程序中的缺陷都是等价的,除非将所有数据测试一遍。但是有一些条件可以协助判断出某个子集不是等价类。

  1)路径判定法

  最容易判定一个子集是否是等价类的方法就是路径判定法,路径判定法的基本思想是:对于子集中的任一数据,如果执行路径并不完全相同,那么这个子集不是等价类。

  需要注意的是,路径判定法的反命题并不成立,即不能由执行路径相同就推断出子集中的数据是等价类。因为执行路径相同情况下得到的结果不一定相同,举例如下:

int mul(int a)
{
       return (a*10000);
}

  在mul()函数中,不论a输入多少,执行路径都只有一条,但是当a超过一定大小时,会出现整数乘法溢出,显然不能将a的任意取值都作为等价类。

  路径相同之所以不能认为是等价类的根本原因在于程序设计中本身可能存在缺陷和遗漏,设计或编码后的程序中的路径本身就可能不正确,测试用例设计时不能假定程序中的路径一定是正确的。

  2)概率判定法

  概率判定法是通过计算等价子集中的数据揭示某个缺陷的概率来进行判断的方法。如果在一个等价子集中,所有数据的揭示缺陷的概率不相同并有一定差距,那么可以认为不是等价类。

  这个判定法的使用并不是说事先需要知道所有可能发生的缺陷,它只需要找到一个缺陷来证明在这种缺陷情况下,子集中的数据在揭示这个缺陷方面的概率是不相同的,那么就可以认为在这种缺陷条件下不是等价类,至少可以认为不是强等价类。

  比如前面讲的x>10的划分,{0~10}这个集合中,在写成x>=10的情况下,10和子集中其他数据揭示缺陷的概率是不同的,0~9都不能发现缺陷,测试会通过,也就是说揭示出这个缺陷的概率为0,而10则能揭示出这个缺陷,所以它们不能划分到同一个等价类里面。

22/2<12
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • vacabiary
    2011-7-10 07:53:36

    你这个是边界值法加等价类划分。  强弱等价类是基于多输入因子的,简单来说就是函数的输入有两个变量。一个变量的在实际应用中没有太大的意义哦。

  • ldj_0514
    2011-5-26 10:33:27

    不错,学习了。看似简单的一段程序,真要测试起来,还是要考虑蛮多东西的。 测试人员需要了解和使用的知识不亚于开发人员。

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号