正交方法在商业智能系统测试中的应用
摘 要
随着数据规模的增加和分析要求的提高,商业智能类系统的复杂度越来越高。在对应的软件测试过程中,无法在有限的时间和资源条件下进行全面测试。在这种情况下,利用正交表的特性,可大量减少测试用例的数量。本文针对商业智能类系统的设计特点,提出了不同类型维度的取值和组合的处理方法,并利用实际案例证明了方法的有效性。
【关键词】正交试验 软件测试 商业智能
数据的价值日益为人们所重视,各种数据处理分析工具层出不穷,各类机构、企业都在设法利用各种不同的技术和算法来从数据中获取价值。但随着数据量的增大及分析的深入,对某一事实(变量)的分析维度也越来越多,商业智能类软件系统的设计也越来越复杂,与之相对应的测试工作量也越来越大,要求也越来越高,特别是在测试用例的设计上,为了覆盖不同维度的组合,需要设计大量的测试用例,消耗大量的资源。在这种情况下,本文主要针对如何利用正交实验的原理,在不影响测试覆盖的前提下,减少测试用例的数量进行研究,并针对商业智能类应用的特点,对因素、水平的选择提出有效的方法
1 正交试验基本原理
正交试验设计的基本原理是利用正交表的特性来安排试验,保证多种因素变化下测试结果的有效性。试验过程利用正交表的“均匀分散”、“整齐可比”的特性,从每一个因素(变量,商业智能系统中一般为维度)中选择部分有代表性的取值,来组成数组试验,在无须进行全面试验的情况下,通过有限的组合数据,对结果数据进行分析,从而推测出全面试验的可能结果。简单来讲,正交试验是在全部水平(取值)组合中,挑选部分有代表性的组合,通过对这部分结果的分析了解全面试验的情况。
正交表一般用LR(Nf)的形式来表示。上述表达式中的符号R,代表行数(Runs),即正交表中的行的个数,也就是试验的次数;上述表达式中的f,代表因素数(Factors),表示正交表中列的个数;上述表达式的N,代表水平数(Level),表示单个因素能够取得的值的最大个数。例如L4(23)代表的正交表可观察3个因素,每个因素最多有2个不同取值,需要做4次试验。具体如表1所示:
在同一张正交表中,每个因素的每个水平出现的次数是完全相同的。由于在试验中每个因素的每个水平与其它因素的每个水平参与试验的机率是完全相同的,这就保证了在各个水平中最大程度的排除了其它因素水平的干扰,因而可以最有效地进行比较和对结果进行分析。
同时在同一张正交表中,任意两列(两个因素)的水平搭配(横向水平对)是完全相同的。这样就保证了试验条件均衡地分散在因素水平的完全组合之中,因而具有很强的代表性。因此,部分试验寻找的最优条件或者试验结果与全面试验所找的有一致的趋势。
根据正交表“均衡分散,整齐可比”的特性,任一列的各水平出现的次数相等,任两列间所有水平组合出现次数相等,使得任一因素各水平的试验条件相同。可以选择代表性强的试验点,减少不必要试验的次数,如图1所示,3因素3水平的完全试验需要进行33=27次试验,而正交试验只选择其中代表性强的9个点达到预期目的。
2 软件测试中的应用原则
在软件测试过程中,需要根据软件的实际输入输出情况,选择恰当的正交表。不同因素和水平的正交表已经被设计好,企业在实际应用过程中可以直接选用,或者采用一些自动化工具直接生成,基本可按照如下步骤进行:
(1)根据被测软件的输入个数,确定因素数(Factors)。
(2)根据每个输入的取值范围确定正交表的水平数(Levels)。
(3)在保证正交表的因素数大于等于软件的输入数,水平数大于等于输入最大取值个数的前提下,选择试验次数最少的正交表。
(4)将正交表的每次试验映射为一个测试用例。
3 商业智能系统测试的特点
在传统的商业智能类应用中,特别是企业级应用中,数据仓库的设计是整个系统的重点,为了能够为顶层数据分析提供支持,一般会根据企业业务情况设计多个业务场景,储存大量明细、历史数据,同时为了能够方便关联查询,多维分析,常采用的模型包括星型模型、雪花模型以及星系模型[7][8],当测试对象为以之上模型为基础设计的系统时,要验证结果数据的准确性,需要对模型中的维度组合进行验证,为了有效覆盖,通常需要设计大量的测试用例。随着大数据技术的发展与普及,对海量数据的存储与分析已经变得越来越高效,在数据分析的过程中,需要不断对所选择的模型进行优化及验证,同事也需要设计大量的测试场景和用例,如何有效的减少测试用例数量,优化投入产出比是企业在实际工作中需要考虑的重点。
在验证分析系统的准确性的时候,假设设计了4个维度,每个维度有4种取值,那么完全覆盖测试,需要设计44 =256个用例,随着维度和取值的增加,测试用例数呈几何级数增长,在有限的时间和人力条件下,对于企业级的应用,完全覆盖测试是不可能实现的,那么需要根据实际情况,探索有效减少测试用例的方法。
4 不同维度的处理模式
在商业智能系统中,因素一般为不同的维度,水平一般为因素的取值(码表)。由于维度数量多,取值范围多样,所以需要针对这类系统进行特别处理。
对于存在多级关系的维度:例如机构维度,省级机构和市级机构之间存在依赖关系,具体取值可能为中国-山东-济南,需要对不同层级的进行单独取值。
对于水平数很多的维度,仍以机构维度举例,省一级取值可能超过30个,所有取值作为水平数,会极大增加用例个数,需要利用等价类的方法,减少取值。
对于维度数目过多的情况,例如仅针对汽车销售额的事实分析,可能涉及到的维度包括时间,网点,销售人员,汽车型号,促销方式,打折额度等,数量可能超过十个,企业级的数据仓库在设计时可能有上百个维度,这些维度在进行用例设计时,不能同时将所有维度作为因素选择正交表,一般情况下可针对不同应用场景选择不同的维度组合,或者根据分析模型的设计,将数个维度作为一组,成为一个因素选择正交表。
对于存在连续取值的维度,例如时间维度,一般利用边界值选择数个区间段作为水平数。
5 应用实例
图2为某商业智能查询系统的界面部分截图,其中机构到县级支公司,销售人员为十万数量级,且同受理机构存在关联关系。
一般情况下,测试数据为某省级支公司的子集,针对此类填录部分的数据,由于机构人员信息和其他维度不相关联,可将填录部分单独设计测试用例,以减少总体用例数量,针对日期,类别,险种,代码选用4因素3水平的正交表,为保密期间,实际数据以代码替代。最终形成9个测试用例,如表2所示。
6 结论
利用正交测试的方法,可以在有限的人力物力条件下,在不影响测试有效性的基础上,减少系统测试用例的数量的同时降低随机测试的盲目性。
参考文献
[1]肖天灿,陈志刚.数据挖掘概念及国内外现状[J].计算机光盘软件与应用,2012(20):13-14.
[2]高猛,冯飞,徐璐.软件测试的有效方法[M].北京:清华大学出版社,2008:539-550.
[3]陈策,王凤泰,赵绍才.正交试验及其在软件测试用例设计中的应用[J].计算机应用与软件,2008(07):158-160.
[4]徐仲安,王天保等.正交试验设计法简介[J].科技情报开发与经济,2002.
[5]何苗,朱有德.正交试验在软件测试用例设计中的应用[J].光电技术应用,2013.
[6]于秀山.正交试验设计方法在测试用例设计中的应用[J].计算机工程与应用,2004(07):62-63,76.
[7]蔡立志,阎婷.大数据背景下软件测试的挑战与展望[J].计算机应用与软件,2014.
[8]范明,孟小峰.数据挖掘概念与技术[M].北京:机械工业出版社,2010.
作者单位
中国人寿保险股份有限公司研发中心 北京市 100000