组合测试模型方法

发表于:2009-05-08来源:作者:点击数: 标签:模型
1 基本信息 好的测试都是基于模型的。 由于软件输入空间的无限性,使得 测试人员 不可能遍历软件的所有输入。其实,遍历软件的所有输入一般也是没有必要的。优秀的测试设计,往往能够从繁多的测试用例中挑选出有效的用例,用尽可能少的测试输入,覆盖尽可能

1 基本信息

        好的测试都是基于模型的。

        由于软件输入空间的无限性,使得测试人员不可能遍历软件的所有输入。其实,遍历软件的所有输入一般也是没有必要的。优秀的测试设计,往往能够从繁多的测试用例中挑选出有效的用例,用尽可能少的测试输入,覆盖尽可能多的软件需求,这离不开合适的测试模型的支持。
所谓测试模型(Test Model),是测试和测试对象的基本特征、基本关系的抽象。它是测试理论家们根据大量的实际测试应用总结出来的,能够代表某一类应用的内在规律,并对应于适合此类应用的一组测试框架性的东西。

2 组合测试模型

        一种相对简单,并且应用十分广泛的模型是组合模型,具有如下特点:

        1)、输出是由输入变量之间的逻辑关系决定的。
        2)、输出结果不依赖于变量的先后顺序。这一特点是我们理解组合模型的关键。

        对于符合组合模型的输入而言,测试用例设计时要注意:

        1)、考虑输入变量的不同取值以及这些取值之间的不同组合。
        2)、从应用系统中抽象出正确的逻辑表达式,不要遗漏任何一种逻辑组合关系。

        在组合模型中最常用的两种测试技术分别为正交设计技术和组合覆盖测试技术。

2.1 正交设计技术介绍:

        正交实验设计方法:依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的、有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法。

        采用正交设计法设计测试用例主要包括以下步骤:

        确定影响因素。这里的影响因素指对软件运行结果有影响的软件运行条件,一般情况下是指软件的输入以及其它软件运行的环境。这些因素可以通过对软件需求规格、软件概要设计、软件详细设计等文档分析而获得。
        确定因素的取值范围或集合。因素的取值范围指软件输入的取值范围或集合以及可用的硬件资源。同样,要通过分析软件需求规格等文档获取这些信息。
        确定每个因素的水平。根据因素的取值范围或集合,采用等价类划分、边界值分析等软件测试技术,在每个因素的取值范围或集合里挑选出有效等价类、无效等价类、正好等于、刚刚大于或刚刚小于边界值等有代表性的测试点。例如:对于用下拉框进行输入的字段,下拉框的所有取值都构成了该因素的水平集合。
        选择正交表。根据确定的因素和水平,选择合适的正交表。如果没有合适的正交表可用或需要的测试用例个数太多,则要对因素和水平进行调整。
        设计测试用例。

2.2 组合覆盖测试技术介绍:

        组合覆盖测试技术是一种设计测试用例的方法,它利用组合产生能够覆盖规定组合的测试用例。根据覆盖程度的不同,可以分为单因素覆盖、成对组合覆盖、三三组合覆盖等。这种方法力求用尽可能少的测试用例,覆盖尽可能多的影响因素。

        下面重点讨论成对组合覆盖测试用例的生成方法。

        基本用例选择方法:首先确定出1个基本测试用例,基本用例由每个因素中最重要的水平值组合而成。根据预先定义的标准,如最常用的、最简单的、最小的、最可能使用的等找出最重要的水平值。

        成对组合(Pair-Wise),又称两两组合、对对组合,它是将所有因素的水平按照两两组合的原则而产生的。成对组合覆盖的概念是Mandl于1985年在测试Ada编译程序时提出的。Cohen等人应用成对覆盖测试技术对Unix中的“sort”命令进行了测试,测试结果:模块覆盖率93.5%,判断覆盖率为83%。由此可见,运用成对组合覆盖技术设计出的测试用例具有经济有效的特点。

        假设某功能有3个因素(或者叫输入项),每个因素(输入项)有2个不同的取值,分别为

        【A1,A2】、  【B1,B2】 、 【C1,C2】

        引入成对组合的概念之后,我们可以用成对组合集合来表示通常的测试用例集。对于某个给定的测试用例,它能覆盖一定数量的成对组合元素。例如:

        测试用例(A1,B1,C1)覆盖了(A1,B1),(A1,C1),(B1,C1)3个成对组合元素。
        测试用例(A1,B1,C2)覆盖了(A1,B1),(A1,C2),(B1,C2)3个成对组合元素。

        所谓测试设计,,就是设计出一组测试用例以依之对软件进行测试;显然,不同的测试用例集所覆盖的成对组合元素数量是不同的。在同样大小的测试用例集条件下,覆盖的成对组合元素数量越多,表明该测试用例集的测试效果越好。因此,如何选择测试用例集是一个值得研究的问题。对于上例,有8个成对组合元素需要覆盖,如何从8个候选测试用例中挑选出最少的测试用例,达到100%的成对组合覆盖,选择方案如下:

        【A1,B1,C2】、【A1,B2,C1】、【A2,B1,C1】、【A2,B2,C2】

        通过上面的论述和举例,相信大家已经对这两种模型有了一定的认识,并对每种模型适合什么样的测试需求也有了初步了解。


原文转自:http://www.ltesting.net