维普资讯 http://www.cqvip.com 第34卷增刊I 北京化工大学学报 Vo1.34,Sup.I 2007正 JOURNAL OF BEIJING UNIVERSITY OF CHEMICA L TECHNOLOGY 2007 一种具有优先级的参数配对组合覆盖测试集生成方法 朱幼 高建华 (上海师范大学计算机科学与工程系,上海200234) 摘要:参数的配对组合测试广泛用于软件系统错误的检测。然而在实际参数组合测试的应用中,由于时间或预 算等原因,无法运行整个测试集。在此情况下,必须设置测试案例的优先级。本文引入优先级权值的概念,使 用一个贪心算法为已生成的参数配对组合覆盖测试集按照优先级高低进行排序。不论测试在任何时刻中断,都可 确保最重要的测试已被运行。 关键词:配对组合测试;测试优先级;优先级权值 中图分类号:U412.6 t 引 言 究者致力于这两种方法的研究。 Elbaum介绍了几种优先级策略,提出某种优先 参数的配对组合测试要求系统中每一对输入参 级策略在某些特定的情况使测试结果更优L4 ; 数,它们每一个有效值的组合都必须被至少一个测 Rothermel也研究了多种优先级策略,其研究结果显 试案例覆盖。实践表明,参数的配对组合测试是对 示:各种优先级策略有优有劣,即使具有最差性能的 于各种系统的一种实用且有效的测试方法,因为许 优先级策略也能够提高错误检测率[ ;Srivastava和 多软件系统的故障是测试参数及其之间的相互作用 Thiagarajan采用用于回归测试的系统修改作为优 引起的u0 J。 先级设定标准,使得更早发现系统错误 J。另外, 本文提出的方法扩展了参数的配对组合测试方 Mark0v链模型的构造实现了在测试集生成过程中 法,综合考虑测试案例的优先级。测试案例的优先 考虑测试案例的优先级因素 。Bryce和Colboum 级问题描述为:1)T,测试案例集;2)S,测试案例按 采用了“一次一测试案例”的贪心算法——密度确定 照不同顺序排列的测试案例集T的排列;3)f,排列 算法,根据参数、取值及优先级权值等输入直接构造 S到实数值的对应函数;4)寻找S∈S,V S ∈S, 带有优先级的配对组合覆盖测试集 J。 f(S)≥f(S )。 本文从另一个角度,介绍了一种贪心算法为已 厂是一个估值函数,决定优先级的高低,函数生成的参数配对组合覆盖测试集进行排序。本文并 .厂 的选择决定了软件测试案例按照怎样的标准确立优 没有提出新的优先级判定标准,而是让测试人员根 先级的高低。例如,优先级的高低可以取决于于代 据自己所选择的标准引入权值,即表示优先级的信 码覆盖率、代价估计、最近修改的代码域、测试人员 息。这些权值信息将被作为输入,使用一个算法自 倾向测试的代码域等等 ]。 动为配对组合覆盖测试集按照优先级的高低进行排 参数的配对组合测试中,构造有序的测试集有 序,使该测试集尽早覆盖最大的权值。保证不论测 两种方法:根据优先级设定标准为已生成的测试集 试集的运行被某种原因中断,此时具有最高优先级 重新排序;在测试集的生成过程中确定各测试案例 的测试案例已被运行。 的优先级。本文采用第一种方法。目前已有很多研 1 定义及背景 收稿Et期:2007—06—15 假设某个系统中,各参数及其有效取值情况如 基金项目:国家自然科学基金(60673067);上海市自然科学 表1所示。共有3个参数,参数P。有4个取值,参 基金(04ZR14105) 数P 有3个取值,参数P2有2个取值。在表3中 第一作者:女,1984年生,硕士生 每一个有效取值都标识一个唯一的ID。将表1显 E—mail:dogge1984@126.com 示的内容作为输入,可能的组合有4×3×2=24个。 维普资讯 http://www.cqvip.com 北京化工大学学报 表1 某系统包含4‘个参数,每个参数的有效取值情况 Table 1 A system、 ̄zith 4 parameters and there values 参数 0 P0 2 p1 6 p2 在配对组合测试中,仅要求系统中’每一对输入 参数的每一个有效值的组合都必须被测试集中至少 一个测试案例覆盖。根据IPO配对组合覆盖测试 集生成策略[ ,该例的配对组合测试集由表2显示, 仅包含了12个测试案例。测试案例的减少在大型 系统上将更为显著,例如,一个拥有20个参数的系 统,每个参数的取值均个数为5,则需要5 。=95, 367,431,640,625个测试案例;而配对组合测试集 中仅仅需要45个测试案例即可覆盖所有配对。 表2 IPO策略生成的配对组合覆盖测试集 Table 2 The pair—wise coverage test set by IP0 strategy 测试案例 p0 p1 p2 该配对组合测试集中每一个测试案例具有相同 的优先级。 为构造带有优先级的测试集,必须引入优先级 权值(weights)的概j ,以下简称“W值”。令参数表 示为P ..,P ,假设对任意一个P ,含有z 个有效 取值: “,…, ;对于任意一个r ,对应一个数 值60 ,一1.0≤60 ≤1.0,表示该取值的优先级高 低,其中一1.0表示最低优先级,1.0表示最高优先 级。表1举例的系统中,为每一个参数的每一个取 值增加W值,如表3括号中数值所示。 一个测试案例对应着各参数的不同取值,当参 数P 取值为r ,参数p 取值为rf,其复合优先级权 值为 , 。则一个测试案例的W值总和为 1 2 3 4 5 6 7 8 9 n cc,“ ,rJ。如测试案例(0(・2),4(・2),7 j (.1))的W值总和计算为:0.2×0.2+0.2×0.1+ 0.2×0.1=0.08。 表3参数和参数有效取值及优先级权值的输入 Table 3 Input of parameters and their values and weights 参数 VO Vl V2 V3 P0 0(.2) 1(.1) 2(.1) 3(.1) p1 4(.2) 5(.3) 6(.3) 一 p2 7(.1)8(.9) 一 一 每一个覆盖配对的W值都影响着一个测试案 例的W值总和。但是在实际应用中,计算每一个测 试案例的总优先级权值并不是简单的求和运算。当 向测试集中添加一个新的测试案例的时候,某个配 对(ri,ri)可能是第一_次被测试集覆盖,也可能已被 测试集中的某个测试案例覆盖。在第一种情况下, W值增量为 coj. ;第二种情况下,W值增量为 零。因此新加入的测试案例的W值增量总和是该 测试案例所覆盖的所有配对的W值增量之和。如: 测试案例A(0,4,7)已覆盖配对(0,4)(0,7)(4,7), 当生成新的测试案例B(0,6,7),也覆盖配对(0,7), 由配对(0,7)所增加的W值并不是0.2×O.1而是 0。因此测试案例B的W值为0.2×0.3+0.3× 0.1=0.09 2 算法 本文采用一个权值更新算法(UWA,Updating Weights Algorithm)来为一个已生成的配对组合覆 盖测试集按照优先级的大小排序。 2.1算法实现 算法框架由以下伪代码表示 1.TestSet UWA(TestSet pairwiseTestSet, Weight[]weightForEachValueOfEachParameter){ 2.TestSet orderedPairwiseTestSet=null; 3. Weights[]weightsForEachTestCase . = initialization(weightForEachValueOf— EachParameter); 4.TestCase selectedTestCase null; 5. while(pairwiseTestSet!=nul1){ 6. UpdatingWeights(pairwiseTestSet,select— edTestCase,weightsForEachTestCase); 维普资讯 http://www.cqvip.com 增刊I 朱劫等:一种具有优先级的参数配对组合覆盖测试集生成方法 7. selectedI、estCase = SelectCaseWith— LargestWeight(weightForEachTestCase); 8. Remove(selectedTestCase,pairwiseTest— Set); 9. Add(selectedTestCase,orderedPair— wiseTestSet); 10. } 1 1.. return orderedPairwiseTestSet; 12. } 算法的输入是一个已生成的配对组合覆盖测试 集,以及系统每个参数的每个有效取值所对应的W 值(1行)。 接着是一些初始化工作(2~4行)。首先,or deredPairwiseTestSet是一个空配对组合覆盖测试 集,用于存储有序的测试案例。数组weightsForE. achTestCase用于存放每个测试案例的W值总和, 该值随着whi一一le循环的推进在变化。s一一一~一一。 electedTest— Case表示每一次循环中选择出的具有最大W值总 和的测试案例。 循环直到输入的配对组合覆盖测试集中的所有 测试案例都被选择出停止(5行)。 算法最核心的部分即为输入的配对组合覆盖测 试集中的测试案例更新W值总和。算法框架如下 伪代码所示。即上一次循环中被选择的测试案例覆 盖了若干配对,若其他未被选择的测试案例也覆盖 了该配对,则该测试案例W值总和的计算中应除去 该配对所对应的W值。 1. Weights[]Upda tingWeights(TestSet testSet, TestCase selectedtestCase,Weights[]weitht){ 2. if(selectedTestCase==nul1) 3. return weight; 4. else{ 5.Pairs[】pairs=pairsCoveredBy selected— Case; 6. return weight—Weights(pairs); 7. } 8. } 接着在更新过的weightForEachTestCase中选 择出具有最大W值总和的测试案例(7行)。最后 从原来的配对组合覆盖测试集中除去该测试案例, 并将其加入到有序测试集中(9,10行)。 2.2应用实例 本节采用一个例=产使用该算法为已生成的配对 选择具有最大W值和的测试案例2:(0,5,8),n 具有相同硼值和的测试案例可以随机选择。此时 被选择的测试案例覆盖了配对(0,5)(0,8)和(5,8), 分别对应W值0.06,0.18和0.27。此时需要对剩 余的测试案例进行W值和的更新,即覆盖到配对 (0,5)(0,8)和(5,8)的测试案例应减去相应的W 值。更新后的剩余测试案例W值和如表5所示。 表5更新后的测试案例W值和 Table 5 Upgraded sum of weights of each test case 测试案例P0 Pl P2 初始 值和 0.08 0.11 0.29 0.07 0.51 0.05 0.12 0.07 0.05 0.39 0.39 如:测试案例8:(2,5,8),测试案例11:(3,5,8) 由于覆盖了配对(5,8)权值都由0.39更新为0.12。 此时选择具有最大W值和的测试案例6:(1, 1 3 维普资讯 http://www.cqvip.com ・42・ 北京化工大学学报 2007正 6,8)。以此类推,直到输入的已生成的配对组合测 参考文献: 试案例全部被选择。表6为最终生成的按照优先级 [1] MAITY S,NAYAK A.Improved test generation algo— 高低排列的有序的配对组合覆盖测试集。 rithms for pair-wise testing[C]∥16th IEEE International Symposium on Software Reliability Engineering(ISSRE’ 表6根据举例输出的有序的配对组合覆盖测试集 05).2005:235—244. Table 6 Output of the ordered pair—wise coverage test set [2]LEI Y,TAI K C.In-Parameter-Order:A test genera— tion strategy for pairwise testing[C]∥Technical Report TR一2001—03,Dept of Computer Science,North Carolina State Univ,2001. [3]MANDL R.Orthogonal latin squares:An application of experimental design to compiler testing[J].Comm ACM,1985,28(10):1054—1058. [4] ELBAuM S,MALISHEVSKY A,ROTHERMEL G. Test case prioritization:A family of empirical studies [J].IEEE Transaction On Software Engineering,2002, 18(2):159—182. [5] ROTHERMEL G R,UNTCH RH,CHU C.,et a1. Prioritizing test cases for regression testing[J].ACM Transaction Software Engineering Methodology,2001, 27(10):929—948. [6] SRIVASTAVA A,THIAGARAJAN J.Effectively pri— 3 结论 oritizing tests in development environment[C]∥Proceed— ings of the International Symposium on Software Testing 本文介绍的方法将两者结合。评估一个配对组 and Analysis,2002:97—106. 合测试集生成策略优劣的标准通常有:准确性、执行 [7] wHITTAKER J A,THOMASON M G.A markov 时间、一致性以及可适用性。本文增加了一个标准: chain model for statistical software testing[J].IEEE 是否可以根据测试员的要求为测试案例设定优先 Transaction on Software Engineering,1994,2(10): 812—824. 级。本文研究为已生成的配对组合覆盖测试集引入 [8] BRYCE R C,COLBOURN C J.Test prioritization for 优先级权值,并进行排序,最终得到按照优先级高低 pairwise interaction coverage[C]∥Proceeding of the First 排列的有序的配对组合覆盖测试集。 International Workshop on Advances in Model—based Testing,2005:1—7. Prioritized test generation method for pair-wise testing ZHU Jie GAO JianHua (Department of Computer Science and Engineering,Shanghai Normal University,Shanghai 200234,China) Abstract:Interaction testing is widely used to detect faults in software systems.In many applications where in— teraction testing is needed,the whole test set can not be run completely due to time or budget constraints.Un— der such situations,it is essential to prioritize the tests.In this paper,a greedy algorithm is adopted to prioritize generated pair-wise coverage test set with driven weights,SO that whenever the testing is corrupted,interactions deemed most important are tested. Key words:pair-wise interaction coverage;test prioritization;weights