黑盒测试简介以及方法简介

引言:

黑盒测试是从软件的外部对软件实施测试,也常形容为闭着眼睛测试。在接下来的学习中将介绍几种常用的黑盒测试方法,其中包括等价类划分、边界值分析、决策表测试等。


1. 等价类划分测试


等价类划分是一种典型的黑盒测试方法,该方法完全不考虑程序的内部结构,只根据对软件的要求和说明,即需求规格说明,把程序输入域划分成若干个部分,然后从每个部分中选取少数有代表性的数据作为测试输入。使用等价类划分方法设计测试用例,必须在分析需求规格说明的基础上划分等价类。

等价类划分把程序的输入域划分成若干个互不相交的子集,称之为 等价类
所谓等价类是指输入域的某个子集合,所有等价类的并便是整个输入域,这对于测试有两个非常重要的意义:完备性和无冗余性。
由于等价类由等价关系决定,因此等价类中的元素有一些共同的特点:如果用等价类中的一个元素作为测试数据进行测试不能发现软件中的故障,那么使用等价类中的其他元素进行测试也不可能发现故障。

如果测试数据全都从同一个等价类选取,除去其中一个测试数据对发现软件故障有意义外,使用其他的测试数据进行测试都是徒劳,它们对测试工作的进展没有意义,不如把测试时间花在其他等价类元素的测试中。

例如:三角形问题中,如果选择三元组(2,2,2)作为测试输入,可以判定这是一个等边三角形。若再以三元组(100,100,100)或(5,5,5)作为测试输入,与测试用例(2,2,2)一样的方式进行,它们具有等价的测试效果。因此,这些测试用例是冗余的。使用等价类划分测试的目的是既希望进行完备的测试,同时又希望避免冗。

传统的等价类划分测试的实现分两步进行,一是确定等价类,二是确定测试用例。

1.1     划分等价类

   软件不能只接收有效地,合理的数据,还应经受意外的考验,即接受无效的或不合理的数据,这样获得的软件才能具有较高的可靠性。因此,在考虑等价类时,应注意区别两种不同的情况。
(1)有效等价类
       有效等价类是指对软件规格说明而言,是有意义的,合理的输入数据所构成的集合。
利用有效等价类,可以检验程序是否实现了规格说明预先的功能和性能。在具体问题中,有效等价类可以是一个,也可以是多个。
(2)无效等价类
无效等价类是指对软件规格说明而言,是不合理或无意义的输入数据所构成的集合。
  利用无效等价类,可以检查软件功能和性能的实现是否有不符合规格说明要求的地方。对于具体的问题,无效等价类至少应有一个,也可能有多个。
以下给出几条确定等价类的原则:
(1)按区间划分
  如果规格说明规定了输入条件的取值范围或值的数量,则可以确定一个有效等价类和两个无效等价类。例如:如果软件规格说明要求输入的是1-12月中的一个月,则1-12定义了一个有效等价类和两个无效等价类(月<1和月>12)。
 (2)按数值划分
如果规格说明规定了输入数据的一组值,而且软件要对每个输入值分别进行处理。则可为每个输入值确立一个有效等价类,此外针对这组确立一个无效等价类,它是所有不允许的输入值的集合。
(3)按数值集合划分
如果规格说明规定了输入值的集合,则可确定一个有效等价类和一个无效等价类。例如:某软件涉及标识符,要求“标识符应以字母开头”,则“以字母开头者”作为一个有效等价类,“以非字母开头”为一个无效等价类。
(4)按限制条件或规则划分
如果规格说明规定了输入数据必须遵守的规则或限制条件,则可以确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。
(5)细分等价类
等价类中的各个元素在程序中的处理各不相同,则可将等价类进一步划分成更小的等价类。


1.2   设计测试

在设计测试用例时,应同时考虑有效等价类和无效等价类侧似乎用例的设计。希望用最少的测试用例,覆盖所有的有效等价类。但对每个无效等价类,设计一个测试用例来覆盖它即可。
根据已列出的等价类,按以下步骤确定测试用例:
(1)为每个等价类规定一个唯一的编号。
(2)设计一个新的测试用例,尽可能多的覆盖尚未被覆盖的有效等价类,重复这一步,知道测试用例覆盖了所有的有效等价类。
(3)设计一个新的测试用例,使其覆盖并只覆盖一个还没有被覆盖的无效等价类。重复一步,直至测试用例覆盖了所有的无效等价类。
注:通常程序发现一类错误后就不再检查是否还有其他错误,因此,应该使每个测试方案只覆盖一个无效的等价类。

