测试用例设计方法

一,等价类

等价类测试用例设计方法是一种典型的黑盒测试用例设计方法,使用该方法主要对测试子项进行测试规格分析,进而得到测试用例,不需要对系统内部进行深入了解,它也是目前测试设计过程中使用最普遍的一种方法。采用等价类设计方法是将系统的输入域划分为若干部分,然后从每个部分选取少数代表性数据进行测试,这样可以避免穷举产生大量的用例。

等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露软件中的错误都是等效的。在测试设计中合理地假设,假设测试某等价类的代表值就等于该等价类子集合中的其它值 的测试,因此可以将全部输入数据进行合理的划分,划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,这样可以使用少量代表性测试数据取得较好的测试结果。

等价类通常可以划分为有效等价类和无效等价类两种:

1,有效等价类:

是指对于系统的规格说明是合理的,有意义的输入数据构成的信息集合。利用有效等价类可以检验程序是否实现了规格说明书中所规定的功能和性能。

2,无效等价类:

是指对于系统的规格说明书是不合理的或无意义的输入数据构成的信息集合。

设计测试用例时需要充分考虑这两种等价类,需要验证系统不但能正确地接收合理的数据,还能处理无效的数据。

使用等价类测试用例设计方法的步骤如下:

步骤1:划分等价类

划分等价类可以参考以下几个方面原则:

1)在输入条件规定了取值范围或值的个数时,则可以确定下有效等价类和两个无效等价类;

2)在输入条件规定了输入值的集合或者规定了必须在什么条件的情况下,可以确定一个有效等价类和一个无效等价类;

3)在输入条件是一个布尔值 的情况下,可以确定一个有效等价类和一个地效等价类;

4)在规定了输入数据的一组值假定N个,并且程序要对输入值分别处理的情况下,可以确定N个有效等价类和一个无效等价类;

5)在规定 了输入数据必须遵守的规则的情况下,可以确定一个有效等价类和若干个无效等价类;

6)在确定已划分的等价类中各元素在程序处理中的方式不同的情况下,应该再将该等价类进一步划分,划分为更小的等价类;

步骤2:根据划分的等价类确定测试用例;

等价类测试用例设计方法虽然对输入的数据域进行了全面的分类,但在作中使用等价类分析法存在以下问题:

(1)等价类是以效果来换取效率,等价类细分程度,等价类组合程度,取决于进度和人力资源情况;

(2)等价类的出发点是考虑设计用例把每个输入的每种情况都有用例测试到,就认为达到了充分性,但对于情况的组合并没有进行充分地考虑;

(3)等价类划分的优劣关键是需要把输入背后隐藏的信息从各个角度进行分类;

二,边界值

边界值测试是从输入域测试中衍生出来的。边界的条件落在等价类的边界上,边界内和边界外,边界值测试是对等价类测试的一个补充,但不同于等价类测试。长期测试经验得知,大量的错误是发生在输入域的边界上,因此针对各和边界情况设计测试用例,可以查出更多的错误。

边界值分析方法的理论基础是假定大多数错误是发生在输入域或输出域的边界上,如果在边界附近的取值不会导致程序出错,那么其它取值导致程序出错的概率会很小。

关于边界点的定义如下:

1,上点:就是边界上的点,如果该域的边界是封闭的,上点就在域范围内;如果域的边界是开放的,上点就在域范围外。

2,离点:就是离上点最近的一个点,如果域的边界封闭的,离点就在域范围外,如果域的边界是开放的,离点就在域范围内。

3,内点:顾名思义,就是在域范围内的任意一个点。

上点和离点的确定与该域的边界是开放还是封闭有关,但不论边界是开放还是封闭,上点和离点总是在一个域内,另一个在域外。如果对于封闭边界,上点在域内,离点在域外;对于开放边界,上点在域外,离点域内。例如,假设A是整数,A的边界描述为A>0,那么上点为0,离点为1;如果边界描述为A=0,那到上点仍然为0,但离点为-1;

上点和离点的选择,还与区间的数据类型有关,对于整数,离点可以通过在上点的基础上加1或减1来确定;对于实数,可以选择一个精度,在精度下寻找最靠近的离点。例如,假设A是实数,首先需要确定精度,若精度为0.001,如果A的边界条件描述为A>0,那么上点是0,离点为0.001;如果边界描述为A>=0,那么上点仍然为0,但离点为-0.001。

边界值分析原则如下:

1,如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试用例;

2,如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;

3,如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意先取有序集合的第一个和最后一个元素作为测试用例;

4,如果程序中使用了内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例;

边界值用例设计方法的部骤如下:

