APP下载

基于分类树的雷达软件测试用例设计

2014-04-14裴阿平张江华

火控雷达技术 2014年4期
关键词:用例测试用例分类

职 晓 裴阿平 张江华

(西安电子工程研究所 西安 710100)

0 引言

随着电子技术的不断发展,现代雷达系统软件化程度越来越高,雷达系统软件的研制占整个系统开发周期的比重越来越大。作为软件质量的重要保证手段,软件测试逐渐成为雷达系统软件研制的重要环节。其中设计有效的测试用例是直接关系测试质量的关键因素。理论上穷举法即设计包含所有输入参数的所有取值组合的用例集,其可靠性最高;然而,由于穷举法带来的计算爆炸,无法在工程实际中得到有效应用。因此从上述完备的测试用例集中挑选尽量少的用例,保证足够的组合覆盖率成为近年来软件测试研究中的一个重要课题[1]。

分类树方法是由Grochtmann 和Grimm 在1993年设计提出,经过不断的实践证明是一种有效的软件功能测试用例设计方法[2~4]。文献[2]中作者利用分类树方法和分类树工具CTE XL 完成了WEB服务测试用例的自动生成。文献[3]中作者基于分类树方法和形式规格说明完成了一个网上购物系统的测试用例生成。由以上文献可以看出,应用分类树方法和分类树工具CTE XL 设计用例大大提高了测试效率,同时提升了测试的自动化程度。然而从中仍可以看出,在测试用例的执行过程中,生成的用例集仍有很大冗余。所以为了提高这种方法的工程实用性,有必要进一步对分类树方法生成的用例集做进一步的优化。

针对上述问题,本文提出一种将分类树和正交试验设计方法相结合的测试用例设计方法,利用分类树方法和分类树工具CTE XL 自动生成测试用例,然后利用正交试验设计方法对生成的用例做进一步的精简。这种方法既避免了以往功能测试的随机性和盲目性,同时减少了冗余用例对测试资源的浪费。经验证,在雷达软件测试中有着较好的工程应用价值。

1 分类树方法

分类树方法的主要思想是根据被测单元的需求规格说明,对单元模块的输入数据进行抽象,将整个单元的输入域分割成若干个独立的子类,每个子类再根据一定的准则再次划分,直到将整个输入域分割成一些不可再分的子类的组合。分类树作为描述此方法的工具,其主要由节点和分支组成。其中节点又可分为内节点和叶节点,分支为各级节点间从属关系的体现,具体定义如下:

定义1:如图1所示,一棵分类树是一个四元集合CT= {B,L,U,R},其中B 表示根节点,是整个分类树最顶层节点,也是整个单元测试的输入域。接着对B 进行逐层分解。L= {L11,L12,...L1n1,L21,L22,...L2n2,...Lm1,Lm2,...Lmn|m,n,n1,n2∈N+} 表示叶节点,是分类树的最底层节点,是测试中输入域的不可再分的子类属性值,即被测单元的输入值。U= {U1,U2,...Um|m ∈N+} 表示除根节点和叶节点外的内节点,是整个分类树建立过程中的独立类属性。R= {r1,r2} 表示上述的父类与子类的从属关系,其中r1= {<B,Ui>i ∈N+,i ≤m},r2= {<B,Lij>i,j ∈N+,i ≤m,j ≤n}。

图1 分类树结构图

分类树方法在测试中应用有许多优点。首先,因为分类树是一种类似于流程图的结构,所以用分类树来设计测试用例可以使原本主要依靠测试人员经验设计过程变成一种结构化和系统化的设计过程。其次,分类树方法还可以很好地分析程序错误的特征,定位缺陷位置[5]。

虽然,利用分类树工具CTE XL 的约束关系可以一定程度地精简测试用例,但分类树方法在实际工程应用中仍有很大缺陷。随着输入域和分类子集的递增,分类树方法将会生成十分庞大的测试用例集,随之产生大量冗余的测试用例。在测试时间和资源有限的情况下,全部覆盖其生成的用例集是不现实的。所以在保证一定测试覆盖率的前提下,需要进一步地精简该测试用例集。

2 分类树方法设计测试用例的改进

针对上述缺陷,正交试验设计法可以将分类树工具生成的初始测试用例集进一步精简,去除冗余测试用例,同时保证测试用例集中的用例成对组合且均匀分布,从而在保证一定测试覆盖率的前提下,提高测试的效率,节约测试的成本。

