一种多参量软件测试方法

文档序号:6508245阅读:755来源:国知局
专利名称:一种多参量软件测试方法
技术领域
本发明涉及软件工程领域中的组合测试技术,尤其涉及对使用的组合测试数据进 行优化的软件测试方法。
背景技术
随着信息技术的飞速发展,软件在工业、服务业、金融、国防等各行各业,以及人们 的日常生活中得到了广泛应用。为了确保软件的可靠性,在软件发布前,通过软件测试技术 尽可能多地发掘系统中潜在的错误,具有十分重要的意义。多参量软件中隐藏的错误很可能是由两个以上参量相互作用所触发的。因此,如 果只是单独对各个参量的可能取值进行测试,就很可能遗漏掉那些由多个参量相互作用引 起的软件错误。理想状态下的测试方案是对系统中全部参量的取值组合进行穷举测试,检 查系统能否正确运行。但是,执行穷举测试所需要的测试用例将随着系统中的参量个数呈 指数增长。例如,对一个具有17个布尔参量的铁路安全控制系统进行穷举测试,共需要217 个测试用例,测试成本太高。可见,穷举测试是不切实际的。软件工程的经验表明,实际应用中的大多数软件隐藏的错误,往往是由少数几个 参量互相作用触发的。例如,美国国家标准和技术协会(NIST)的Kuhn等人曾采用四个软 件系统进行了详细研究,其结果表明,超过80%的错误是由不超过三个参量互相作用触发 的。这意味着,在对系统进行测试时,如果测试数据覆盖了全部参量中的任意几个(例如任 意三个)参量的取值组合,便能检查出大多数程序错误,保障测试的检错率和有效性。与此 同时,和穷举测试相比,所需的测试用例数目将大幅消减,测试成本大大降低。例如,对于上 述铁路安全控制系统,只需要11个测试用例,就能保证17个参量中任意两个参量的取值被 覆盖到,只需要24个测试用例,就能保证任意三个参量的取值组合被覆盖到。以上便是组合测试的动机和意义。所谓强度为t的组合测试,是指任意数目不超 过t个的参量之间所有可能的取值组合都至少在测试用例中出现一次。强度为2的组合测 试,又称为成对测试(Pairwise Testing),并被广泛采用。穷举测试是强度等于全部参量个 数的一种特殊的组合测试。组合测试数据的生成问题是通过构造满足一定强度的混合覆盖数组(Mixed Covering Array)来解决的。下面是混合覆盖数组的定义定义1混合覆盖数组MCA (N ;t,k,V1V2…vk)是一个由ν个符号组成的NXk矩阵, 其中ν = Vl+V2+...+Vk,并具有以下性质1、第i列的所有符号是一个大小为Vi的集合Vi中的元素。2、任意的NXt子矩阵包含了对应的t列的所有可能取值组合。在这里,t即上文提到的强度(strength)。例如,表1给出了一个强度为2的混合 覆盖数组MCA (6 ;2,3,223),代表了一组对一个含有三个参量pQ、Pl和p2的系统进行强度为 2的组合测试的测试数据。其中Ptl和P1各有两个不同的取值0、1,ρ2有三个不同的取值0、 1、2。
表1、MCA(6 ;2,3,223)
权利要求
一种多参量软件测试方法,其步骤包括1)生成强度为t的组合测试数据TS,所述组合测试数据由N个测试用例组成,按照先后次序,其对应下标分别为0至N 1,其中每一测试用例为一个k元组(p0,p1,…,pk 1),强度t为自然数;k为自然数,表示待测软件的参量个数;pi代表各参量,分别取值于Vi;强度为t指该组合测试数据覆盖任意不超过t个参量的所有可能的取值组合;2)识别所述组合测试数据的非敏感元素,所述非敏感元素指测试数据中取值的改变不影响所述组合测试数据强度t的那些元素;3)实例化上述非敏感元素,使得实例化后的组合测试数据中t+m元组覆盖率得到提高,其中m可为1至k t中的任意自然数;4)将上述提高t+m元组覆盖率的组合测试数据作为优化后的组合测试数据;5)使用上述优化后的组合测试数据对该待测软件进行测试。
2.如权利要求1所述的方法,其特征在于,所述步骤2)中识别出所述组合测试数据的 非敏感元素,采用的方法如下对测试数据中的N个测试用例,按照一定的次序依次遍历进行遍历,遍历过程中,如果 当前测试用例中,包含某一参量的某个取值的全部t元组都已被覆盖过,则在所有后续测 试用例中,如遇到该参量取同样的值,就标记为非敏感元素。
3.如权利要求2所述的多参量软件测试方法,其特征在于,所述步骤2)包括以下步骤2-1)对组合测试数据中的每一个参量Pi,分别计算所有包含该参量的t元组,并保存 在相应的记录集合Ri中;2-2)为TS中的N个测试用例,生成一个候选的排序序列集S ;2-3)根据S中的每种排序序列Sk对全部测试用例进行排序,得到TSk,按照先后顺序, 遍历TSk中的全部测试用例,查找非敏感元素;2-4)将TS替换为上述查找到非敏感元素最多的TSk。
4.如权利要求3所述的多参量软件测试方法,其特征在于,重复进行步骤2-2)至 2-4),直到不能查找到新的非敏感元素为止。
5.如权利要求3所述的多参量软件测试方法,其特征在于,所述步骤2-2)排序序列集 S生成具体采用以下步骤2-2-1)计算组合测试数据TS中任意两个测试用例之间的汉明距离,存入表M中;2-2-2)随机选择某个测试用例,将其下标作为一个只含一个下标的序列,放入下标序 列集S ;2-2-3)遍历S中的每一个序列Iisti,设Iisti的最后一个下标为X,查找表M,找到下 标值不包含在Iisti中,且和下标为χ的测试用例汉明距离最大的b个测试用例的下标,分 别作为Iisti的末端,放入S’,其中b为参数,其取值为正整数;2-2-4)将S替换为S’ ;2-2-5)如果步骤2-2-3)至2-2-5)已执行c次,转2_2_6),其中c为参数,其取值为正 整数,取5和N之间的较小值;2-2-6)如果S中的各序列包含的下标个数等于N,转2-2-8);2-2-7)遍历S中的每一个序列Iisti,设Iisti的最后一个下标为X,查找表M,找到下标值不包含在Iisti中,且和下标为χ的测试用例汉明距离最大的那个测试用例的下标,作 为Iisti的末端,重复执行2-2-6); 2-2-8)返回序列集S。
6.如权利要求3所述的多参量软件测试方法,其特征在于,所述步骤2-3)包括以下步骤2-3-1)从S中选取一种下标序列Sk,按下标序列顺序依次选取测试用例,得到测试用 例集TSk ;2-3-2)将所有的Ri中的所有t元组标为0,表示未被覆盖,以下开始按先后顺序遍历TSk;2-3-3)对每个参量Pi,依次枚举出TSk的当前测试用例中涉及参量Pi的所有t元组, 并在相应的记录集Ri中将相应的t元组标记为1,表示已被覆盖;2-3-4)对每个参量Pi和其对应的全部取值\,检查其记录集合Ri中,所有Pi取值为Vj 的t元组,如果这些元组都已被标记为1,则将当前测试用例之后的所有测试用例中,Pi取 值为\的元素标记为非敏感元素;2-3-5)重复执行2-3-3)至2-3-5),直到遍历完TSk中的全部测试用例;2-3-6)重复执行2-3-1)至2-3-6),直到S为空集。
7.如权利要求1所述的多参量软件测试方法,其特征在于,所述步骤3)采用以下步骤3-1)枚举k个参量的取值间所有的t+m元组,建立一个覆盖表R,并将每个元组标为0, 表示尚未被覆盖;3-2)遍历全部测试用例,并将测试用例中出现的t+m元组,在覆盖表R中标为1,表示已被覆盖;3-3)再次遍历测试用例集,从前至后、从左至右对非敏感元素依次进行实例化。
8.如权利要求7所述的多参量软件测试方法,其特征在于,所述步骤3-3)进行实例化 具体包括以下步骤3-3-1)遍历当前测试用例中的每个元素,如果已无非敏感元素,执行3-3-4); 3-3-2)将遇到的非敏感元素,分别计算假如将其赋值为其对应参量的取值范围\中的 每一个值Vi,该测试用例能够覆盖到的、在覆盖表R中标为0的t+m元组的数目Iii ;3-3-3)将非敏感元素赋值为Iii最大的取值Vi,并将R中新覆盖到的t+m元组标为1 ; 3-3-4)完成对非敏感元素的实例化,返回TS。
9.如权利要求1所述的多参量软件测试方法,其特征在于,使用CATS、AETG、PICT、 FireEye或Jermy等工具,通过代数方法、贪心算法或元启发式算法生成所述强度为t的组 合测试数据。
10.如权利要求1或2所述的多参量软件测试方法,其特征在于,所述步骤4)中将最大 限度提高t+m元组取值组合覆盖率的组合测试数据作为优化后的组合测试数据。
全文摘要
本发明涉及了一种多参量软件测试方法,其步骤包括1)生成强度为t的组合测试数据;2)识别所述组合测试数据的非敏感元素,所述非敏感元素指该元素取值的改变不影响所述组合测试数据的强度t;3)实例化上述非敏感元素,使得实例化后的组合测试数据中t+m元组的取值组合覆盖率尽可能高,其中m为自然数,可为0至k-t中任意自然数,建议取1;4)将上述提高t+m元组取值组合覆盖率的组合测试数据作为优化后的组合测试数据;5)使用上述优化后的组合测试数据对该待测软件进行测试。该方法在确保不减小原有的测试强度和不增加任何测试成本的前提下,提高测试数据对高维度元组的覆盖率,从而能以同样的测试成本,达到更高的检错率。
文档编号G06F11/36GK101986281SQ20101052699
公开日2011年3月16日 申请日期2010年10月26日 优先权日2010年10月26日
发明者张健, 陈柏强 申请人:中国科学院软件研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1