1,分析输入参数的类型:从测试规格中分析得到输入参数类型;

2,等价类划分(可选):对于输入等价类划分方法进行等价类的划分;

3,确定边界:运用域测试分析方法确定域范围的边界(上点,离点与内点);

4,相关性分析(可选):如果存在多个输入域,则需要运用因果图,判定表方法对这些输入域边界值 的组合情况进行进一步分析;

5,形成测试项:选择这些上点,离点与内点或者这些点的组合形成测试项。

三,场景法

场景法测试用例设计方法主要用于事件触发流程,当某个事件触发后就形成相应的场景流程,不同的事件触发不同顺序和不同的处理结果,就形成一系列的事件结果。也可以奖这一系列的事件触发流程看成不同的路径,使用路径覆盖的方法来设计测试用例,故场景分析法也称为流程分析法。

场景分析法设计测试用例的部骤如下:

1,画出业务流程图;

2,设置功能路径优先级;

3,确定测试路径;

4,选取测试数据;

5,构造测试用例;

首先将系统运行过程中所涉及到的各种流程图表化,可以先从最基本的流程入手,将流程抽象成为不同功能的顺序执行。在最基本流程的基础上再去考虑次要或者异常的流程,这样将各种流程逐渐细化,既可以逐渐加深对流程的理解,还可以将各个看似孤立的流程关联起来。完成所有流程的图表化后就完成了所有路径的设定。

找出所有的路径后,下面的工作就是给每条路径设定优先级,这样在测试时就可以先测优先级高的,测试优先级低的,在时间紧迫的情况下,甚至可以考虑忽略一些优先级低的路径。优先级根据两个原则来选取:一是路径的使用频率,使用越频繁的优先级越高;二是路径的重要程度,失败对系统影响越大的优先级越高。将根据两个原则所分别得到的优先级相加就得到了整个路径的优先级。根据优先级的排序就可以更有针对性的测试。

为每条路径设定好优先级后,接下来的工作就是为每条路径选取测试数据,构造测试用例。一条用例可以对应多个测试用例,在选取测试数据时,可以充分利用边界值选取等方法,通过表格将各种测试数据的输入,输出对应起来,这样就完成了测试用例的设计。

场景法测试用例设计重点是测试业务流程是否正确,测试时需要注意的是,业务流程测试没有问题并不代表系统的功能都正确,还必须对单个功能进行详细的测试,这样才能保证测试的充分性;

四,因果图

因果图是用于描述系统的输入,输出,以及输入和输出之间的因果关系,输入与输入之间的约束关系。因果图的绘制过程是对被测系统外部特征的建模过程。在实际测试过程中因果图和判定表两种方法往往同时使用,根据系统输入和输出间的因果图可以得到判定表,根据判定表产生设计测试用例。

因果图需要描述输入与输出之间的因果关系和输入与输入之间的约束关系。

表示输入与输出间的因果关系有以下四种:

1,恒等关系:当输入项发生,会产生对应输出;当输入项不发生,不会产生对应输出;

2,非关系:与恒等关系相反;

3,或关系:多个输入条件中,只要有一个发生,则会产生对应输出;

4,与关系:多个输入条件中,只有所有输入项发生时,才会产生对应输出。

表示输入与输入之间的约束关系也有以下四种:

1,异:所有输入中至多一个输入条件发生;

2,或:所有输入中至少一个输入条件发生;

3,唯一:所有输入中有且只有一个输入条件发生;

4,要求:所有输入中只要有一个输入条件发生,则其它输放条件也会发生。

因果图设计测试用例的步骤如下:

1,把大的系统规格分解成可以测试的规格片段;

2,分析分解后待测的系统规格,找出哪些是原因,哪些是结果;

3,画出因果图;

4,把因果图转换成判定表;

5,简化判定表;

6,用判定表中的每一项生成测试用例。

使用因果图法设计没试用例有以一优缺点:

优点:

1,等价类划分法尽管将各个输入条件可能出错的情况都考虑到了,但是多个输入条件组合起来出错的情况却被忽略了,因果图分析法则可以考虑多个输入条件组合的情况;

2,因果图法能够帮助我们按照一定步骤,高效地选择测试用例,设计多个输入条件组合用例;

3,因果图分析还能为我们指出程序规格说明描述中存在的问题。

缺点:

1,输入条件与输出结果的因果关系,有时难以从软件需求规格说明书中得到;

2,即使午到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目极其庞大。

五,判定表

判定表分析和表达多种输入条件下系统执行不同动作的工具,它可以把复杂逻辑关系和多种条件组合的情况表达得既具体又明确。判定表通常由四部分组成,如图6-14所示:

