正交试验法在连锁选择结构基本路径测试中的应用

2018-01-16 11:27苏晶张冬梅
科技视界 2018年27期

苏晶 张冬梅

【摘 要】基本路径测试是应用最广泛且测试覆盖率较强的一种动态白盒测试方法,但该方法在处理连锁选择结构时存在局限性。在分析了基本路径测试法和正交试验法的特点后,本文通过示例阐述了两者结合的测试方案,该方案可提高测试的效率和有效性。

【关键词】基本路径测试;正交试验法;连锁选择

中图分类号: TP311.53 文献标识码: A 文章编号: 2095-2457(2018)27-0156-002

DOI:10.19694/j.cnki.issn2095-2457.2018.27.069

【Abstract】Basic path testing is one of the most widely used dynamic white-box testing methods with high test coverage,but it has limitations in dealing with chain selection structures.After analyzing the characteristics of the basic path testing and the orthogonal test, this paper elaborates the test scheme of the combination of the two methods through examples,which can improve the efficiency and effectivenessof the test.

【Key words】Basic path testing;Orthogonal experiment;Chain selection

0 前言

基本路径测试是McCabe提出的一种动态白盒测试方法,该方法设计出的测试用例可保证在被测程序的每一条可执行语句上至少执行一次,而且每个条件在执行时都能夠取到真假两种值。因此该方法具有较强的覆盖率和较好的测试效果,且应用最为广泛。但该方法在处理连锁选择结构时,会出现独立路径难以确定、测试路径覆盖不均衡等问题,因此需要借助正交试验法进行路径的科学采样,以提高测试的效率和有效性。

1 基本路径测试面临问题

1.1 基本路径测试简介

基本路径测试[1,2]是在程序控制流程图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计测试用例的方法。该方法包括以下4个基本步骤。

(1)绘制程序控制流程图

控制流程图是描述程序控制流的一种图示方式,是对程序流程图的简化,可以更加突出的表示程序控制流的结构。控制流程图中包括结点和控制流线两种图形符号

(2)计算程序环路复杂性

环路复杂性是定量度量程序逻辑复杂度的一种尺度,在数量上表现为独立路径的条数,是确保程序控制流程图中每条控制流线至少覆盖一次所必须的测试用例数目的上界。

(3)确定独立路径集合

独立路径是指至少引入被测程序的一个新的可执行语句集或者一条新的条件路径。由独立路径组成的基本路径集合并不唯一,但每条路径是唯一的。

(4)设计测试用例

根据程序判定结点给出的条件,选择适当的数据以保证某一条路径可以被测试到,设计测试用例的输入数据和预期输出,确保基本路径集中的每一条路径的执行。

1.2 基本路径测试的局限性

当程序中判定多于一个时,形成的复杂选择结构可以分为两类:嵌套选择结构和连锁选择结构。

对于嵌套选择结构,若有n个判定语句,则其路径总数为n+1,其数目与基本路径测试法中独立路径数目相同,则满足基本路径覆盖的测试用例,即可实现对路径的100%覆盖。

对于连锁选择结构,若有n个判定语句,则其路径总数为2n,为了达成路径覆盖,需至少设计2n个测试用例,这种做法,虽然可保证测试的完备性,但随着n的数目的不断增加,测试路径呈现指数级的增长趋势,在有限时间和成本的条件下,无法保证测试的效率。

为了减轻测试负担,可采用基本路径测试法选取测试用例,其独立路径数目为n+1,与嵌套选择结构的路径数量级一致,可有效提高测试效率。但与此同时,也带来了新的问题。若从2n条总路径中随机挑选n条路径,并使其满足基本路径覆盖准则,一方面路径集合难以确定;另一方面,即使获取了路径集合,却未必兼顾多个连锁分支间的关联关系,不能保证测试路径的均匀分布。

综上所述,在连锁选择结构的基本路径测试中,需要借助于路径的科学采样方法,使得独立路径难以确定、测试路径覆盖不均衡等问题能够得到妥善解决。

1.3 正交试验法的引入

正交试验法是从大量的试验点中挑选出适量的、有代表性的点,应用伽罗瓦理论导出的正交表,合理安排实验的一种科学的试验设计方法。利用这种方法,可使所有的因子和水平在试验中均匀的分配与搭配,均匀规律的变化[3]。软件功能测试作为试验的一种,完全可以利用正交试验法进行测试数据的选择,以提高测试的效率。