2.1 正交试验设计法的可靠性

正交试验设计法是一种基于统计数学的科学试验方法的总结,其广泛应用于各试验科学领域。具体来说,它是根据Galois 理论,由统计学模型推导出的正交表去安排科学试验的一种实践方法。正交试验设计法可以从大量的试验数据中筛选出少量具有代表性的试验数据进行试验,大幅减少了试验次数,从而优化了试验效率。从本质上来讲,正交试验设计法是遗传算法的一种特例,即一种初始种群固定的、只使用定向变异算子、只进化一代的遗传算法。相较一般的遗传算法,它的优化解必然不及一般遗传算法产生的优化解,但一般遗传算法的步骤更复杂,产生的试验次数也更多[6]。所以正交试验设计法从工程的角度来看具有更好的应用价值。

2.2 正交表的概念

正交表作为这种方法的基本工具,已有很多学者进行了深入的研究。现有大量现成的正交表可以供试验中直接使用,当然特殊情况也可以通过数学模型推导出匹配的正交表。通常以LRuns(LevelsFac-tors)的形式来表示正交表。具体根据各个因素(Factors)的水平(Levels)的数目相同与否,又可以分为等水平正交表和混合水平正交表。其中,次数(Runs)代表优化后试验的次数,其值等于正交表的行数,对应测试用例集中的用例个数。因素(Factors)是对整个试验结果会产生主要影响的要素,因素数等于正交表的列数,对应被测单元的接口参数个数。水平(Levels)是各因素具体的可能取值或状态,对应被测单元的接口参数可能取值数。

2.3 用例集优化步骤

应用正交试验设计法对分类树方法生成的用例集优化步骤如下:

2.3.1 确定因素,即被测单元的输入参数。这里具体对应图1 分类树中的U= {U1,U2,...Um|m ∈N+};

2.3.2 确定水平,即被测单元的输入参数对应的可能取值。这里对应图1 分类树中的L= {L11,L12,...L1n1,L21,L22,...L2n2,...Lm1,Lm2,...Lmn|m,n,n1,n2∈N+};

2.3.3 选择正交表,即查找正交表。根据因素数和水平数选择匹配的正交表。如果各因素的水平数相等,则直接选择等水平正交表。如果各水平数不完全相等,则需要选择适合的混合水平正交表;

2.3.4 将水平映射到所选择的正交表。如果找到的正交表的因素数大于实际用例设计中的因素数,则可以选择忽略表中部分的因素,其并不影响由生成的测试集的可靠性[7]。如果选择的正交表中某个因素有剩余的水平数,则可以将这个因素余下的水平值依次循环迭代映射,以增加发现软件缺陷的概率。

3 实例分析

以某雷达软件的搜索截获模块中的单帧目标凝聚测角单元的测试为例。

3.1 被测单元分析

某雷达软件需求规格说明对搜索截获模块中的单帧目标凝聚测角单元功能描述如下:其主要功能是在一帧的时间内根据搜索得到的目标报告中的所有目标点的信息,按照一定的规则进行凝聚处理。然后根据凝聚后的目标信息计算方位角和俯仰角的角误差,最后形成单帧目标信息报告。根据上述规格说明描述,该单元的详细设计如图2所示,单帧凝聚测角单元的输入参数包括目标信息数组、方位角补偿、俯仰角补偿、方位角、俯仰角、目标个数等。最终得到的输出参数为凝聚后的目标距离、多普勒通道号、目标回波幅度以及相应的角误差等目标信息链表。

图2 单帧目标凝聚测角单元

3.2 用例设计分析

单帧目标凝聚测角单元测试用例设计具体流程如图3所示。

图3 被测单元用例设计流程图

具体步骤如下:

3.2.1 确定分类树中输入分类集合U。由上面的分析可知,单帧凝聚测角单元的输入参数较多,全部作为单元测试的输入会增加用例的个数,降低工程应用的可能。因此需要对其进行适当的裁剪。具体来说,目标信息数组中的多普勒通道号Dpl、目标距离Dist 以及目标回波幅度Amp 三个参数对整个单元的功能输出起关键影响,这里可以定义它们为主要参数。除上面三个可控参数外,其余参数因对单元功能输出影响较小,这里定义它们为次要参数。次要参数一般不出现在测试用例设计流程中,通常取常数。例如目标个数aimtnum 这个参数取常数3,即代表目标报告中有3 个目标,其余次要参数做同样处理。综上所述,此处分类集合U 可表示为U={Dpl,Dist,Amp}。