一,等价类

等价类测试用例设计方法是一种典型的黑盒测试用例设计方法,使用该方法主要对测试子项进行测试规格分析,进而得到测试用例,不需要对系统内部进行深入了解,它也是目前测试设计过程中使用最普遍的一种方法。采用等价类设计方法是将系统的输入域划分为若干部分,然后从每个部分选取少数代表性数据进行测试,这样可以避免穷举产生大量的用例。

等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露软件中的错误都是等效的。在测试设计中合理地假设,假设测试某等价类的代表值就等于该等价类子集合中的其它值 的测试,因此可以将全部输入数据进行合理的划分,划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条件,这样可以使用少量代表性测试数据取得较好的测试结果。

等价类通常可以划分为有效等价类和无效等价类两种:

1,有效等价类:

是指对于系统的规格说明是合理的,有意义的输入数据构成的信息集合。利用有效等价类可以检验程序是否实现了规格说明书中所规定的功能和性能。

2,无效等价类:

是指对于系统的规格说明书是不合理的或无意义的输入数据构成的信息集合。

设计测试用例时需要充分考虑这两种等价类,需要验证系统不但能正确地接收合理的数据,还能处理无效的数据。

使用等价类测试用例设计方法的步骤如下:

步骤1:划分等价类

划分等价类可以参考以下几个方面原则:

1)在输入条件规定了取值范围或值的个数时,则可以确定下有效等价类和两个无效等价类;

2)在输入条件规定了输入值的集合或者规定了必须在什么条件的情况下,可以确定一个有效等价类和一个无效等价类;

3)在输入条件是一个布尔值 的情况下,可以确定一个有效等价类和一个地效等价类;

4)在规定了输入数据的一组值假定N个,并且程序要对输入值分别处理的情况下,可以确定N个有效等价类和一个无效等价类;

5)在规定 了输入数据必须遵守的规则的情况下,可以确定一个有效等价类和若干个无效等价类;

6)在确定已划分的等价类中各元素在程序处理中的方式不同的情况下,应该再将该等价类进一步划分,划分为更小的等价类;

步骤2:根据划分的等价类确定测试用例;

等价类测试用例设计方法虽然对输入的数据域进行了全面的分类,但在作中使用等价类分析法存在以下问题:

(1)等价类是以效果来换取效率,等价类细分程度,等价类组合程度,取决于进度和人力资源情况;

(2)等价类的出发点是考虑设计用例把每个输入的每种情况都有用例测试到,就认为达到了充分性,但对于情况的组合并没有进行充分地考虑;

(3)等价类划分的优劣关键是需要把输入背后隐藏的信息从各个角度进行分类;

二,边界值

边界值测试是从输入域测试中衍生出来的。边界的条件落在等价类的边界上,边界内和边界外,边界值测试是对等价类测试的一个补充,但不同于等价类测试。长期测试经验得知,大量的错误是发生在输入域的边界上,因此针对各和边界情况设计测试用例,可以查出更多的错误。

边界值分析方法的理论基础是假定大多数错误是发生在输入域或输出域的边界上,如果在边界附近的取值不会导致程序出错,那么其它取值导致程序出错的概率会很小。

关于边界点的定义如下:

1,上点:就是边界上的点,如果该域的边界是封闭的,上点就在域范围内;如果域的边界是开放的,上点就在域范围外。

2,离点:就是离上点最近的一个点,如果域的边界封闭的,离点就在域范围外,如果域的边界是开放的,离点就在域范围内。

3,内点:顾名思义,就是在域范围内的任意一个点。

上点和离点的确定与该域的边界是开放还是封闭有关,但不论边界是开放还是封闭,上点和离点总是在一个域内,另一个在域外。如果对于封闭边界,上点在域内,离点在域外;对于开放边界,上点在域外,离点域内。例如,假设A是整数,A的边界描述为A>0,那么上点为0,离点为1;如果边界描述为A=0,那到上点仍然为0,但离点为-1;

上点和离点的选择,还与区间的数据类型有关,对于整数,离点可以通过在上点的基础上加1或减1来确定;对于实数,可以选择一个精度,在精度下寻找最靠近的离点。例如,假设A是实数,首先需要确定精度,若精度为0.001,如果A的边界条件描述为A>0,那么上点是0,离点为0.001;如果边界描述为A>=0,那么上点仍然为0,但离点为-0.001。

边界值分析原则如下:

1,如果输入(输出)条件规定了取值范围,或是规定了值的个数,则应该以该范围的边界内及边界附近的值作为测试用例;

