等价类划分的例子
- 格式:pdf
- 大小:53.06 KB
- 文档页数:2
离散数学等价类
离散数学是一门研究离散结构及其运算规律的数学学科,其中一个重要的概念是等价关系。
等价关系是一种对集合中元素进行分类的方法,将具有相同性质的元素划分到同一个等价类中。
在离散数学中,等价类是以等价关系划分出的子集。
对于一个给定的等价关系R,对于集合A中的元素a和b,如果a和b满足R关系,即aRb,那么a和b属于同一个等价类。
等价类的定义要满足三个性质:自反性、对称性和传递性。
举个例子来说明等价类的概念。
考虑一个集合A表示所有人的集合,定义一个等价关系R表示两个人的年龄相同。
那么对于A中的每个人,他们可以被划分到不同的等价类中,每个等价类中的人年龄相同。
例如,如果集合A中有三个人a、b和c,其中a和b的年龄相同,b和c的年龄相同,那么a、b和c分别属于两个等价类。
等价类在离散数学中有广泛的应用。
它们可以用于表示相似关系,例如在图像处理中用于图像的分割和识别。
此外,在数据库的设计和查询过程中,等价类的概念也扮演了重要的角色。
等价类的划分可以将数据集合划分成更小的、具有相似特性的子集,从而方便进行数据的管理和查询。
总之,离散数学中的等价类是根据等价关系将集合划分成具有相同性质的子集。
它们在不同领域中都有重要的应用,帮助我们理解和处理具有相似特性的元素。
软件测试中的边界值分析和等价类划分边界值分析和等价类划分是软件测试中常用的两种测试方法。
这两种方法可以帮助测试人员更有效地识别和设计测试用例,从而增加测试的覆盖率和准确性。
本文将介绍边界值分析和等价类划分的基本原则和应用场景,并结合具体案例说明其在软件测试中的重要性和实际应用。
边界值分析是一种测试用例设计技术,其基本原则是将输入和输出的数据范围分为不同的区域,并着重测试各个区域的边界条件。
在软件开发过程中,很多功能的正确性与否取决于输入的数据范围是否在设定的边界内。
因此,边界值分析是一种针对这种情况的有效测试方法。
举个例子来说,对于一个要求用户输入年龄的程序,我们可以将输入的年龄范围分为婴儿(0-1岁)、儿童(2-12岁)、青少年(13-18岁)、成年人(19-60岁)和老年人(61岁及以上)五个区域。
我们可以通过测试各个区域边界上的数值,如0岁、1岁、2岁、12岁、13岁、18岁、19岁、60岁、61岁等,来验证程序是否正确处理各个年龄段的输入。
等价类划分是一种将测试输入分为不同等价类的方法。
等价类划分的原则是将具有相同功能和行为的输入数据归为同一类,并设计测试用例来覆盖每个等价类。
这样做的好处是能够有效地减少测试用例数量,同时保证测试覆盖到了不同的情况。
以一个登录系统为例,假设要测试用户名和密码输入的功能。
我们可以将用户名的输入等价类划分为合法用户名和非法用户名两类,密码的输入等价类划分为合法密码和非法密码两类。
在设计测试用例时,我们只需要从每个等价类中选择一个典型的测试数据来进行测试,比如选择一个合法用户名和一个合法密码、一个非法用户名和一个合法密码等,就可以覆盖到各种情况。
边界值分析和等价类划分在实际软件测试中的应用非常广泛。
它们可以帮助测试人员更全面地测试软件的功能,减少遗漏测试点的风险,并提高测试效率。
特别是在系统具有复杂输入输出、有大量的输入数据范围的情况下,使用边界值分析和等价类划分可以事半功倍。
对概念的理解:
边界值分析法使用与等价类划分法相同的划分,只是通常的边界值分析假定错
误更多地存在于划分的边界上,因此下面用一个例子说明这两种黑盒测试方法,以
更好地理解。
因果图法比前两种方法具有的优势:
等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件
的各种组合、输入条件之间的相互制约关系。
这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。
而因果图法考虑到了这一点。
例子:
某部队征兵,要求报名者年龄在18周岁到25周岁之间(到2011年10月为止),即出生年月不在上述日期内,则拒绝。
已知出生年月由6位数字字符表示,前4
位代表年,后2位代表月。
一. 等价类划分法:
Ⅰ.等价类表如下:
Ⅱ.有效等价类的测试用例:
Ⅲ.无效等价类的测试用例:
二. 边界值分析法:
三. 因果图法
海南师范大学毕业生证书发放原则如下:
(1)师范类:学分修满,发毕业证,学位证和教师资格证;学分未修满,只发教师资格证。
(2)非师范类:学分修满,发毕业证,学位证;学分未修满,什么都不发。
Ⅰ.根据题意,原因和结果如下:
原因:1----师范类
2----非师范类
3-----学分修满
4-----学分未修满
结果:B---发毕业证,学位证和教师资格证 A----只发教师资格证
C----发毕业证, 学位证
D----什么都不发
Ⅱ.其对应的因果图如下:
Ⅲ. 根据因果图建立判定表:。
1.等价类划分法等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。
等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。
使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。
2.划分等价类:等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
等价类划分可有两种不同的情况:有效等价类和无效等价类。
等价类的划分有两种不同的情况:①有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。
利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
②无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。
对于具体的问题,无效等价类至少应有一个,也可能有多个。
在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。
3.划分等价类的标准:1)完备测试、避免冗余;2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;3)并是整个集合:完备性;4)子集互不相交:保证一种形式的无冗余性;5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径".4.划分等价类的原则。
(1) 如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。
例如,在程序的规格说明中,对输入条件有一句话:“…… 项数可以从1到999 ……”则有效等价类是“1≤项数≤999”两个无效等价类是“项数<1”或“项数>999”。
1.等价类划分法等价类划分是一种典型的黑盒测试方法,使用这一方法时,完全不考虑程序的内部结构,只依据程序的规格说明来设计测试用例。
等价类划分方法把所有可能的输入数据,即程序的输入域划分成若干部分,然后从每一部分中选取少数有代表性的数据做为测试用例。
使用这一方法设计测试用例要经历划分等价类(列出等价类表)和选取测试用例两步。
2.划分等价类:等价类是指某个输入域的子集合。
在该子集合中,各个输入数据对于揭露程序中的错误都是等效的,并合理地假定:测试某等价类的代表值就等于对这一类其它值的测试,因此,可以把全部输入数据合理划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件就可以用少量代表性的测试数据取得较好的测试结果。
等价类划分可有两种不同的情况:有效等价类和无效等价类。
等价类的划分有两种不同的情况:①有效等价类:是指对于程序的规格说明来说,是合理的,有意义的输入数据构成的集合。
利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能。
②无效等价类:是指对于程序的规格说明来说,是不合理的,无意义的输入数据构成的集合。
对于具体的问题,无效等价类至少应有一个,也可能有多个。
在设计测试用例时,要同时考虑有效等价类和无效等价类的设计。
3.划分等价类的标准:1)完备测试、避免冗余;2)划分等价类重要的是:集合的划分,划分为互不相交的一组子集,而子集的并是整个集合;3)并是整个集合:完备性;4)子集互不相交:保证一种形式的无冗余性;5)同一类中标识(选择)一个测试用例,同一等价类中,往往处理相同,相同处理映射到"相同的执行路径".4.划分等价类的原则。
(1) 如果输入条件规定了取值范围,或值的个数,则可以确立一个有效等价类和两个无效等价类。
例如,在程序的规格说明中,对输入条件有一句话:“…… 项数可以从1到999 ……”则有效等价类是“1≤项数≤999”两个无效等价类是“项数<1”或“项数>999”。
等价类划分的概念
等价类划分是软件测试中常用的一种测试方法。
它是一种黑盒测试方法,通过将输入数据分成不同的等价类,从而减少测试用例的数量。
等价类划分的目的是找出一组最小的测试用例,以覆盖所有的等价类。
等价类划分的基本思想是将输入数据分成若干个等价类,每个等价类都有相同的测试结果。
例如,对于一个要求输入年龄的程序,可以将输入数据分成三个等价类:小于0岁、0岁到
150岁之间、大于150岁。
这样,只需要针对每个等价类设计
一个测试用例,就可以覆盖所有可能的输入数据。
等价类划分的优点是可以大大减少测试用例的数量,从而节省测试时间和成本。
同时,它还可以帮助测试人员更全面地覆盖程序的功能,发现更多的缺陷。
在进行等价类划分时,需要注意以下几点:
1. 等价类应该是互斥的。
即每个输入数据只能属于一个等价类。
2. 等价类应该是完备的。
即所有可能的输入数据都应该被分到某个等价类中。
3. 等价类应该是有意义的。
即每个等价类应该有一定的实际意义和测试意义。
4. 对于边界值情况需要特别关注。
例如,在上述年龄输入程序中,0岁和150岁就是边界值,需要特别测试。
除了基本的等价类划分方法外,还有一些扩展的方法,如边界值分析和因果图法等。
边界值分析是在等价类划分基础上,针对边界值进行测试。
因果图法则是通过建立因果关系图来进行测试设计。
总之,等价类划分是一种简单有效的测试方法,可以帮助测试人员更全面地覆盖程序功能,发现更多的缺陷。
在实际测试中,可以根据具体情况选择合适的测试方法和技巧,以提高测试效率和质量。
假设有一个把数字串转变成整数的函数。
运行程序的计算机字长16位,用二进制补码表示整数。
这个函数是用PASCAL语言编写的,它的说明如下:
function strtoint(dstr:shortstr):integer;
函数的参数类型是shortstr,它的说明是;
type shortstr=array[1..6]of char;
被处理的数字串是右对齐的,也就是说,如果数字串比六个字符短,则在它的左边补空格。
如果数字串是负的,则负号和最高位数字紧相邻(负号在最高位数字左边一位)。
考虑到PASCAL编译程序固有的检错功能,测试时不需要使用长度不等于6的数组做实在参数,更不需要使用任何非字符数组类型的实在参数。
分析这个程序的规格说明,可以划分出如下等价类:
有效输入的等价类有
⑴1~6个数字字符组成的数字串(最高位数字不是零);
⑵最高位数字是零的数字串;
⑶最高位数字左邻是负号的数字串;
无效输入的等价类有
⑷空字符串(全是空格);
⑸左部填充的字符既不是零也不是空格;
⑹最高位数字右面由数字和空格混合组成;
⑺最高位数字右面由数字和其他字符混合组成;
⑻负号与最高位数字之间有空格;
合法输出的等价类有
⑼在计算机能表示的最小负整数和零之间的负整数;
⑽零;
⑾在零和计算机能表示的最大正整数之间的正整数;
非法输出的等价类有
⑿比计算机能表示的最小负整数还小的负整数;
⒀比计算机能表示的最大正整数还大的正整数。
因为所用的计算机字长16位,用二进制补码表示整数,所以能表示的最小负整数是-32768,能表示的最大正整数是32767。
根据上面划分出的等价类,可以设计出下述测试方案(注意,每个测试方案由三部分内容组成):
⑴l~6个数字组成的数字串,输出是合法的正整数。
输入:‘1’
预期的输出:1
⑵最高位数字是零的数字串,输出是合法的正整数。
输入:‘000001’
预期的输出:1
⑶负号与最高位数字紧相邻,输出合法的负整数
输入:‘-00001’
预期的输出:-1
⑷最高位数字是零,输出也是零。
输入:‘000000’
预期的输出:0
⑸太小的负整数。
输入:‘-47561’
预期的输出:“错误——无效输入”
⑹太大的正整数。
输入:‘132767’
预期的输出:“错误—无效输入”
⑺空字符串。
输入:‘’
预期的输出:“错误——没有数字”
⑻字符串左部字符既不是零也不是空格
输入:‘×××××1'
预期的输出:“错误——填充错”
⑼最高位数字后面有空格。
输入:‘12’
预期的输出:“错误——无效输入”
⑽最高位数字后面有其他字符。
输入:‘1××2’
预期的输出:“错误——无效输入’
⑾负号和最高位数字之间有空格
输入:‘-12’
预期的输出:“错误——负号位置错”
例如,为了测试前述的把数字串转变成整数的程序,除了上一小节已经用等价划分法设计出的测试方案外,还应该用边界值分析法再补充下述测试方案:
⑿使输出刚好等于最小的负整数。
输入:‘-32768’
预期的输出为:-32768
⒀使输出刚好等于最大的正整数。
输入:‘32767’
预期的输出:32767
原来用等价划分法设计出来的测试方案⑸最好改为:
⒁使输出刚刚小于最小的负整数。
输入:‘-32769’
预期的输出:“错误——无效输入
原来的测试方案⑹最好改为:
⒂使输出刚刚大于最大的正整数。
输入:‘32768’
预期的输出:“错误——无效输入”。