常见的等价类划分测试形式:

针对是否对无效数据进行检测,可以将等价类测试分为标准等价类测试和健壮等价类测试。
大多数有关软件测试的教材都讨论了健壮等价类测试的问题,这种形式的测试关注无效数据值,体现了20世纪60-70年代的主流程序设计风格。随着现代程序设计语言的出现,特别像那些具有强数据类型语言,图形用户界面语言的出现,使得输入数据的检验不再那么重要。

为了便于理解,这里以一个有两个输入变量x1和x2的程序F为例,说明标准等价类测试和健壮等价类测试。
假设,输入变量x1和x2在下列范围内取值。
a<=x1<=d,区间[a,b](b,c)[c,d]
e<=x2<=g,区间[e,f][f,g]
因此,变量x1和x2的无效等价类为x1d,x2g

1、标准等价类测试
不考虑无效数据值,测试用例使用每个等价类中的一个值。

2、健壮等价类测试
(1)对有效输入来说,测试用例从每个有效等价类中取一个值。
(2)对无效输入来说,一个测试用例有一个无效值,其他值都取有效值。
注:健壮等价类测试也有两个问题:一是规格说明往往没有定义无效测试用例的期望输出应该是什么样的,因此测试人员需要花费大量的时间来定义这些测试用例的期望输出;二是强类型语言没有必要考虑无效输入。


等价类划分测试举例:

1、三角形问题的等价类测试用例
(1)传统等价类划分测试用例设计
使用等价类划分方法必须仔细分析程序规范说明。在三角形问题中,输入条件为:
整数,3个数,取值在1-100之间
(2)标准和健壮等价类划分测试用例设计
在大多数情况下,从输入域划分等价类,但不是不能被测程序的输出与定义等价类,实际上,对于三角形问题是最简单的方法。

三角形问题有4种可能输出:等边三角形,等腰三角形,一般三角形和非三角形。可确定下列输出等价类。
R1={:边为a,b,c的等边三角形}
R2={:边为a,b,c的等腰三角形}
R3={:边为a,b,c的一般三角形}
R4={:边为a,b,c的不能形成三角形}

2、nextdate函数的等价类测试用例设计
Nextdate是一个含有三个变量的函数,则可定义为:
M1={month:1<=month<=12}
D1={day:1<=day<=31}
Y1={year:1912<=year<=2050}
相应的无效等价类是:
M2 ={month:month<1}
M3={month:month >12}
D2={day:day<1}
D3 ={day:day>31}
Y2 ={year:year<1912}
Y3 ={year:year>2050}
如果更仔细地选择等价关系,得到的等价类可能会更有用。

3、雇佣金问题的等价类测试用例设计
有效等价类:
L1={枪机:1<=枪机<=70}
L2 ={枪机:枪机=-1}
S1 ={枪托:1<=枪托<=80}
B1 ={枪管:1<=枪管<=90}
无效等价类:
L3={枪机:枪机=0或枪机<-1}
L4 ={枪机:枪机>70}
S2 ={枪托:枪托< 1}
S3 ={枪托:枪托>80}
B2 ={枪管:枪管<1}
B3={枪管:枪管>90}

无论是标准等价类还是健壮等价类测试用例,都知道一个是有效的等价类测试用例,很难判断雇佣金问题的计算部分有没有问题,因此,输入域等价类划分不能产生令人满意的测试用例集合。对雇佣金问题的输出值域定义等价类也许可以改进测试用例集合。
销售额=45*枪机+30*枪托+25*枪管
可以在佣金值域上定义3个等价类:
S1={<枪机,枪托,枪管>:销售额<=1000}
S2 ={<枪机,枪托,枪管>: 1000 <销售额<=1800} 
S3={<枪机,枪托,枪管>:销售额>1800}


2.边界值分析


人们从长期的测试工作经验得知,大量的故障往往发生在输入定义域或输出值域的边界上,而不是在内部。说明边界值分析、测试的最佳方式是,如果在悬崖峭壁边上可以自如行走那么在平地上行走就更没有问题了。
但是,在软件设计和程序编写中,常常对规格说明中的输入域边界或输出域边界重视不够,以至于形成一些差错。
实践表明,在设计测试用例时,对边界附近的处理必须给予足够的重视。为检验边界附近的处理设计专门的测试用例,常常可以取得良好的测试效果。