2,如果输入(输出)条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据;

3,如果程序规格说明中提到的输入或输出是一个有序的集合,应该注意先取有序集合的第一个和最后一个元素作为测试用例;

4,如果程序中使用了内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例;

边界值用例设计方法的部骤如下:

1,分析输入参数的类型:从测试规格中分析得到输入参数类型;

2,等价类划分(可选):对于输入等价类划分方法进行等价类的划分;

3,确定边界:运用域测试分析方法确定域范围的边界(上点,离点与内点);

4,相关性分析(可选):如果存在多个输入域,则需要运用因果图,判定表方法对这些输入域边界值 的组合情况进行进一步分析;

5,形成测试项:选择这些上点,离点与内点或者这些点的组合形成测试项。

三,场景法

场景法测试用例设计方法主要用于事件触发流程,当某个事件触发后就形成相应的场景流程,不同的事件触发不同顺序和不同的处理结果,就形成一系列的事件结果。也可以奖这一系列的事件触发流程看成不同的路径,使用路径覆盖的方法来设计测试用例,故场景分析法也称为流程分析法。

场景分析法设计测试用例的部骤如下:

1,画出业务流程图;

2,设置功能路径优先级;

3,确定测试路径;

4,选取测试数据;

5,构造测试用例;

首先将系统运行过程中所涉及到的各种流程图表化,可以先从最基本的流程入手,将流程抽象成为不同功能的顺序执行。在最基本流程的基础上再去考虑次要或者异常的流程,这样将各种流程逐渐细化,既可以逐渐加深对流程的理解,还可以将各个看似孤立的流程关联起来。完成所有流程的图表化后就完成了所有路径的设定。

找出所有的路径后,下面的工作就是给每条路径设定优先级,这样在测试时就可以先测优先级高的,测试优先级低的,在时间紧迫的情况下,甚至可以考虑忽略一些优先级低的路径。优先级根据两个原则来选取:一是路径的使用频率,使用越频繁的优先级越高;二是路径的重要程度,失败对系统影响越大的优先级越高。将根据两个原则所分别得到的优先级相加就得到了整个路径的优先级。根据优先级的排序就可以更有针对性的测试。

为每条路径设定好优先级后,接下来的工作就是为每条路径选取测试数据,构造测试用例。一条用例可以对应多个测试用例,在选取测试数据时,可以充分利用边界值选取等方法,通过表格将各种测试数据的输入,输出对应起来,这样就完成了测试用例的设计。

场景法测试用例设计重点是测试业务流程是否正确,测试时需要注意的是,业务流程测试没有问题并不代表系统的功能都正确,还必须对单个功能进行详细的测试,这样才能保证测试的充分性;

四,因果图

因果图是用于描述系统的输入,输出,以及输入和输出之间的因果关系,输入与输入之间的约束关系。因果图的绘制过程是对被测系统外部特征的建模过程。在实际测试过程中因果图和判定表两种方法往往同时使用,根据系统输入和输出间的因果图可以得到判定表,根据判定表产生设计测试用例。

因果图需要描述输入与输出之间的因果关系和输入与输入之间的约束关系。

表示输入与输出间的因果关系有以下四种:

1,恒等关系:当输入项发生,会产生对应输出;当输入项不发生,不会产生对应输出;

2,非关系:与恒等关系相反;

3,或关系:多个输入条件中,只要有一个发生,则会产生对应输出;

4,与关系:多个输入条件中,只有所有输入项发生时,才会产生对应输出。

表示输入与输入之间的约束关系也有以下四种:

1,异:所有输入中至多一个输入条件发生;

2,或:所有输入中至少一个输入条件发生;

3,唯一:所有输入中有且只有一个输入条件发生;

4,要求:所有输入中只要有一个输入条件发生,则其它输放条件也会发生。

因果图设计测试用例的步骤如下:

1,把大的系统规格分解成可以测试的规格片段;

2,分析分解后待测的系统规格,找出哪些是原因,哪些是结果;

3,画出因果图;

4,把因果图转换成判定表;

5,简化判定表;

6,用判定表中的每一项生成测试用例。

使用因果图法设计没试用例有以一优缺点:

优点:

1,等价类划分法尽管将各个输入条件可能出错的情况都考虑到了,但是多个输入条件组合起来出错的情况却被忽略了,因果图分析法则可以考虑多个输入条件组合的情况;

2,因果图法能够帮助我们按照一定步骤,高效地选择测试用例,设计多个输入条件组合用例;

3,因果图分析还能为我们指出程序规格说明描述中存在的问题。

缺点:

