一、基本概念
等价类是程序输入域的子集。
等价类别划分(Equivalance Partitioning )测试思路:将程序输入字段划分为几个区域(等价类别),为每个等价类别选择一个代表性元素生成测试用例。 该方法是一种常用的黑匣子测试用例(Blackbox Testing )设计方法。一)划分等价类
1 .有效等价类和无效等价类
等价类划分有两种不同情况:有效等价类和无效等价类。 3358www.Sina.com/是对程序规格说明合理有意义的输入数据的集合,可以是有效等价类。 3358www.Sina.com/是指对程序规格说明不合理或无意义的输入数据的集合,检验程序是否可以实现规格说明中所规定的功能需求; 根据具体情况,可能至少存在一个或多个无效的等价类。无效等价类软件不仅要接收合理的数据,还要经受意外的考验,因此这种测试可以确保软件的可靠性。
2 .划分等价类的标准
完善测试,避免冗馀。 这需要将集合(程序输入域)划分为互不相交的子集,这些子集的并集为集合整体(整个程序输入域)。
3 .等价类划分原则
(1)输入条件规定取值范围或取值个数时,可分为一个有效等价类和两个无效等价类;
Eg .设定权重设定范围为[-1000、1000]的断路器指标
)2)如果输入条件为布尔表达式,则可分为bzdwl假有效等价类和无效等价类;
Eg .设定产品信息。 其中产品份额是必须的
)3)输入数据应当遵循的原则规定时,可以分为一个有效等价类(遵循规则)和几个无效等价类。
Eg .系统的初始资金只能输入数字
)4)如果只要求输入数据符合一些原则,届时可能存在多个有效类和多个无效等价类;
Eg .交易用户的登录密码只能输入数字、字母和某些特殊符号,不能输入单引号和汉字
注意:与每个有效等价类相对应的无效等价类的并集是不符合输入原则的数据集合。
)5)规定输入数据的一组值(设为n个),在程序对不同的输入值进行不同的处理的情况下,按n个有效等价类)允许的每个输入值分为有效等价类)和无效等价类)所有不允许的输入值的集合)
Eg .设立资金账户时,必须选择是否检查自行成交
Eg .输入条件规定学历为:专科、本科、硕士、博士4种之一
)如果发现分类的等价类各要素为程序中的检验程序在不符合规则的数据输入下,是否会有异常,则应该将该等价类3358www.Sina.com/的分类定为更小的等价类。因此,设计测试用例时,要同时考虑这两种等价类。
)等价类划分后,编制等价类表,为每个等价类规定唯一编号;
)设计测试用例以尽可能多地覆盖尚未覆盖的有效等价类,并重复此步骤直到所有有效等价类均已覆盖
)3)设计新的测试用例,只覆盖一个尚未覆盖的无效等价类,重复此步骤,直到所有无效等价类都覆盖。 (之所以用单个测试用例覆盖无效的等价类,是因为特定输入错误会阻止或替换其他输入错误检查。)
http://www.Sina.com/http://www.Sina.com /
【问题描述】程序要求:输入三个整数a、b、c作为三角形的三边长度,由程序构成的判定三角形类型的三角形为一般三角形、等腰三角形或等边三角形时,分别按…处理。
分析问题
(1)输入值域明确/隐含要求) a整数、b三个、c正数、d两边之和不等于第三边、e三边,f两边相等但不等于第三边,g三边相等; (d ) g由输出值域的等价类隐式决定() ) ) ) ) ) )。
(2)输出值域的等价类) R1={不构成三角形},R2={一般三角形},R3={等腰三角形},R4={正三角形};
回答问题
(1)列出等值类表并编号
)2)设计覆盖有效等价类的测试用例
)3)覆盖无效等价类的测试用例处理方式不同
【问题说明】NextDate函数包含三个变量: month、day和year,函数的输出是输入日期的一天后的日期。 例如,如果输入为2006年3月7日,则函数的输出为2006年3月8日。 输入变量month、day、year都是整数值,必须满足1month12的条件
day31
1912year2050
问题分析这个函数的主要特征是输入变量之间的逻辑关系比
较复杂,具体体现在:输入域的复杂性;闰年规则。如,变量year和变量mouth取不同值时,对应的变量day会有不同的取值范围,或1~30或1~31或1~28或1~29。<问题解答>
(1)划分法一
(1.1)划分等价类
A. 有效等价类
M1={mouth:1≤mouth≤12}; D1={day:1≤day≤31};Y1={year:1912≤year≤2050}
B. 无效等价类
M2={mouth:mouth<1}、M2={mouth:mouth>12};
D2={day:day<1}、D3={day:day>31};
Y2={year:year<1912}、Y2={year:year>2050};
(1.2) 一般等价类测试
由于有效类的数量等于独立变量的个数,因此只有弱一般等价类测试用例出现,且与强一般等价类测试用例相同。
【注】“弱”是指含单缺陷假设(失效极少是由两个或两个以上的缺陷同时引起的),“强”是指含多缺陷假设(失效是由两个或两个以上的缺陷同时引起的);“一般”是指不考虑无效值。弱一般等价类测试用例通过使用一个测试用例中的每个有效等价类(区间)的代表值来实现(常以对称方式来标识这些测试用例,且注意单边假设作用);强一般等价类测试用例通过每个独立变量的有效等价类的笛卡尔积来实现。
(1.3) 健壮等价类测试
(1.3.1) 弱健壮等价类测试
弱健壮等价类测试中的无效测试用例只含一个无效值,其他都是有效值,即含有单缺陷假设。【注:“弱”是指含单缺陷假设,“强”是指含多缺陷假设;“健壮”是指考虑无效值】
(1.3.2) 强健壮等价类测试
强健壮等价类测试考虑了更多的无效值情况。强健壮等价类测试中的无效测试用例可以包含多个无效值,即含有多个缺陷假设。NextDate函数有三个变量,故相应地强健壮等价类测试用例可包含一个无效值、两个无效值或三个无效值。【注:“强”是指含多缺陷假设,“强”是指含多缺陷假设;“健壮”是指考虑无效值】
(2)划分法二
显然地,在用划分法一测试NextDate函数时,既没有考虑2月份的天数问题,又没有考虑闰年的问题。因此,应作进一步地改善。
(2.1)划分等价类
等价关系的要点是:等价类中的元素要被“同样处理”,即要么都在有效层次上进行,要么都在无效层次上进行。因此,更详细地有效等价类为:
√变量mouth:M1={mouth: mouth有30天}、M2={mouth: mouth有31天,除去12月}、M3={mouth: mouth是2月}、M4={mouth: mouth是12月};
√变量day:D1={day: 1≤day≤28}、D2={day: day=29}、D3={day: day=30}、D4={day: day=31};
√变量day:Y1={year: year是闰年}、Y2={year: year是平年};
(2.2) 一般等价类测试
A. 弱一般等价类测试
考虑到单边假设,机械地以对称方式来选择对应类的有效输入:
B. 强一般等价类测试
从弱等价类测试到强等价类测试,不管是一般类还是健壮类,都做要独立性假设,都要以等价类的笛卡尔积表示。
在本问题中,变量mouth等价类数量为4、变量day等价类数量为4、变量year等价类数量为2,故强一般等价类测试用例数量为4*4*2=32。
(2.3) 健壮等价类测试
A. 弱健壮等价类测试 B. 强健壮等价类测试 **三)佣金问题的等价测试用例**
待更新……