等价类
数学概念
在离散数学中,等价关系是指定义在集合A上的关系,满足自反的、对称的和传递的等性质。设R是定义在集合A上的等价关系,与A中一个元素a有关系的所有元素的集合叫做a的等价类。等价类应用十分广泛,如在编程语言中,我们使用等价类来判定标识符是不是表示同一个事物。
定义
在离散数学中,等价关系是指定义在集合A上的关系,满足自反的、对称的和传递的等性质。设R是定义在集合A上的等价关系,与A中一个元素a有关系的所有元素的集合叫做a的等价类。A的关于R的等价类记作 。当只考虑一个关系时,我们省去下标R并把这个等价类写作[a]。
在软件工程中,是把所有可能输入的数据,即程序的输入域划分成若干部分(子集),然后从每一个子集中选取少数具有代表性的数据作为测试用例,从而减少了数据输入量从而提高了效率,称之为等价类方法,该方法是一种重要的、常用的黑盒测试用例设计方法。
分类
离散数学中,等价类的划分基于以下定理:设R是定义在集合A上的等价关系。那么R的等价类构成S的划分。反过来,给定集合S的划分{ |i∈I},则存在一个等价关系R,它以集合 作为它的等价类。
因为等价关系的 a 在 a 中和任何两个等价类要么相等要么不交集不相交的性质。得出 X 的所有等价类的集合形成 X 的集合划分划分: 所有 X 的元素属于一且唯一的等价类。反过来,X 的所有划分也定义了在 X 上等价关系。
在软件工程中等价类划分及标准如下:
划分等价类
等价类是指某个输入域的子集合。在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其他值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。等价类划分有两种不同的情况:有效等价类和无效等价类。
1)有效等价类
是指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明所规定的功能和性能。
2)无效等价类
指对程序的规格说明是不合理的或无意义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。
设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验,这样的测试才能确保软件具有更高的可靠性。
3.划分等价类的标准
1) 完备测试、避免冗余
2) 划分等价类重要的是:集合的划分、划分为互不相交的一组子集,而子集的并是整个集合
3) 并是整个集合:备性
4) 子集互不相交:保证一种形式的无冗余性
5) 同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到“相同的执行路径”。
举例
* 如果 X 是轿车的集合,而 ~ 是“颜色相同”的等价关系,则一个特定等价类由所有绿色轿车组成。X / ~ 自然的被认同于所有轿车颜色的集合。
* 考虑在整数集合 Z 上的“模 2”等价关系: X~y 当且仅当 X-y 是偶数。这个关系精确的引发两个等价类: 0 由所有偶数组成,1 由所有奇数组成。在这个关系下 7 9 和 1 都表示 Z / ~ 的同一个元素。
* 有理数可以构造为整数的有序对 (a,b) 的等价类的集合,b 不能为零,这里的等价关系定义为
(a,b) ~ (c,d) 当且仅当 ad = bc。
:这里的有序对 (a,b) 的等价类可以被认同于有理数 a/b。
* 任何函数 f: X → Y 定义在 X 上的等价关系,通过 X1 ~ X2 当且仅当 f(X1) = f(X2)。X 的等价类是在 X 中被映射到 f(X) 的所有元素的集合,就是说,类 X 是f(X) 的像逆像。这个等价关系叫做 f的函数的核核。
* 给定群 G 和群子群 H,我们可以定义在 G 上的等价关系,通过 X ~ y 当且仅当 xy^ -1 ∈ H。这个等价类叫做 H 在 G 中的右陪集;其中之一是 H 自身。它们都有同样数目的元素(在无限集合无限 H 的情况下是势)。如果 H 是群正规子群,则所有陪集的集合自身是在自然方式下的一个群。
* 所有群都可以划分成叫做共轭类的等价类。
* 连续函数连续映射 f的同伦类是所有同伦于 f的所有映射的等价类。
* 在自然语言处理中,等价类是对一个个人、位置、事物或事件的所有提及的要么真实要么虚构的集合。例如,在句子 “GE 股东将投票公司杰出的 CEO Jack Welch 的继任者”。“GE”和“公司”是同义的,所以构成一个等价类。对“GE 股东”和“Jack Welch”有单独的等价类。
下面是一个软件工程的简单例子
三角形问题
1、某程序规定:“输入三个整数a、b、c分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形、等边三角形时,分别做计算。。。”用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。)
分析题目中给出和隐含的对输入条件的要求:
(1)整数
(2)三个数
(3)非零数
(4)整数
(5)两边之和大于第三边
(6)等腰
(7)等边
如果a、b、c满足条件(1)~(4),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为“非三角形”
2)如果三条边相等即满足条件(7),则程序输出为“等边三角形”
3)如果只有两条边相等,及满足条件(6),则程序输出为“等腰三角形”
4)如果三条边都不相等,则程序输出为“一般三角形”
列出等价类表并编号
覆盖有效等价类的测试用例:
a b c覆盖等价类号码
3 4 5 (1) (7)
4 4 5(1)(7) (8)
4 5 5 (1) (7) (9)
5 4 5 (1) (7) (10)
4 4 4 (1) (7) (11)
覆盖无效等价类的测试用例:
参考资料
最新修订时间:2024-04-03 15:25
目录
概述
定义
分类
参考资料