1,输入条件与输出结果的因果关系,有时难以从软件需求规格说明书中得到;

2,即使午到了这些因果关系,也会因为因果关系复杂导致因果图非常庞大,测试用例数目极其庞大。

五,判定表

判定表分析和表达多种输入条件下系统执行不同动作的工具,它可以把复杂逻辑关系和多种条件组合的情况表达得既具体又明确。判定表通常由四部分组成,如图6-14所示:

条件桩                       条件项

动作桩                       动作项

                                  规则

    图6-14 判定表组成部分

1,条件桩:列出系统所有输入,列出的输入次序没有影响;

2,动作桩:列出系统可能采取的操作,这些操作的排列顺序没有约束;

3,条件项:列出针对它左列输入条件的取值,在所有可能情况下的真假取值;

4,动作项:列出在输入项的各处取值情况下应该采取的动作。

动作项和条件项指出了在条件项的各种取值情况下应该采取的动作,在判定表中贯穿条件项和动作项的一列就是一条规则,可以针对每个合法输入组合的规则设计用例进行测试。

判定表测试用例设计方法的步骤如下:

1,确定规则的个数。

根据输入的条件数据计算出规则的个数,如果有N个条件,那么规则一共有2的N次方,如N为3时,规则数为8个。

2,列出所有的条件桩和动作桩。

条件桩是影响结果的条件,动作桩是由于所有条件组合后可能产生的结果。

3,输入条件项和动作项。

对各条件项进行标识,一般使用1和0来标识,当该条件选中时使用1来标识,当条件不选中时使用0来标识,需要将条件项中所有条件组合的情况标识出来,根据条件的情况来确定动作项,对动作项进行标识。

4,简化,合并相似规则。

简化判定表是将相似规则(即表中的列)进行合并,以减少测试用例,当然它是以牺牲测试用例充分性为代价的。

简化的过程为,首先找到判定表中输出完全相同的两列,观察它们的输入是否相似。例如只有一个输入不同时,说明不管该输入取何值,输出都是一样的,也就是说该输入对输出是无影响的,因此可以将这两列合并为一列,简化,合并相似规则示例图如图6-15所示。


5,将每条规则转化为用例。

简化,合并后的判定表中的每一列可以规划为一个测试用例。

使用判定表设计测试用例存在如下优缺点:

优点:

1,充分考虑了输入条件间的组合,避免遗漏;

2,设计过程中对输入条件间的约束关系进行分析,避免无效用例的出现,提高测试用例的有效性;

3,设计时同时输入每个测试项目的预期结果。

缺点:

1,当被测特性输入较多时,判定表会在常庞大;

2,输入条件间的约束不能有效区分当前的组合是否合理,会导致产生一些不需要的组合条件。

3,规则合并过程中存在可能漏测的风险,虽然某个输入条件在输出接口上是无关的,但是在软件设计上,内部针对这个条件采取了不同的程序分支。

六,正交试验

正交试验设计法是从大量的试验点中挑选中适量的,有代表性的点,应用依据伽罗瓦理论导出的“正交表”,合理地安排试验的一种科学的试验设计方法,是研究多因素,多水平的一种设计方法。它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备“均匀分散,齐整可比”的特点,正交试验是一种基于正交表的,高效率的,快速,经济的试验设计方法。

正交试验分析法包括以下常用术语:

1,指标:通常把判断试验结果优劣的标准叫做试验的指标;

2,因子:是指所有影响试验指标的条件;

3,因子的状态:是指影响试验因子的因素,也称之为因子的水平;

正交表的表现形式:Lr(m的n次方)

1,n表示因子数,即正交表中列的个数;

2,m表示水平数,也称为状态,任何单个因子能够取得的值的最大个数;

3,r表示行数,正交表中行的数量,即测试用例数。

行数r=(m-1)*n+1,如L4(2的3次方),测试用例数为4=(2-1)*3+1,这是等水平的正交表。但对于等水平的正交表其表现形式为Lr(m的n次方,p的q次方),那么行数r=(m-1)*n+(p-1)*q+1,如L36(2的11次方,3的12次方),测试用例36=(2-1)*11+(3-1)*12+1。

在网站http://www.york.ac.uk/depts/maths/tables/orthogonal.htm可以查找到相关的正交表。

正交试验分析法的步骤如下:

1,提取功能说明,构造因子-状态表。

分析规格说明,通过规格说明书提取影响该功能的因子以及每个因子可能取值的最大数,即因子状态。

2,加权筛选,生成因素分析表。

计算各因子和状态的权值,删去一部分权值较小即重要性较小的因子或状态,使最后生成的测试用例集缩减到允许范围。