使用边界值分析方法设计测试用例,首先应确定边界情况。输入等价类与输出等价类的边界,就是着重测试的边界情况。
边界值分析方法的基本思想是:选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中典型值或任意值作为测试数据。
边界值分析方法是一种最有效的黑盒测试方法,但当边界情况和复杂的时候,要找出适当的边界测试用例还需针对问题的输入域、输出域边界,耐心仔细的逐个进行考虑。

2.1   边界条件

边界条件是一些特殊的情况。程序在处理大量中间数值时都正确,但在边界处可能出现问题。
比如,在作三角形判断时,要输入三角形的3条边长a、b和c。我们知道,当满足a
实际上,边界条件就是软件操作界限所在的边缘条件。一些可能与边界有关的数据类型有:数值,速度,字符,地址,位置,尺寸,数量等。同时,考虑这些数据类型的下述特征:
    第一个/最后一个、最小值/最大值、开始/完成、超过/在内、空/满、最短/最长、最快/最慢、最早/最迟、最高/最低、相邻/最远等。


2.2  次边界条件

有些边界在软件内部,用户几乎是看不到,但软件测试仍有必要对这些边界条件进行检查,这样的边界条件称为次边界条件或内部边界条件。2的幂次方和ASCII码就是这种例子。
寻求次边界条件比较困难,虽然不要求软件测试人员成为程序员或者具有阅读源代码的能力,但要求软件测试员能大体了解软件的工作方式。

一、2的幂次方

     计算机中的数是用二进制数“0”和“1”来表示的,8位二进制数组成一个字节,4个字节组成一个字。对于一些常用的2的幂次方对应十进制数的表示范围或值,是作为边界条件的重要数据。但它们通常在软件内部使用,外部是看不见的除非用户提出这些范围,否则在软件需求规格说明中不会明确指出。
       进行软件测试时,要考虑是否需要对这些边界条件进行测试。

     例如,假如某种通信协议支持256条命令,为了提高数据传输效率,通信软件总是将常用的信息压缩到一个很小的单元中,必要时再扩展为大一些的单元。比如,将常用的15条命令压缩为一个半字节数据,在遇到第16-256之间的命令时,软件转而发送一个一字节的命令。用户只知道可以执行256条命令,并不知道软件根据半字节/字节边界执行了不同的计算和操作。为了覆盖所有可能的2的幂次方边界,还要考虑临近半字节边界的14、15和16,以及临近字节边界254、255和256。