正交表应用在软件测试中的表示形式为:

L测试用例数(输入条件取值数输入条件数)

利用正交试验法设计测试用例,较使用其他方法具有如下优点[4]:

(1)节省测试工作工时。由于把现成的规范化的正交表直接应用到测试用例选取中,不需要多步骤的推导,也不需要丰富的经验和创造力,可以有效减轻测试者的负担。

(2)可控制生成测试用例的数量。利用加权筛选,考虑测试输入条件与条件取值的重要程度及条件间的相互影响,做出一定的筛选,可以把生成测试用例的数量控制在允许范围内。

(3)測试用例具有一定的覆盖度。正交试验法是一种合理的、有效的抽样方法,对被测软件来说,测试用例的涉及范围在整体上比较均匀,可排除偏向于功能某个局部的可能性,与结构测试相配合,检出故障率可高达50%以上。

通过上述分析可以看出,正交试验法是科学有效的采样方法,可应用于独立路径的确定过程中,以达到提高测试效率和有效性的目的。

2 连锁选择结构的测试方案

以下是被测试源代码。

public static int test(int a,int b,int c){

1 int x=1;

2 if(a>=1)

3 x=x/a;

4 if(b==2)

5 x=x+2;

6 if(c<3)

7 x=x-1;

8 return x;

9 }

采用基本路径测试法和正交试验法生成测试用例的步骤如下。

(1)根据被测源代码导出的程序控制流程图如图1所示。

(2)依据程序控制流图计算环路复杂性。

McCabe给出了程序环路复杂性的三种计算方法。

①将环路复杂性定义为程序控制流程图中的区域数,则V(G)=区域数=4。

②设E为程序控制流程图的边数,N为图的结点数,则定义环路复杂性为V(G)=E-N+2=4。

③设P为程序控制流图中的判定结点数,判定结点即为图中出度大于1的结点,则定义环路复杂性为V(G)=P+1=4。

(3)根据程序环路复杂性确定独立路径数目。

该程序为连锁选择结构,总路径数为23=8,而依据步骤(2)计算出的环路复杂性,表明最多只需确定4条独立路径,即可保证程序控制流程图中每个结点及每条控制流线的覆盖。

(4)借助正交试验法进行路径科学采样,确定独立路径集合[5]。

通过分析可以看出,输入条件的个数即为判定结点个数3;由于判定结点均为逻辑值,则输入条件取值数为2。由此选择出合适的二水平正交表L4(23),如表1所示。

将正交表中的值0映射为判定结点取假分支,值1映射为判定结点取真分支,则从8条路径中采样出的4条路径分别为:

P1:1-2-4-6-8-9

P2:1-2-3-4-6-7-8-9

P3:1-2-4-5-6-7-8-9

P4:1-2-3-4-5-6-8-9

其中P4未包含之前3条路径未访问过的结点或弧,因此不需加入独立路径集合。

(5)设计测试用例。

根据独立路径集合中的3条独立路径,设计满足基本路径覆盖的测试用例:

①覆盖P1:a=0,b=1,c=3,预期输出x=1;

②覆盖P2:a=1,b=0,c=1,预期输出x=0;

③覆盖P3:a=0,b=2,c=1,预期输出x=2。

3 结论

采用基本路径测试法分析路径,正交试验法对路径进行科学采样,两种测试方法双剑合璧,可以有效解决连锁选择结构的测试问题。一方面,大大减少了测试用例的数量,力争用尽可能少的测试发现尽可能多的缺陷,保证了测试的效率;另一方面,测试用例不仅满足基本路径的覆盖准则,而且能够实现每个判定结点取值的均匀分配及判定结点取值间两两组合的均匀搭配,保证了测试的有效性。

【参考文献】

[1]佟伟光.软件测试(第二版)[M].北京:人民邮电出版社, 2015.

[2]佘凤.浅谈白盒测试之基本路径测试方法研究[J].软件工程师,2014,(12):17-18.

[3]王蕾.基于正交试验法的测试用例设计[J].电脑知识与技术,2010,6(21):5782-5783.

[4]郑人杰.软件测试[M].北京:人民邮电出版社,2011.

[5]向华.关于白盒测试基本方法的分析[J].江汉大学学报(自然科学版),2003,(1):38-41.