3,画出布尔图。

如果各个因子的状态数是不统一的,几乎不可能出现均匀的情况,必须先用逻辑命令来组合各因子的状态,作出布尔图。

4,查找最接近的相应阶数的正交表。

根据布尔图选择最接近的相应阶数的正交表,实际的测试工作中,因子和因子状态很难与正交表完全符合,所以只能选择一个阶数的最接近的正交表。

5,将实际的因子和状在带入正交表中,得到最终的正交表。

选择好正交表后应该将实际的因子和因子水平带入正交表中,此时可能出现以下三种情况之一:

1) 因子的状态数正好和正交表的状态数相等,那么此时只需要直接替换正交表中的值即可。

2) 因子的状态数多于正交表中的状态数,那么此时需要先将多余的状态合并带入正交表中,然后再将合并的中间状态展开。

3) 因子的状态数少于正交表中的状态数,那么只要将正交表中多出来的状态,使用实际状态中的任意值替换即可。

6,利用正交表每行数据构造测试用例。

将使用实际因子和状态替换过的正交表中的每一行,选择数据构造测试用例即可。

tips:借助正交试验法虽然可以提高测试用例的效率,但是正交试验终归是数学推导出来的公式,因此其组合情况并没有考虑到实际取值的情况,所以很可能一些组合在实际过程中根本不会出现,或者出现的机率很小,因此在完成下交表后,应该对正交表进行仔细的检查,将其中无效的组合删除,添加些正交表中没有的,但实际情况可能使用机率比较高的组合。

七,状态迁移图

许多需求用状态机的方式来描述,状态机的测试主要关注状态转移是否正确。对于一个有限状态机,通过测试验证,其在给定条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等。通过构造能导导致状态迁移的事个来测试状态之间的转换,多用于协议测试,使用这种方法可以设计逆向的测试用例,如状态和事件的非法组合。

状态迁移图测试用例设计方法的步骤如下:

1,画出状态迁移图;

2,列出状态-事件表;

3,画出状态转称树,并从状态转换树推导出测试路径。

根据测试路径编写测试用例;

八,输入域

输入域测试法是一种综合的方法,其综合考虑了等价类划分法,边界值分析法等方法,针对输入可能存在的各种情况进行考虑,关于输入域测试法主要考虑以下三个方面:

1,极端测试,需要选择测试数据覆盖输入域的极端情况;

2,中间范围测试,选择域内部的数据进行测试;

3,特殊值测试,根据要计算的功能特性的基础来选择测试数据,这个过程尤其适合于数学计算。所要计算功能的属性可以有助于选择能够验证被计算方案正确的测试数据。例如,根据Sin()函数的周期,可以使用2π不同倍数的测试数据。

之前介绍的等价类划分法和边界分析法,这两种方法是输入域测试的一部分,那么实际的测试过程中只需要在此基础上考虑即可,通常需要考虑以下两方面的测试;

1,特殊值:特殊值与输入的特点有关,需要充分了解该输入的存储和处理过程;

2,长时间输入:对于一些没有指定长度的输入,测试时需要长时间的持续输入,以验证输入的数据是否会引起内存越界从而导致系统故障的情况。

九,输出域

上一节介绍了输入域的测试,但是系统输出与输入之间并不一定是线性关系,所以从输出的角度来说,覆盖了输入域并一代表一定完全覆盖输出域,故测试时需要对输出域进行测试。

测试时需要分析各输出的等价类,通过选择会导致各种输出的等价类被达到的输入点来执行测试,期望达到输出域的等价类覆盖。

同时分析各输出的边界值,通过选择会导致各种输出边界值被达到的输入点来执行测试,期望达到输出域边界值覆盖。这样可以保证系统功能最大和最小的输出条件都已被检查。

十,异常分析

系统异常分析法是针对系统有可能存在的异常操作,软硬件缺陷引起的故障进行分析,依此设计测试用例,验证系统的容错能力,以及当系统出现异常时故障恢复的能力。测试时可以人为地构造一些异常情况(如安装程序时断电,数据损坏等情况),来验证系统的处理情况。

十一,错误猜测法

错误猜测法是根据以往的测试经验和对系统内部知识的了解,列出系统中各种可能存在的错误和容易发生错误的特殊情况,并设计出测试用例。随着对产品了解程度的加深和测试经验的丰富,使用错误猜测法设计测试用例往往非常有效,但是错误猜测法只能作为测试设计的补充而不能单独用来设计测试用例,否则可能导致测试的不充分。

