一种基于优先级的成对组合测试方法

文档序号:6571558阅读:361来源:国知局
专利名称:一种基于优先级的成对组合测试方法
技术领域
本发明涉及一种基于优先级的成对组合测试方法,特别涉及系统參数取值优先级的定义以及根据优先级生成供组合测试的用例集的方法,属于软件测试的技术领域。
背景技术
软件测试是构建高可信软件的关键环节。统计数据表明,该环节一般占软件开发总成本的50%以上,有效的测试方法是降低软件开发成本的关键。现在的计算机系统正变得愈来愈庞大和复杂,往往具有较多的输入參数,并且每个參数可能有多个不同的取值或等价类划分。最充分的测试方法是设计出覆盖參数间所有组合的测试用例集,但产生的测试用例集规模往往过于庞大,在成本上无法接受。例如对ー个具有k个參数的待测系统,
这些參数分别有Vl、V2、…、vk个可能取值,完全测试这个系统需要个测试用例。对
于一般的被测系统而言,这个组合数是ー个很庞大的数字。如何从中选择ー个规模较小的子集作为测试用例集是测试用例生成中ー个很重要的问题。在测试性能和代价上的ー个折衷就是组合测试。因为根据观察,对于很多应用程序来说,很多程序错误都是由少数几个參数的相互作用导致的。例如=Kuhn和Reilly分析了 Mozilla浏览器的错误报告记录,发现超过70%的错误是由某两个參数的相互作用触发的,超过90%的错误是由3个以内的參数互相作用而引发的。这样,我们可以选择ー些测试用例,使得对于任意t(t是ー个小的正整数,一般是2或者3)个參数,这t个參数的所有可能取值的组合至少被ー个测试用例覆盖。我们称这种测试准则为t组合测试。特别的,当t值为2时,这种2组合测试又被称为成对组合测试。下面用一个简单的例子来说明组合测试方法。表I描述了ー个电子商务系统,这个系统有4个參数,每个參数有3个可选值,完全测试该系统需要34=81个测试用例。采用成对组合测试准则,测试时仅需要表2中的9个测试用例,即可覆盖任意两个參数的所有取
值组合。表I 一个四參数系统
权利要求
1.一种基于优先级的成对组合测试方法,其特征在于包括优先级模型建立和测试用例生成步骤,其中所述优先级模型建立步骤包括参数取值优先级的定义、优先权值的计算、参数取值二元组的优先权值以及测试用例的优先权值;所述测试用例生成步骤包括通过贪心算法生成候选测试用例以及利用遗传算法生成最优测试用例两部分; 优先级影响因素包括代码覆盖率、成本度量、距上次修改的时间度量、修改频度、用户使用频度、取值范围; 优先级计算公式如公式I :P max -Pm*H*V* W=C X η' +-X η2 +r x 7]:+-x η4+-x η5 十 ^~ x η6公式 Ip max -p minJfl max14 maxV max 其中,\至H6分别表示每个影响因素在总的优先权值中的比例,均为O至I间的小数,且H1+η 2+rU+rU+rU+rU=I ; 表示某个参数取值的优先权值;0表示代码覆盖率,为O到I中的一个小数;ρ表示该测试用例的测试成本,Pmax表示用例集中的最大成本,Pmin表示最小成本表示代码从修改到当前的时间度量,它满足下面的公式2 ;111表示修改频度,m*表示该参数实际修改次数,mmax表示系统中修改次数最多的参数的修改次数;u表示用户使用频度,u*表示该参数实际使用次数的预估值,Ufflax表示系统中使用次数最多的参数使用次数的预估值^表示取值范围,/表示该参数实际取值个数,Vmax表示系统中取值个数最多的参数的取值个数; t 公式2 r = e a 其中,t为离最近一次修改所持续的时间,α为常数,该公式符合遗忘规律曲线,即刚修改过的代码其度量值最大为1,随着时间推移逐渐变小; 所述参数取值二元组的优先权值为二元组中两取值的权值之积; 所述测试用例的优先权值为它覆盖的首次出现的二元组的权值之和; 所述贪心算法的贪心策略定义为选取一个参数的取值,使得它与已经固定的参数所组成的所有未被覆盖的二元组的复合权值最大; 所述遗传算法的编码方式定义为采用二进制编码方式,一个参数f的可能取值个数为t,如果2n-l < t ^ 2n,那么该参数的编码位数为n ;若编码表示个数为m,参数取值个数为n,且m > n,则后m_n个编码表示前m_n个权值最大的参数取值; 所述遗传算法的适应度函数定义为将测试用例的复合权值作为适应度,即它覆盖的首次出现的二元组的权值之和,适应度函数用于计算此复合权值; 所述遗传算法的单点交叉定义为将两个编码序列在同一点出断开,并将它们断开的部分交叉拼接。
2.如权利要求I所述的基于优先级的成对组合测试方法,其特征在于,包括如下步骤 步骤1,根据优先级计算公式,计算出每个参数的每个取值的优先权值,求出由所有参数的取值组成的二元组及其权值,并将它们放入未被覆盖的二元组集合Uncover ; 步骤2,按照贪心算法,从Uncover集中根据参数取值的优先权值情况求得M个候选测试用例; 步骤3,按照遗传算法,将步骤2所得候选测试用例编码并进行进化操作,当遗传算法停止时,挑出最优个体加入测试用例集中,并从Uncover集中删去被覆盖的二元组;若Uncover集未空且测试资源仍然允许测试更多的测试用例,则转向步骤2 ;否则转向步骤4 ; 步骤4,按照所得测试用例集的优先顺序,对系统中的参数逐一测试。
3.如权利要求2所述的基于优先级的成对组合测试方法,其特征在于,所述步骤2的具体实施步骤如下 步骤2-1,从Uncover集中挑出权值前M大的二元组h,其中I < i < M,若Uncover集中二元组个数不足M个,则全部挑出; 步骤2-2,根据二元组ti确定候选测试用例test,的中两个参数的取值,i定义与步骤2-1相同; 步骤2-3,对M个测试用例剩下的未固定的参数,按顺序依次按照贪心策略确定取值,最后得到testi;结束步骤2。
4.根据权利要求2所述的基于优先级的成对组合测试方法,其特征在于,所述步骤3的具体实施步骤如下 步骤3-1,对步骤2得到的M个测试用例进行编码; 步骤3-2,利用适应度函数求出所述测试用例的适应度; 若进化次数足够,则转向步骤3-6 ;否则转向步骤3-3 ; 步骤3-3,选择前Pmax比例的适应度较高的个体,同时选取后Pmin比例的适应度较低的个体参加下一代的进化过程; 步骤3-4,将步骤3-3选取的个体进行单点交叉; 步骤3-5,对步骤3-4所得的个体按概率Pm随机对序列中的某位做二进制取反操作;转向步骤3-2 ; 步骤3-6,选取适应度最优的个体加入测试用例集中,并从Uncover集中删去被覆盖的二元组,结束步骤3。
全文摘要
本发明公开了一种基于优先级的成对组合测试方法,属于软件测试技术领域。所述成对组合测试方法通过优先级确定规则为每个待测试参数的各取值定义其优先权值;按照一维扩展策略根据待测参数各取值的优先级采用贪心算法得到M个候选测试用例;对候选测试用例编码,可以得到一个初始种群,然后用本发明提出的遗传算法对其进化,当遗传算法停止时,选取其中最优的个体,将其加入测试用例集;根据测试条件限制执行上述步骤一定的次数,测试时按照测试用例集中所获得的测试用例的先后顺序进行测试。本发明解决了在资源有限情况下关键参数及组合无法充分测试、测试用例生成时间过长、缺陷检测率无法通过等问题。
文档编号G06F11/36GK102855185SQ20121025797
公开日2013年1月2日 申请日期2012年7月24日 优先权日2012年7月24日
发明者冯钧, 盛震宇, 唐志贤, 徐黎明, 史涯晴, 任锋, 朱祖会, 付言章, 王祥忠, 胥世民 申请人:河海大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1