带约束的CRM系统组合测试用例设计研究
- 格式:doc
- 大小:28.00 KB
- 文档页数:4
带约束的CRM系统组合测试用例设计研究
【摘 要】针对如何为存在约束条件的CRM系统生成组合测试用例集问题,提出了基于组合测试算法的约束组合测试法。根据系统的具体特点,采用输入划分法和因素提取法对输入因素进行预处理,再采用正交矩阵法,获得最终的测试用例集,实验结果表明,该方法能有效地减少测试用例数目,提高测试效率。
【关键词】组合测试;约束条件;正交矩阵;输入划分法;因素提取法
软件系统的缺陷可能来自单个因素,也可能来自2个或2个以上因素的相互作用和互相影响而产生。因此测试就需要对各个因素之间各种可能的组合进行测试。一个具有k个参数,每个参数分别有v1,v2,…vk个可能取值的系统,穷举测试需要个测试用例。对于现实的系统而言,这几乎都是不太可能完成的。组合测试是一种科学有效的测试用例生成技术,它旨在用较小规模的测试用例子集完成高质量的软件测试。
1.组合测试的原理
1.1 组合测试的基本概念
变量(Variable):在组合测试的范畴中,变量是待测软件的输入。
水平(Level):在组合测试的范畴中,水平就是变量的可能取值。
强度(Strength):在组合测试的范畴中,强度就是变量与变量相互作用的程度。当在某个组合测试中,强度为二则意味着只考虑变量之间的两两组合。
Kuhn和Reilly分析了Mozilla浏览器的错误报告记录,发现70%的错误是由2个参数的相互作用触发的,超过90%的错误是由3个以内的参数相互作用形成的[1],这样我们可以选择测试用例,使得对于任意t(一般t为2或3)个参数,这t个参数的所有可能取值的组合至少被一个测试用例覆盖,我们称这种测试准则为t组合测试
目前,组合测试的理论方面主要有两个分支,一是基于计算机科学的分支,另一是基于纯数学方法的分支。
基于计算机科学的分支这一方向上,通常都是使用诸如贪心算法等为基础的启发式算法,得到的是较优解而非最优解。目前算法的性能上尚不尽如人意,离最优解也存在较大差距。
在基于纯数学方法的分支这一方向上,经典方法是正交矩阵法。正交矩阵法有可能得到最优解。该方法根据正交性从全面试验中挑选出部分有代表性的点进行试验,这些有代表性的点具备了“均匀分散,齐整可比”的特点,正交试验设计
是一种基于正交表的、高效率、快速、经济的试验。
正交表实际是一个二维矩阵,可以实现两两参数覆盖的测试要求。针对不同的参数数量和值域范围,选择适当的正交表,即可得到优化的测试用例。
根据大量理论和实践证明,正交测试的优势主要有[2](1)保证所有参数变量成对组合;(2)生成的测试集在组合全集中是均匀分布的;(3)与人工生成测试集相比,不会遗漏某些变量组合,可靠性高,实现过程简单。
正交表构造过程虽然简单,但是常用的标准正交表不能涵盖所有因素与水平的情况,因此在选择正交表的过程中往往需要测试设计人员调整因素与水平的数量,以满足现有的正交表。
1.2 约束条件下的组合用例生成
对于传统的组合测试方法,其前提是各因素之间互不影响,但在实际应用中,软件的各个因素间通常都会存在一定的依赖关系,这会导致取值组合会受到约束。Grindal和Offutt等人提出因素提取法和输入划分两种策略,对输入因素进行预处理。
因素提取策略将存在受限组合的多个因素提取为一个新的因素,这些因素所有合法取值组合均成为新因素的可选取值。
输入划分策略将原输入关系表划分为多个不包含受限组合的输入关系子表,并在这些子表的基础上生成测试用例集,在所有子表分别生成组合测试用例集后,再将测试用例集合并,即可避免受限组合的出现。
这两种方法能够较好的应对现实应用中的受约束的情况。但需要根据具体情况来对因子进行组合或者对输入关系表进行划分。
2.基于输入划分法的组合测试用例生成
对于一个电话销售企业来说,订单系统是其核心系统。订单系统的全新版本上线需要经过较系统的验收测试。由于工程进度的关系,验收测试的目标设定为主要流程的全面测试。
经过对现有业务流程的分析,确定系统有如下参数以及可能的取值,如表1所示,约束如表2所示
从上述约束可以看出,所有这7种因素彼此之间都有约束,如果直接采用因素提取法,将有相关关系的约束作为新的抽象的取值集合,那么正交因子法将失去意义,因为所有的因素都将组合在一起,成为一个大的有多种取值的抽象因素。
仔细分析所有的约束,发现最主要的因素之间的互相影响来自下单组,下单
组的不同会带来很多其他因素可能取值的变化。而下单组本身有3种可能的取值。对此,我们可以采用根据下单组的不同分出3种独立的测试集合,在3种集合中分别采用因素提取法和正交因子法,得出测试用例后再合并,即输入划分法。
首先来分析最复杂的hunter组。在设定下单组为hunter组的情况下,主要的因素互相影响在于付款方式与快递方式,其他参数和取值均没有变化,根据约束1,2,4得出一个抽象因素:付款+快递组合方式,如表3所示。
对于farmer组,其情形基本和hunter组一致,唯一的区别仅在于去除序号为8的运费到付和到付件的组合方式。
对于Inbound组,前3个参数仅有唯一的取值,因此可以去除,仅剩下2个因素:订单状态和 付款+快递组合方式,而对于付款+快递组合方式而言,和farmer是一致的,即去除序号为8的组合方式。
因此,对于hunter组来说,其参数与水平情况是3个2水平,1个5水平和1个8水平,即2 5 8,类似的farmer组为2 5 7,inbound组为5 7,查找正交表,最合适的为L48(2 6 8),去除多余的因素和水平,以及去重后,得到hunter的测试用例共48个,farmer的测试用例46个,inbound的测试用例数为35个,三者合并起来一共得到测试用例129个。3.结论
本次测试,如果需要完全的测试,将会有3*2*2*2*3*5*6= 2160个测试用例,测试用例的数量级巨大,测试工作耗费人力过多。但是由于所有参数之间彼此有很大的约束关系,如果完全无视该约束关系,设计出的测试用例,会导致近1/3的测试用例均无意义,在这样的情况下失去了正交分析法“均匀分散,齐整可比”的优点,既失去代表性,也失去完整性。
通过改进测试用例的设计过程,根据对其他因素影响最大的核心因子挑出来作为划分依据,将测试用例划分成3个子集,对每个子集进行组合因子的分析,在此基础上再利用正交分析法对修正后的因子和水平查找正交表,生成测试用例,最后合并结果集,最终形成129个有效测试用例。比最初的测试用例集合2160个有了很大的节省。
本次测试对于如何将正交分析法应用到参数间彼此有影响的情况进行了一次有益的尝试。在实际测试工作中,参数间毫无影响的情形非常少见,对于影响局限在2-3个因子之间,且每个因子的水平数为数不多时,可以考虑采用Grindal和Offutt等人提出的因素提取法,将彼此有影响的因子合并起来取值,并得到一个全新的抽象因子代替原有因子。但是像本例这种几乎所有的因子之间都涉及到彼此影响,则更适合输入划分法,找出关键的核心因子,按照它将原有问题划分为较小的子集,隔离因素之间的互相影响,在局部约束涉及的因素很少时,采用因素提取法,对输入进行预处理后,再采用正交分析法,最后合并所有自己的测试用例,得出最终的测试用例集。
参考文献:
[1]. 28. Kuhn DR, Reilly MJ (2002) An investigation of the applicability of
design of experiments to software testing. Proc. 27th Annual NASA Goddard/IEE
Software Engineering Workshop (SEW-27’02) Dennis Shasha, Philippe Bonnel.
[2]. TANG Hong-xia,FANG Mu-yun,LIU Ming,QIN Fei. Test case generation
for software based on orthogonal experiment design.计算机工程与设计,2008.29(14).
[3].王子元,徐宝文,聂长海. 组合测试用例生成技术[J]. 计算机科学与探索,2008.2(6).
[4].陈翔,顾庆,王新平,陈道蓄. .组合测试研究进展[J]. 计算机科学,2010.3(37).
[5].严俊,张健. 组合测试:原理与方法[J]. 软件学报,2009.6.
(江苏南京工业职业技术学院210046)。