错误猜测不是瞎猜,不是没有根据和目的地猜测,它需要了解系统薄弱的地方和开发人员的盲点,也可以根据以往缺陷分析的报告来分析系统最容易出现错误的地方,作为错误猜测法的依据。

    图6-14 判定表组成部分

1,条件桩:列出系统所有输入,列出的输入次序没有影响;

2,动作桩:列出系统可能采取的操作,这些操作的排列顺序没有约束;

3,条件项:列出针对它左列输入条件的取值,在所有可能情况下的真假取值;

4,动作项:列出在输入项的各处取值情况下应该采取的动作。

动作项和条件项指出了在条件项的各种取值情况下应该采取的动作,在判定表中贯穿条件项和动作项的一列就是一条规则,可以针对每个合法输入组合的规则设计用例进行测试。

判定表测试用例设计方法的步骤如下:

1,确定规则的个数。

根据输入的条件数据计算出规则的个数,如果有N个条件,那么规则一共有2的N次方,如N为3时,规则数为8个。

2,列出所有的条件桩和动作桩。

条件桩是影响结果的条件,动作桩是由于所有条件组合后可能产生的结果。

3,输入条件项和动作项。

对各条件项进行标识,一般使用1和0来标识,当该条件选中时使用1来标识,当条件不选中时使用0来标识,需要将条件项中所有条件组合的情况标识出来,根据条件的情况来确定动作项,对动作项进行标识。

4,简化,合并相似规则。

简化判定表是将相似规则(即表中的列)进行合并,以减少测试用例,当然它是以牺牲测试用例充分性为代价的。

简化的过程为,首先找到判定表中输出完全相同的两列,观察它们的输入是否相似。例如只有一个输入不同时,说明不管该输入取何值,输出都是一样的,也就是说该输入对输出是无影响的,因此可以将这两列合并为一列,简化,合并相似规则示例图如图6-15所示。

5,将每条规则转化为用例。

简化,合并后的判定表中的每一列可以规划为一个测试用例。

使用判定表设计测试用例存在如下优缺点:

优点:

1,充分考虑了输入条件间的组合,避免遗漏;

2,设计过程中对输入条件间的约束关系进行分析,避免无效用例的出现,提高测试用例的有效性;

3,设计时同时输入每个测试项目的预期结果。

缺点:

1,当被测特性输入较多时,判定表会在常庞大;

2,输入条件间的约束不能有效区分当前的组合是否合理,会导致产生一些不需要的组合条件。

3,规则合并过程中存在可能漏测的风险,虽然某个输入条件在输出接口上是无关的,但是在软件设计上,内部针对这个条件采取了不同的程序分支。

六,正交试验

正交试验设计法是从大量的试验点中挑选中适量的,有代表性的点,应用依据伽罗瓦理论导出的“正交表”,合理地安排试验的一种科学的试验设计方法,是研究多因素,多水平的一种设计方法。它是根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备“均匀分散,齐整可比”的特点,正交试验是一种基于正交表的,高效率的,快速,经济的试验设计方法。

正交试验分析法包括以下常用术语:

1,指标:通常把判断试验结果优劣的标准叫做试验的指标;

2,因子:是指所有影响试验指标的条件;

3,因子的状态:是指影响试验因子的因素,也称之为因子的水平;

正交表的表现形式:Lr(m的n次方)

1,n表示因子数,即正交表中列的个数;

2,m表示水平数,也称为状态,任何单个因子能够取得的值的最大个数;

3,r表示行数,正交表中行的数量,即测试用例数。

行数r=(m-1)*n+1,如L4(2的3次方),测试用例数为4=(2-1)*3+1,这是等水平的正交表。但对于等水平的正交表其表现形式为Lr(m的n次方,p的q次方),那么行数r=(m-1)*n+(p-1)*q+1,如L36(2的11次方,3的12次方),测试用例36=(2-1)*11+(3-1)*12+1。

在网站http://www.york.ac.uk/depts/maths/tables/orthogonal.htm可以查找到相关的正交表。

正交试验分析法的步骤如下:

1,提取功能说明,构造因子-状态表。

分析规格说明,通过规格说明书提取影响该功能的因子以及每个因子可能取值的最大数,即因子状态。

2,加权筛选,生成因素分析表。

计算各因子和状态的权值,删去一部分权值较小即重要性较小的因子或状态,使最后生成的测试用例集缩减到允许范围。

3,画出布尔图。

如果各个因子的状态数是不统一的,几乎不可能出现均匀的情况,必须先用逻辑命令来组合各因子的状态,作出布尔图。

4,查找最接近的相应阶数的正交表。