二、ASCII表

   数字0-9的ASCII值是48-57。斜杠字符(/)在数字0前面,而冒号字符(:)在数字9后面。大写字母A-Z对应的ASCII码值是65-90。小写字母对应的ASCII码值是97-122.这些情况都表示次边界条件。
   如果对文本输入或文本转换软件进行测试,在考虑数据区间包含哪些值时,最好参考一下ASCII表。例如,如果测试的文本框只接受用户输入字符A-Z和a-z,就应该在非法区间中,检测ASCII表中位于这些字符前后的值——@、[、‘和{。


2.3  边界值分析测试

实际上,边界值测试更适于采用非强类型语言编写的程序。边界值分析测试的基本原理是故障往往出现在输入变量的边界值附近。例如,当循环条件本应判断“<=”时,却错写成了“<”;计数器少记一次等。美国陆军对其软件进行了研究,发现有相当一部分的故障是由边界值引起的。
边界值分析基于一种在可靠性理论中称为“单故障”的假设,即由两个或两个以上的故障同时出现而导致软件失效的情况很少,也就是说,软件失效是由单故障引起的。边界值分析利用输入变量的最小值min,稍大于最小值min+、域内任意值nom、稍小于最大值max-和最大值max来设计测试用例,即通过使所有变量取正常值,只使一个变量分别取最小值,稍大于最小值、域内任意值、稍小于最大值和最大值。
不管采用什么语言,变量的min、min+、nom、max-和max值根据语境可以清楚地确定。例如雇佣金问题中的变量,其min、min+、nom、max-和max值很容易确定。如果没有显示地给出边界,例如三角形问题,可以人为地设定一个边界。显然,边的下界是1,但如何确定上界呢?在默认情况下,可以取最大可表示的整型值,或者规定一个数作为上界,如100或1000。


2.4   健壮性测试


   健壮性测试是边界分析测试的一种扩展,变量除了取min、min+、nom、max-和max5个边界值外,还要考虑采用一个略超过最大值max+以及略小于最小值min-的取值,看看超过极限值时系统会出现什么情况。
边界值分析的大部分讨论都可直接用于健壮性测试。 健壮性测试最有意义的部分不是输入,而是预期的输出。

边界值分析举例:

前面3个例子的每一个都是一个含有3个输入变量的函数。给出每个例子的所有边界值分析测试用例非常浪费空间,所以,下面只列出一部分测试用例。
1、三角形问题的边界值分析测试用例设计。
 在三角形问题描述中,除了要求边长是整数外,没有给出其他的限制条件。显然,边长下界为1,上界可取100。
2、nextdate函数的边界值分析测试用例设计
在nextdate函数中,规定了变量month、day、year相应的取值范围,即1<=month<=12,1<=day<=31和1912<=year<=2050。
3、雇佣金问题的边界值分析测试用例设计
对雇佣金问题,考虑输出域的边界值,尤其是在$1000和$1800这两个临界点附近。用输出值域来确定测试用例,部分原因是因为在不同的销售额范围内,雇佣金按不同比例计算,想找出边界值在$100、$1000、$1800以及$7800上的输入变量组合。

2.5  边界值分析的局限性

 当被测程序含有多个独立变量,这些变量又受物理量的制约时,使用边界分析侧似乎方法比较适合,关键是“独立”和“物理量”。
简单地看一下nextdate函数的边界值分析测试用例,就会发现这些测试用例是不充分的,例如,没有强调对2月和闰年的测试。问题的根源是,边界值分析假设变量是独立的,而month、day和year变量之间存在某些依赖关系。

边界值分析不适用逻辑变量和布尔型变量。比如,作为逻辑变量的一个例子,很难想象0000、0001、5000、9998和9999这样的数字或电话号码会发生什么故障。尽管边界值分析测试很有用,但实际运用中,并不如测试人员预想的那样令人满意。
基于函数(程序)输入定义域的测试方法,是所有测试方法中最基本的。这类测试方法都有一种假设,即输入变量是真正独立的,如果不能保证这种假设,则这类方法不能产生令人满意的测试用例(如:1912年2月31日)。这些方法可以应用于程序的输出值域,就像在雇佣金问题中所做的一样。



3.决策表测试


所有的黑盒测试方法中,基于决策表的测试最为严格,最具有逻辑性的测试方法。
在一些数据处理问题中,某些操作的实施依赖于多个逻辑条件的组合,即针对不同逻辑条件的组合之,分别执行不同的操作,决策表很适合处理这类问题。

3.1  决策表

决策表通常由4部分组成:条件桩、条件项、动作桩和动作项。
条件桩分列出问题的所有条件,除了某些问题对条件的先后次序有特定的要求外,通常在这里列出的条件其先后次序无关紧要。条件项部分对条件桩给出的条件列出所有可能的取值。动作桩则给出了问题规定的可能采取的操作,这些操作的排列顺序一般没有什么约束。动作项指出在条件项的各组取值情况下应采取的动作。
把任何一个条件组合的特定取值及相应要执行的动作称为一条规则,在决策表中贯穿条件项和动作项的一列就是一条规则。显然,决策表中列出多少组条件取值,就有多少条规则。

若表中有两条或多条规则具有相同的动作,并且在条件项之间存在着极为相似的关系,便可以设法将其合并。
结合三角形问题给出构造决策表的5个步骤如下:
  (1)确定规则的个数。例如,三角形问题的决策表有4个条件,每个条件可以取两个值,故应有16种规则。
(2)列出所有的条件桩和动作桩。
(3)填入条件项。
(4)填入动作项,这样便可得到初始决策表。
(5)简化。


3.2   决策表测试的指导方针


基于决策表测试适合于要产生大量决策的情况(如:三角形问题),或者输入变量之间存在重要的逻辑关系的情况(如:nextdate函数)。
决策表测试方法适用于具有以下特征的应用 程序:
 1、if-then-else逻辑突出
 2、输入变量之间存在逻辑关系
 3、设计输入变量子集的计算
 4、输入与输出之间存在因果关系

适合于使用决策表设计测试用例的情况有:
1、规格说明以决策表形式给出,或者是很容易转换成决策表
2、条件的排列顺序不会也不应影响执行的操作
3、规则的排列顺序不会也不应影响执行的操作
4、当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
5、如果某一规则要执行多个操作,这些操作的执行顺序无关紧要
      给出这些情况的目的是为了说明操作的执行应完全依赖于条件的组合。其实对于某些不满足这几条的决策表,同样可以用设计测试用例,只不过需增加一些其他的测试用例罢了。


决策表规模较大,有N个条件的有限条目决策表(每个条件取真、假值)有2n个规则。现在已有多种方法可以解决这个问题——扩展条目决策表(条件使用等价类)、代数简化表,将大表“分解”为小表等方法。
与其他方法一样,迭代也比较有效。第一次识别的条件或动作可能不那么令人满意,把第一次得到的结果作为铺路石,逐渐改进,直到得到满意的决策表为止。


4.因果图


 等价类划分和边界值分析方法,着重考虑输入条件,不考虑输入条件的各种组合,也不考虑各个输入条件之间的相互制约关系。
 如果在测试时必须考虑输入条件的各种组合,可能的组合数将是一个天文数字,因此必须考虑使用一种适合于描述多种条件的组合,产生多个相应动作的测试方法,这就需要因果图。

因果图方法能够帮助测试人员按照一定的步骤,高效率地开发测试用例,以检测程序输入条件的各种组合情况。它是将自然语言规格说明转化成形式语言规格说明的一种严格的方法,可以指出规格说明中存在的不完整性和二义性。
因果图中使用了简单的逻辑符号,以直线连接左右结点。左结点表示输入状态,右结点表示输出状态。因果图用4种符号分别表示规格说明中的4种因果关系。
在实际问题中,输入状态相互之间还可能存在某些依赖关系,称之为:“约束”。比如,某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。

对于输入条件的约束有以下4种:
1、E约束:a和b中最多有一个可能为1,即a和b不能同时为1。
2、I约束:a、b和c中至少有一个必须是1,即abc不能同时为0。
3、O约束:a和b必须有一个且仅有一个为1。
4、R约束;a是1时,b必须是1,即当a是1时,b不能是0。
输出条件的约束只有M约束:若结果a是1,则结果b强制为0。

因果图方法最终生成决策表。利用因果图导出测试用例需要见过以下几个步骤:
1、分析程序规格说明中哪些是原因,哪些是结果。原因常常是输入条件或输入条件的等价类,结果则是输出条件。
2、分析程序规格说明中语义的内容,找出原因与结果之间,原因与原因之间的对应关系,并将其表示成连接各个原因与各个结果的“因果图”。
3、由于语法或环境的限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现。为表明这些特定的情况,在因果图上使用一些记号表明约束或限制条件。
4、把因果图转换成决策表。
5、根据决策表中每一列设计测试用例。

下面举例说明因果图方法的步骤:
  某软件规格说明要求:第一个字符必须是*或#,第二个字符必须是一个数字,在此情况下进行文件的修改。如果第一个字符不是#或*,则给出信息N;如果第二个字符不是数字,则给出信息M。
分析:把原因和结果分开
原因:c1----第一个字符是#
            c2----第一个字符是*
            c3----第二个字符是一个数字
结果:
     e1----给出信息N
     e2----修改文件
     e3----给出信息M
       将原因和结果用上述的逻辑符号连接起来,可以得到因果图,然后,根据因果图建立决策表。
注:不要以为因果图是多余的。实际上,在较为复杂的问题中,这个方法常常十分有效,它能有效地帮助我们检查输入条件组合,设计出非冗余、高效的测试用例。


5.其他测试方法


特殊值测试
     特殊值测试是最直观、运用最广泛的一种测试方法。当测试人员应用其领域知识使用类似程序的测试经验等信息开发测试用例时,常常使用特殊值测试。这种方法不适用测试策略,只根据“最佳工程判断”来设计测试用例。因此特殊值测试特别依赖测试人员的能力。
 故障猜测法
  人们也可以靠经验和直觉猜测程序中可能存在的各种软件故障,从而有针对地编写检查这些故障的测试用例。这就是故障测试用例,它是一种很特别的方法。
基本思路:列出程序中所有可能出现的故障或容易发生故障的情况,然后根据它们开发测试用例。比如以前遇到的最容易出错的情况是什么?故障的历史可能提供一些答案,过去出错的地方很可能以后还会出错。例如:输入数据为0或输出数据为0是容易发生故障的情形,因此可选择使输入数据为0或使输出数据为0的测试用例。


6.黑盒测试效率


前面介绍了集中典型的黑盒测试方法,这些测试方法的共同特点是:它们都是把被测程序看做是一个打不开的黑盒,只知道输入到输出的映射关系,根据软件规格说明设计测试用例。那么哪种测试方法最好?如何有效地选择测试方法?下面从测试工作量、测试效率两方面来讨论,它们是进行有效测试的关键。

1、测试工作量

   主要以边界值分析、等价类划分和决策表测试方法来讨论它们的测试工作量,即生成测试用例的数量与开发这些测试用例所需的工作量。
       边界值分析测试方法不考虑数据或逻辑依赖关系,它机械地根据各边界生成测试用例生成的测试用例最多。等价类划分测试方法则关注数据依赖关系和函数本身,需要借助于判断和技巧,考虑如何划分等价类,随后也是机械地从等价类中选取测试输入,生成测试用例。决策表技术最精细,它要求测试人员既要考虑数据,又要考虑逻辑依赖关系。如果有一个良好的条件集合,所得到的测试用例就是完备的,在一定意义上讲也是最少的。
       边界值分析测试方法使用简单,但会生成大量测试用例,机器执行时间很长。如果将精力投入到更精细的测试方法,如决策表方法,则测试用例生成花费了大量的时间,但生成的测试用例数少,机器执行时间短。测试方法研究的目的就是在开发测试用例工作量和测试用例执行工作量之间做一个令人满意的折中。

2、测试效率

  如果仔细研究这3个例子的测试用例集合,可以发现黑盒测试的基本局限是,遗漏了某些未测试的功能和冗余测试。一般来说,更精细的方法有助于识别漏洞,但是却不能保证什么。因为可以为某个程序开发出优秀的健壮等价类,然后又构造出很差的决策表。

3、测试有效性

  关于测试用例集合,真正想知道的是它们的测试效果如何,即一组测试用例找出程序中故障的效率如何。但是,解释测试有效性是很困难的,因为不可能知道程序中的所有故障,因此也就不可能知道给定方法所产生的测试用例是否能够发现这些故障,所能够做的,只是根据不同类型的故障,选择最有可能发现这种缺陷的测试方法。根据最有可能出现的故障种类,分析得到可提高测试有效性的实用方法。通过跟踪所开发软件中的故障的种类和密度,也可以改进测试方法。
这需要测试经验和技巧。

有些时候,人们可能对普遍存在的故障没有任何感觉。这时,最好的办法是利用程序的已知属性,选择处理这些属性的方法。在选择黑盒测试方法时一些经常用到的属性有:
1、变量表示物理量还是逻辑量
2、在变量之间是否存在依赖关系
3、是否有大量的例外处理
下面列出一些黑盒测试方法选取的初步“专家系统”:
1、如果变量引用的是物理量,可采用边界值分析测试和等价类测试
2、如果变量是独立,可采用边界值分析测试和等价类测试
3、如果变量不是独立的,可采用决策表测试
4、如果可保证是单故障假设,可采用边界值分析和健壮性测试
5、如果程序包含大量例外处理,可采用健壮性测试和决策表测试
6、如果变量引用的是逻辑量,可采用等价类测试用例和决策表测试。



小结:

等价类划分把程序的输入域划分称若干个互不相交的等价类,其目的是要减少测试用例的绝对数量。在进行等价类划分测试时,不仅要考虑有效等价类,还应考虑无效等价类。
边界值分析方法通过分析输入变量的边界值域设计测试用例。实践表明,在设计测试用例时,对边界及次边界附近的处理必须给予足够的重视。为检验边界附近的处理,专门设计测试用例,常常可以取得良好的测试效果。
决策表的测试中,通过分析被测程序的逻辑依赖关系,构造决策表,进而设计测试用例。在所有的黑盒测试方法中,基于决策表的测试是最具有逻辑性的测试方法,但所需的测试工作量较大。

你可能感兴趣的:(软件测试)