3.2.2 由(1)可得,目标报告中有3 个目标的信息。应用等价类划分法和边界值分析方法,对输入域中的主要参数选取具有代表性的取值,即划分U的各个输入子集。现定义3 个目标的多普勒通道号为Dpl=(dpl1,dpl2,dpl3),目标的距离Dist=(dist1,dist2,dist3),目标回波幅度Amp=(amp1,amp2,amp3),具体划分后的结果如表1所示。

表1 主要参数划分结果

3.2.3 利用CTE XL 生成测试用例,并设置约束关系对测试集进行初步精简。根据表2 和相应的约束关系,可以得到初始测试用例集C,如图4所示,共81 个测试用例。

图4 分类树工具CTE XL 生成用例集

3.2.4 将U 和表1 的划分结果与正交表的因素与水平一一对应,然后由因素和水平数选择匹配的正交表。此处因素共3 个,分别为多普勒通道号Dpl、目标距离单元号Dist 以及目标回波幅度Amp。各因素水平对应表1,分别为一个9 水平和2 个3 水平。因为三个因素的水平不全相等,所以应选择合适的混合水平正交表。同时,所选的正交表的因素数和对应水平不应小于上述因素数和水平数。所以,最终找到试验次数(Runs)最少的正交表L(3^9 9^1),裁剪后如表2所示。

表2 裁剪后的L(3^9 9^1)

3.2.5 根据上述的映射规则将对应水平映射到所选的正交表,即可得到精简后的最终测试用例集T,如表3所示。当然在人员和测试资源允许的情况下,还可以根据需要为T 从C 中挑选增加一些用例,这里不再详述。

3.3 测试用例设计结果分析

由表3 可以看出,初始测试用例集C 经过正交试验设计法筛选后,得到27 个测试用例。与C 中的81 个用例相比,不但基本覆盖了各主要参数的输入组合,而且总用例数精简了66%,大大减少了冗余用例,提高了测试效率,节约了测试成本。

表3 最终测试用例集T

4 结论

近年来软件测试领域中测试用例的精简优化问题得到了越来越多的关注[1]。本文主要针对以往分类树方法设计测试用例出现的冗余问题,提出了一种将分类树方法与正交试验设计法相结合的用例设计方法。较之原来仅使用分类树方法设计用例,该方法大幅减少了冗余测试用例,提升了测试效率,提高了分类树方法的工程应用价值。当然,围绕这种方法仍有一些工作要做,下一步准备将分类树工具与正交试验设计法在软件层面集成起来,进一步加强雷达软件测试的自动化程度,以缩短雷达软件的开发周期。

[1]Natalia Juristo,Ana M.Moreno.In search of what we experimentally know about unit testing[J].IEEE Software,2006,11:72-80.

[2]李乔,秦锋,郑啸.用分类树方法实现Web 服务测试用例的自动生成[J].计算机技术与发展,2007,17(11):197-200.

[3]朱连章,马桂真.基于形式规格说明和分类树方法生成软件测试用例[J].微计算机应用,2007,28(4):411-414.

[4]徐伟,王林章,李宣东.基于分类树的随机测试用例生成[J].计算机科学,2009,36(1):263-266.

[5]严俊,张健.组合测试:原理与方法[J].软件学报,2009,20(6):1393-1405.

[6]吴浩扬,常炳国.遗传算法的一种特例—正交试验设计法[J].软件学报,2001,12(1):148-153.

[7]孙俊若.正交法在雷达软件测试中应用[J].信息与电子工程,2009,7(6):501-505.

猜你喜欢

用例测试用例分类
UML用例间包含关系与泛化关系的比较与分析
UML用例模型中依赖关系的比较与分析
测试用例自动生成技术综述
分类算一算
回归测试中测试用例优化技术研究与探索
基于SmartUnit的安全通信系统单元测试用例自动生成
分类讨论求坐标
教你一招:数的分类
说说分类那些事
软件设计中用例详细需求描述的应用研究