根据布尔图选择最接近的相应阶数的正交表,实际的测试工作中,因子和因子状态很难与正交表完全符合,所以只能选择一个阶数的最接近的正交表。

5,将实际的因子和状在带入正交表中,得到最终的正交表。

选择好正交表后应该将实际的因子和因子水平带入正交表中,此时可能出现以下三种情况之一:

1) 因子的状态数正好和正交表的状态数相等,那么此时只需要直接替换正交表中的值即可。

2) 因子的状态数多于正交表中的状态数,那么此时需要先将多余的状态合并带入正交表中,然后再将合并的中间状态展开。

3) 因子的状态数少于正交表中的状态数,那么只要将正交表中多出来的状态,使用实际状态中的任意值替换即可。

6,利用正交表每行数据构造测试用例。

将使用实际因子和状态替换过的正交表中的每一行,选择数据构造测试用例即可。

tips:借助正交试验法虽然可以提高测试用例的效率,但是正交试验终归是数学推导出来的公式,因此其组合情况并没有考虑到实际取值的情况,所以很可能一些组合在实际过程中根本不会出现,或者出现的机率很小,因此在完成下交表后,应该对正交表进行仔细的检查,将其中无效的组合删除,添加些正交表中没有的,但实际情况可能使用机率比较高的组合。

七,状态迁移图

许多需求用状态机的方式来描述,状态机的测试主要关注状态转移是否正确。对于一个有限状态机,通过测试验证,其在给定条件内是否能够产生需要的状态变化,有没有不可达的状态和非法的状态,是否可能产生非法的状态转移等。通过构造能导导致状态迁移的事个来测试状态之间的转换,多用于协议测试,使用这种方法可以设计逆向的测试用例,如状态和事件的非法组合。

状态迁移图测试用例设计方法的步骤如下:

1,画出状态迁移图;

2,列出状态-事件表;

3,画出状态转称树,并从状态转换树推导出测试路径。

根据测试路径编写测试用例;

八,输入域

输入域测试法是一种综合的方法,其综合考虑了等价类划分法,边界值分析法等方法,针对输入可能存在的各种情况进行考虑,关于输入域测试法主要考虑以下三个方面:

1,极端测试,需要选择测试数据覆盖输入域的极端情况;

2,中间范围测试,选择域内部的数据进行测试;

3,特殊值测试,根据要计算的功能特性的基础来选择测试数据,这个过程尤其适合于数学计算。所要计算功能的属性可以有助于选择能够验证被计算方案正确的测试数据。例如,根据Sin()函数的周期,可以使用2π不同倍数的测试数据。

之前介绍的等价类划分法和边界分析法,这两种方法是输入域测试的一部分,那么实际的测试过程中只需要在此基础上考虑即可,通常需要考虑以下两方面的测试;

1,特殊值:特殊值与输入的特点有关,需要充分了解该输入的存储和处理过程;

2,长时间输入:对于一些没有指定长度的输入,测试时需要长时间的持续输入,以验证输入的数据是否会引起内存越界从而导致系统故障的情况。

九,输出域

上一节介绍了输入域的测试,但是系统输出与输入之间并不一定是线性关系,所以从输出的角度来说,覆盖了输入域并一代表一定完全覆盖输出域,故测试时需要对输出域进行测试。

测试时需要分析各输出的等价类,通过选择会导致各种输出的等价类被达到的输入点来执行测试,期望达到输出域的等价类覆盖。

同时分析各输出的边界值,通过选择会导致各种输出边界值被达到的输入点来执行测试,期望达到输出域边界值覆盖。这样可以保证系统功能最大和最小的输出条件都已被检查。

十,异常分析

系统异常分析法是针对系统有可能存在的异常操作,软硬件缺陷引起的故障进行分析,依此设计测试用例,验证系统的容错能力,以及当系统出现异常时故障恢复的能力。测试时可以人为地构造一些异常情况(如安装程序时断电,数据损坏等情况),来验证系统的处理情况。

十一,错误猜测法

错误猜测法是根据以往的测试经验和对系统内部知识的了解,列出系统中各种可能存在的错误和容易发生错误的特殊情况,并设计出测试用例。随着对产品了解程度的加深和测试经验的丰富,使用错误猜测法设计测试用例往往非常有效,但是错误猜测法只能作为测试设计的补充而不能单独用来设计测试用例,否则可能导致测试的不充分。

错误猜测不是瞎猜,不是没有根据和目的地猜测,它需要了解系统薄弱的地方和开发人员的盲点,也可以根据以往缺陷分析的报告来分析系统最容易出现错误的地方,作为错误猜测法的依据。

你可能感兴趣的:(测试用例设计方法)