等价类划分测试法

    等价类测试方法:把程序的输入域划分红若干部分,而后从每一个部分选取少许具备表明性的数据做为测试用例。等价类是指某个输入域的子集合,在该子集合内,各个数据对于发现程序中的错误都是等效的,并合理地假设:测试某个等价类的表明值就等于对这一类其余值的测试。html

    有效等价类:是指对于程序的规格说明来讲是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明所规定的功能和性能。函数

    无效等价类:指对程序的规格说明是不合理的或无心义的输入数据所构成的集合。对于具体的问题,无效等价类至少应有一个,也可能多个。性能

    划分等价类的标准:测试

        1) 完备测试、避免冗余url

        2) 划分等价类重要的是:集合的划分、划分为互不相交的一组子集,而子集的并是整个集合spa

        3) 并是整个集合:备性设计

        4) 子集互不相交:保证一种形式的无冗余性htm

       5) 同一类中标识(选择)一个测试用例,同一等价类中,每每处理相同,相同处理映射到“相同的执行路径”。blog

划分等价类的方法

1)        在输入条件规定了取值范围或值的个数的状况下,则能够确立一个有效等价类和两个无效等价类。如:输入值是学生成绩,范围是0~100;ci

测试用例设计方法---等价类划分法
 

       2)在输入条件规定了输入值的集合或者规定了“必须如何”的条件的状况下,可确立一个有效等价类和一个无效等价类:

       3)在输入条件是一个布尔量的状况下,可肯定一个有效等价类和一个无效等价类。

       4)在规定了输入数据的一组值(假定n个),而且程序要对每个输入值分别处理的状况下,可确立n个有效等价类和一个无效等价类。

       例:输入条件说明学历可为:专科、本科、硕士、博士四种之一,则分别取这四种的四个值做为四个有效等价类,另外把四种学历以外的任何学历做为无效等价类。

       5)在规定了输入数据必须遵照的规则状况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不一样角度违反规则);

       6)在确知已划分的等价类中各元素在程序处理中的方式不一样的状况下,则应在将该等价类进一步的划分为更小的等价类。

设计测试用例

       在确立了等价类后,可创建等价类表,列出全部划分出的等价类输入条件:有效等价类、无效等价类,而后从划分出的等价类中按如下三个原则设计测试用例:

       1)为每个等价类规定一个惟一的编号;

       2)设计一个新的测试用例,使其尽量多地覆盖还没有被覆盖地有效等价类,重复这一步,直到全部的有效等价类都被覆盖为止;

       3)设计一个新的测试用例,使其仅覆盖一个还没有被覆盖的无效等价类,重复这一步,直到全部的无效等价类都被覆盖为止。

2、实战演习

一、三角形问题

一、某程序规定:“输入三个整数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)

覆盖无效等价类的测试用例:

测试用例设计方法---等价类划分法

二、NextDate

二、NextDate函数包含三个变量:month、day、year,函数的输出为输入日期后一天的日期。

例如,输入2006年3月7日,则函数的输出为2006年3月8日。要求输入变量month、day、year均为整数值,而且知足下列条件:

一、1<=month<=12

二、1<=day<=31

三、1812<=year<=2012

1)有效等价类为:

M1={月份:1<=月份<=12}

D1={日期:1<=日期<=31}

Y1={年份:1812<=年<=2012}

2)若条件1~3中任何一个条件失效,则NextDate函数都会产生一个输出,指明相应的变量超出取值范围,好比“month的值不在12范围中”。显然还存在这大量的year、month、day的无效组合,NextDate函数将这些组合做为统一的输出:“无效输入日期”。

其无效等价类为:

M2={月份:月份<1}

M3={月份:月份>12}

D2={日期:日期<1}

D3={日期:日期>31}

Y2={年份:年<1812}

Y3={年份:年>2012}

弱通常等价类测试用例

月份

日期

预期输出

6

15

1912

1912年6月16日

 

强通常等价类测试用例同弱通常等价类测试用例

注:弱有单缺陷假设;健壮考虑了无效值。

(一)弱健壮等价类测试

用例

ID

月份

日期

预期输出

WR1

 

6

15

1912

1912年6月16日

WR2

 

0

1

1912

月份不在1~12中

WR3

 

15

1

1912

月份不在1~12中

WR4

 

1

0

1912

日期不在1~31中

WR5

 

1

32

1912

日期不在1~31中

WR6

 

1

1

1811

年不在1812~2012中

WR7

 

1

1

2013

年不在1812~2012中

(二)强健壮等价类测试

用例

ID

月份

日期

预期输出

SR1

 

15

1

1912

月份不在1~12中

SR2

 

1

32

1912

日期不在1~31中

SR3

 

1

1

1811

年份不在1812~2012中

SR4

 

0

0

1912

两个无效一个有效

SR5

 

0

1

1811

两个无效一个有效

SR6

 

1

0

1811

两个无效一个有效

SR7

 

0

0

1811

三个无效

 

出自:

http://blog.sina.com.cn/s/blog_7938ea3701012c76.html

http://max.book118.com/html/2016/0501/41807323.shtm

相关文章
相关标签/搜索