一种运用线性拟合实现路径覆盖的测试数据自动生成方法

xiaoxiao2020-10-23  14

一种运用线性拟合实现路径覆盖的测试数据自动生成方法
【技术领域】
[0001] 本发明设及一种测试数据自动生成方法,特别设及自动化单元测试中路径覆盖测 试的测试用例数据的生成方法。
【背景技术】
[0002] 测试技术是保障软件系统质量最重要和最有效的方法之一,一直W来也是工业界 保证软件系统正确性最主要的手段。受计算能力和时间、空间资源的限制,测试无法穷尽软 件所有可能的执行,实践中,各种测试充分度准则被用于驱动和评估测试过程。因此,面向 给定的测试充分度准则,如何生成对应的测试用例集合,W驱动程序的执行覆盖相应的结 构,成为测试过程中最关键的技术环节。目前测试用例的设计基本依靠人工手动完成,不仅 费时费力,而且用例的有效性也难W得到保证。如何自动地为各种测试充分度准则生成有 效的测试用例,已成为测试技术研究的热点问题之一。
[0003] 面向路径的测试覆盖准则,是应用较广泛的一种白箱测试充分度准则,它要求测 试用例驱动程序沿着给定的路径执行。理论研究已经证明,不存在通用有效的算法可W为 程序中任意路径生成测试输入。已有的研究工作可分为基于静态分析和基于动态执行两类 方法。基于静态分析的方法无法有效的处理路径中的非线性约束条件,动态方法容易陷入 局部最优点而无法发现可行的输入,它们在处理实际问题时存在很大的局限性。
[0004] 科学和工程问题中,通常可W采用诸如采样、实验等方法获得若干离散的数据,根 据该些数据,我们往往希望得到一个逼近于实际函数或者更加密集的离散方程与已知数据 相吻合,该个过程叫做拟合。线性拟合是比较简单的拟合方式,数据点使用直线进行连接, 结果是一个多边折线。线性拟合简单易用,它可W在比较短的时间内得到逼近函数,缩短了 算法自动生成测试数据的前期工作量。
[0005] 本申请人提交的《一种线性拟合函数驱动的测试数据自动生成方法》(公开号为 CN103942147A,公开日为2014年7月23日)、《一种面向修订的条件判定覆盖的测试数据 自动生成方法》(公开号为CN104050082A,公开日为2014年9月17日)化及《一种面向条 件判定覆盖的测试数据自动生成方法》(公开号为CN104050083A,公开日为2014年9月17 日)的申请文件中公开了基于线性拟合函数自动生成测试数据的方法。但,上述公开的方 法还存在W下几个问题:
[0006] 1、并行计算能力较弱,方法中本身未考虑多处理器并行处理的问题;
[0007] 2、各个输入变量生成自动测试数据独立性太强,混合程度不足,又由于初始数据 随机生成,容易出现不能覆盖路径的测试用例数据;
[000引 3、计算效率不足,处理过程中存在很多重复的步骤,需要优化。

【发明内容】

[0009] 本发明所要解决的问题是;【背景技术】中,公开号为CN103942147A的线性拟合函数 驱动的测试数据自动生成方法中存在的问题。
[0010] 为解决上述问题,本发明采用的方案如下:
[0011] 一种运用线性拟合实现路径覆盖的测试数据自动生成方法,其特征在于,包括分 析待测源程序获得待测源程序所有路径的路径集PS的步骤,该方法还包括对路径集PS中 的每一路径P执行W下步骤:
[0012] S1 ;分析所述路径P的各个分支节点与输入变量的依赖关系,得到依赖关系集R= 出^},Ru表示第i个分支节点与第j个输入变量之间的依赖关系;
[0013] S2 ;通过随机函数构建初始输入向量,得到输入变量与输入向量对应表VPa= {<Ui,Vi〉,<&,V2〉,. . .,<UwY,VWY〉};其中,值对<Ui,Vi〉表示输入变量Vi与输入向量Ui相对 应;Ui为随机生成的输入向量,U{u1,1,Ui,2, . . .,Ui,Nv} ;Uu表示随机生成的第j个输入 变量的值;Nv表示输入变量的总数;Vi表示第i个输入变量;
[0014] S3 ;对输入变量与输入向量对应表VP。中的每个输入向量,根据步骤S1中的依赖 关系集R,若其对应的输入变量与所述路径P具有依赖关系则标记为未处理完成的输入向 量,否则标记为已处理完成的输入向量;
[0015] S4 ;采用多线程并行技术执行步骤S40 ;采用多线程并行技术执行步骤S40 ;所述 步骤S40为;根据输入变量与输入向量对应表VPt中各个未处理完成的输入向量Ui采用 线性拟合的方法,计算W该输入向量为起始捜索点的捜索过程的最优解Ui,m,并将 Vj>IjG[1..Nv],j声i}加入至下一轮次的输入变量与输入向量对应表VPw;所述最优解 表示输入向量Ui在其对应的输入变量Vi经过线性拟合后得到的覆盖路径P最多分支的 输入向量;所述采用多线程并行技术执行步骤S40是指;每个未处理完成的输入向量对应 一个步骤S40,将各个未处理完成的输入向量所对应的步骤S40装入各自的线程组中执行;
[0016] S5 ;重复步骤S3至S4达到限定的化轮次;
[0017]S6 ;从最后轮次得到的输入变量与输入向量对应表VPwt中找出覆盖路径P最多分 支的输入向量作为路径P的测试数据。
[001引进一步,根据本发明的运用线性拟合实现路径覆盖的测试数据自动生成方法,所 述步骤S2 中生成Ui=U2=U3=... =Unv=U0。
[0019] 进一步,根据本发明的运用线性拟合实现路径覆盖的测试数据自动生成方法,所 述步骤S40包括;
[0020] S41 ;根据输入向量UiW及其对应的输入变量Vi构建初始向量集V={V1,Vs};其 中Vl二U1={v1,1,Vi,2, . . .,Vi.Nv},Vg二{v2,1,乂2,2, . . .,V2,Nv} ;乂2細足条件:
[0021] 当j等于输入变量V在输入向量中的下标时,V2,j为随机生成;否则,V2,j=Vi,j;
[0022] S42 ;计算W输入向量集V中每个输入向量作为待测源程序的输入执行待测源程 序时所述路径P上的每个分支节点上的各分支函数获得分支函数值的集合W及最远公共 分支节点m;假如输入向量集V中存在输入向量Ui执行待测源程序时覆盖所述路径P,则该 输入向量Ui作为最优解Uim,转步骤S47,否则转步骤S43 ;
[0023]S43;检查依赖关系集R,若当前输入变量与最远分支节点m不存在依赖关系,则转 步骤S46,否则执行步骤S431;所述步骤S431为根据各个分支节点上的各分支函数值的集 合W及最远公共分支节点m构建最远公共分支节点m前的每个分支节点中的各分支函数的 线性拟合函数,并根据每个分支节点中的各分支函数的线性拟合函数和待测源程序计算可 行区间I;
[0024]S44;在可行区间I内随机选取输入变量Vi的输入值得到测试数据集加入至输入 向量集V中;
[0025]S45;重复执行步骤S42至S44直到输入向量集V中输入向量的个数达到Nk,Nk为 预先设定的常量;
[0026]S46;从输入向量集V中找出能够覆盖路径P最多分支的输入向量作为最优解Uim;
[0027]S47;根据最优解Uim与输入向量Ui对应的输入变量Vi之外的其余输入变量构建 输入变量与输入向量对应集{<Ui,m,Vj.〉|j G [1..NV],j声i},将得到的集合加入至下一轮 次的输入变量与输入向量对应表VPw。
[002引进一步,根据本发明的运用线性拟合实现路径覆盖的测试数据自动生成方法,所 述多线程并行技术中为VP中每个输入向量分配一个线程组;每个线程组分配人个线程; 其中
Nt为机器所支持的最大线程数;N,为VP中未完成状态输入向量的 个数。
[0029] 进一步,根据本发明的运用线性拟合实现路径覆盖的测试数据自动生成方法,所 述多线程并行技术中为输入变量与输入向量对应表VPt中每个输入向量分配一个线程组; 将所述步骤S42分配至该线程组中的线程内执行。
[0030] 进一步,根据本发明的运用线性拟合实现路径覆盖的测试数据自动生成方法,所 述多线程并行技术中为输入变量与输入向量对应表VPt中每个输入向量分配一个线程组; 将所述步骤S431分配至该线程组中的线程内执行。
[0031] 本发明的技术效果如下:
[0032] 1、本发明通过将主要的线性拟合运算的步骤装入至各个线程中,从而使得本发明 的方法能够在多处理器的系统中并行运行,提高处理效率。
[0033] 2、轮次之间的关系较为清晰,通过对输入变量与输入向量对应表VPt中数据的混 合和杂凑处理,使得不容易出现不能覆盖路径的测试用例数据。
[0034] 3、通过分支节点和输入变量之间的依赖关系R的分析处理W及输入变量完成状 态的记录,可W过滤掉很多不必要的输入变量的处理,从而提高整体执行效率。
【具体实施方式】
[0035] 下面对本发明做进一步详细说明。
[ 0036] 本发明的运用线性拟合实现路径覆盖的测试数据自动生成方法,建立在公开号为 CN103942147A的《一种线性拟合函数驱动的测试数据自动生成方法》的基础上的改进的方 法,可分为初始化步骤、多线程处理步骤和最终结果分析步骤。其中,多线程处理步骤的内 容可W直接参照文献公开号为CN103942147A的《一种线性拟合函数驱动的测试数据自动 生成方法》。
[0037] 一、初始化步骤
[003引初始化步骤包括;路径分析步骤、依赖关系分析步骤、初始的输入变量与输入向量 对应表构建步骤和完成状态初始化步骤。
[0039] 路径分析步骤为;对待测源程序进行词法分析、语法分析及语义分析后获得待测 源程序所有路径,得到路径集PS。路径集PS中保存了待测源程序的各个路径,可表示为:PS=巧1,P2, . . .,PJ。本发明方法的主要步骤是通过对路径集PS中每个路径P的处理后 得到覆盖该路径P的测试用例数据,再然后组合各个路径的测试用例数据得到最终的该待 测源程序的测试用例数据。因此后续的步骤是针对路径集PS中单个路径P的处理,即分析 路径P的覆盖该路径的测试用例数据。路径分析中所用方法和过程均属现有技术,本说明 书不再寶述。
[0040] 依赖关系分析步骤,即为步骤S1,具体内容为;分析所述路径P的各个分支节点与 输入变量的依赖关系,得到依赖关系集R=出,Ru表示第i个分支节点与第j个输入变 量之间的依赖关系。本领域技术人员理解,依赖关系分析步骤通过词法分析、语法分析及语 义分析后获得,为现有技术。该步骤甚至可W和前述的路径分析步骤合二为一。路径分析 时同时分析依赖关系可W得到待测源程序上所有路径与输入变量之间的依赖关系。实际应 用时,依赖关系集R中的元素Ri,j值可W用布尔值true和化Ise表示。当Ri,j为true时, 表示第i个分支节点与第j个输入变量存在依赖关系,当Ru为化Ise时,表示第i个分支 节点与第j个输入变量不存在依赖关系。依赖关系分析分析的目的在于,在后续的分析处 理中,当分支节点和输入变量不存在关系时可W直接跳过对该输入变量的处理,从而节约 处理时间。
[0041] 初始的输入变量与输入向量对应表构建步骤,即前述步骤S2,具体内容为;通过 随机函数为每个输入变量构建一个初始输入向量,得到输入变量与输入向量对应表VP。。输 入变量与输入向量对应表是后续的多线程处理步骤的输入输出。多线程处理步骤,即步骤 S4是多轮次迭代过程,迭代次数为化次。迭代的控制通过步骤S5实现。化为预先设定的 常量值或者根据待测源程序路径的复杂程度设定的常量。每个轮次具有不同的输入变量 与输入向量对应表作为其输入和输出。因此,多个轮次的输入变量与输入向量对应表VP。、 VPi、VP2.....VPwt构成一队列。也就是,输入变量与输入向量对应表VPi是第i轮步骤S4 迭代的输出,是第i-1轮步骤S4迭代的输入。其中,VP。为迭代过程的初始值,VP wt为第Nr轮次迭代后的输出结果。每个轮次的输入变量与输入向量对应表VP保存了各个输入变 量的输入向量,初始值VP。可W表示为;KU 1,VI〉,<&,V2〉,. . .,<Uwv,Vwv〉}。第t轮次迭代 输出的输入变量与输入向量对应表VPt可W表示为;KUi,VI〉,<&,V2〉,...,<&,V,〉}。其 中,<Ui,Vi>构成值化表示输入变量Vi与输入向量Ui相对应。其中,Ui= {Ui,i,Ui,2,..., Ui,J,Uu为第i个输入向量U冲的第j个输入变量的值。初始值VP。中的输入向量Ui为 随机生成的输入向量,也即,初始值VP。中的输入向量Ui中的Uu为通过随机函数或伪随机 函数随机生成。初始值VP。中值对<Ui,Vi〉中的Vi表示第i个输入变量。为加快处理,该里 VP〇中的各个初始向量相同,即Ui=U2=U3=... =Unv=U。。此时,VP〇= {<U〇,Vi〉,<U〇, V]〉,? ? ?,〈Uq, Vnv〉}。
[0042] 需要说明的是,上述初始的输入变量与输入向量对应表构建步骤与前述的依赖关 系分析步骤不存在因果、依赖W及输入输出关系,前后顺序可W调换。
[0043] 完成状态初始化步骤,即前述步骤S3,具体内容为;根据步骤S1中的依赖关系集R 将与所述路径P具有依赖关系的输入向量标记为未处理完成的输入向量,否则标记为已处 理完成的输入向量。本步骤的输入是步骤S1中的依赖关系集R和输入向量,输出可W用数 组或集合表示;{Si,S2, . . .,sj。该里,Nv表示输入向量的总数。Si表示第i个值对<U1, Vi〉中输入向量Ui的完成状态,可w用布尔值化ue和false表示。当si为化ue时,表示第i个输入向量已处理完成;当Si为化Ise时,表示第i个输入向量未处理完成。
[0044] 二、多线程处理步骤
[0045] 多线程处理步骤,即为前述步骤S4,具体内容为;采用多线程并行技术执行步骤 S40。步骤S40为;根据输入变量与输入向量对应表VPt中各个未处理完成的输入向量Ui 采用线性拟合的方法,计算该输入向量的最优解Ui,m,并将{<Ui,m,Vj>Ij G [1. . NV],j声i} 加入至下一轮次的输入变量与输入向量对应表VP?;。该里的最优解Ui,m表示输入向量 Ui在其对应的输入变量Vi经过线性拟合后得到的覆盖路径P最多分支的输入向量。该里 的采用多线程并行技术执行步骤S40是指;每个未处理完成的输入向量对应一个步骤S40, 将各个未处理完成的输入向量所对应的步骤S40装入各自的线程组中执行。"将KUi^m, Vj〉|j G [1..NV],j声i}加入至下一轮次的输入变量与输入向量对应表VPw"是指最优解 及输入向量Ui对应的输入变量V i之外的其余变量,加入至下一轮次的输入变量与输 入向量对应表VP?。W某待测源程序具有S个输入变量a、b、c为例。输入变量与输入向量 对应表的初始值VP。为{<U〇,i,a〉,邻。,2,b〉,邻。,3,C〉}。S个输入向量U。,l、U。,2、U。,3经线性 拟合的方法得到最优解分别为Ui,i、Ui,2、Ui,3,最优解Ui,i、Ui,2、Ui,3分别对应输入变量a、b、c。 由此将值对 <Ui,i,b〉、<Ui,i,C〉,<Ui,2,a〉、<Ui,2,C〉,<Ui,3,a〉、<Ui,3,b> 组成下一轮次的输入 变量与输入向量对应表VPi,由此,值对集VPi内的元素的个数为6个。同理,假如上述6个 输入向量经线性拟合的方法得到最优解分别为&,1、&,2、&,3、&,4、&,5、&,e,最优解&,1、&,2、 &,3、&,4、&,日、U2,e分别对应输入变量b、C、a、C、a、b。由此可W组成下一轮次的输入变量与 输入向量对应表VP2= KU2,1,a〉,<&,1,C〉,<&,2, a〉,<&,2, b〉,<&,3, b〉,<&,3, C〉,<&," a〉, <&,"b〉,<&,5, b〉,<&,5, C〉,<&,6, a〉,<&,6, C〉}。在不考虑依赖关系过滤的情形下,输入变 量与输入向量对应表VPt输中元素的个数为NvX(Nv-l)'t。该里表示指数运算。
[0046] 需要说明的是,步骤S40处理的是单个输入向量。每个未处理完成的输入向量对 应一个步骤S40。采用多线程并行技术即为将各个未处理完成的输入变量所对应的步骤 S40装入各自的线程组中执行。步骤S40中最优解通过线性拟合的方法得到,具体步骤 如下:
[0047] S41;根据输入向量U山及其对应的输入变量V i构建初始向量集V={V1,Vs};其 中Vl=U1={v1,1,Vi,2, . . .,Vi.Nv},乂2二{v2,1,V2.2, . . .,V2,Nv} ;乂2满足条件:
[0048]当j等于输入变量V在输入向量中的下标时,V2,J为随机生成;否则,V2,J=Vu;
[0049]S42 ;计算W输入向量集V中每个输入向量作为待测源程序的输入执行待测源程 序时所述路径P上的每个分支节点上的各分支函数获得分支函数值的集合W及最远公共 分支节点m;假如输入向量集V中存在输入向量Ui执行待测源程序时覆盖所述路径P,则该 输入向量Ui作为最优解Uim,转步骤S47,否则转步骤S43 ;
[0050] S43;检查依赖关系集R,若当前输入变量与最远分支节点m不存在依赖关系,则转 步骤S46,否则执行步骤S431 ;所述步骤S431为根据各个分支节点上的各分支函数值的集 合W及最远公共分支节点m构建最远公共分支节点m前的每个分支节点中的各分支函数的 线性拟合函数,并根据每个分支节点中的各 分支函数的线性拟合函数和待测源程序计算可 行区间I;
[0化1] S44;在可行区间I内随机选取输入变量Vi的输入值得到测试数据集加入至输入 向量集V中;
[0化2] S45 ;重复执行步骤S42至S44直到输入向量集V中输入向量的个数达到Nk,Nk为 预先设定的常量;
[0化3] S46 ;从输入向量集V中找出能够覆盖路径P最多分支的输入向量作为最优解Uim;
[0054] S47 ;根据最优解Uim与输入向量Ui对应的输入变量Vi之外的其余输入变量构建 输入变量与输入向量对应集{<Ui,m,Vj〉|j G [1..NV],j声i},将得到的集合加入至下一轮 次的输入变量与输入向量对应表VPw。
[0化5]上述步骤S41至S46在公开号为CN103942147A的《一种线性拟合函数驱动的测试 数据自动生成方法》的文献中有相应描述,本说明书不再寶述。
[0056]步骤S40是通过多线程并行技术实现,也就是,为输入变量与输入向量对应表VPt未完成的输入向量分配一个线程组;每个线程组分配人个线程。其中人可W取值为
。Nt为机器所支持的最大线程数。N,为VP中未完成状态输入向量的个数。 当然假如需要满负荷运行,且Nt>N,,则可W部分输入向量所分配线程组的线程数可W分 配为部分分配为^ + 1。显而意见地,假如Nt>N,部分输入向量所分配的线程组分配Ns Ns 不到线程,此时只能等待部分输入向量完成步骤S40后再分配线程。当输入向量分配了线 程组后,可W将步骤S42和步骤S431分别放入线程组的线程内执行。因为步骤S42是计算 分支函数值的集合W及最远公共分支节点m的步骤,而步骤S431则是线性拟合的步骤,该 两个步骤都需要消耗较大的CPU时间,放入线程中可W并行运算W提高效率。
[0化7]=、最终结果分析步骤
[0化引最终结果分析步骤即为前述步骤S6,具体内容为;从VPwt中找出覆盖路径P最多 分支的输入向量作为路径P的测试数据。VPwt中最多有NvX(Nv- 1)'t个输入向量,此时 每个输入变量对应有(Nv-l)'t个输入向量。该步骤也就是从输入变量所对应的输入向 量中选取能够覆盖路径P的输入向量,或者选取覆盖路径P最多分支的输入向量作为路径 P的测试数据。由此,Nv个输入变量对应有Nv输入向量可W作为路径P的测试数据。 [0化9] 需要说明的是,上述处理过程只是本发明的【具体实施方式】。在上述【具体实施方式】 下作出的等同变换符合本发明的精神,也属于本发明的保护范围。例如,步骤S40处理的是 未处理完成的输入向量,而上述实施方式下,为提高处理效率,在步骤S3中有依赖关系集R 标记已完成的输入向量的步骤,而在步骤S4迭代循环中并没有该步骤,而是在步骤S43中 有相应的判断处理。该判断处理可W在每一轮迭代完成后做一次,使得对于那些已经覆盖 路径P或者当前输入变量与最远分支节点m不存在依赖关系,跳过对该输入向量的处理,由 此可W提高效率。也就是说将步骤S43中的依赖性判断的过程提至步骤S40之外处理,显 而易见地,该种处理方式并不会对本发明造成实质性影响,符合本发明的精神。
【主权项】
1. 一种运用线性拟合实现路径覆盖的测试数据自动生成方法,包括分析待测源程序获 得待测源程序所有路径的路径集PS的步骤,其特征在于,该方法还包括对路径集PS中的每 一路径P执行以下步骤: 51 :分析所述路径P的各个分支节点与输入变量的依赖关系,得到依赖关系集R = (Ri j,Ru表示第i个分支节点与第j个输入变量之间的依赖关系; 52 :通过随机函数构建初始输入向量,得到输入变量与输入向量对应表VPtl= KU1, Vl>,<U2, v2>,…,<UNv,vNv>};其中,值对〈%, Vi>表示输入变量Vi与输入向量U i相对应;U i 为随机生成的输入向量,Ui= {u i;1,Ui,2,. . .,Ui,Nv} ;Ui,j表示随机生成的第j个输入变量的 值;Nv表示输入变量的总数;Vi表示第i个输入变量; 53 :对输入变量与输入向量对应表VPtl中的每个输入向量,根据步骤Sl中的依赖关系 集R,若其对应的输入变量与所述路径P具有依赖关系则标记为未处理完成的输入向量,否 则标记为已处理完成的输入向量; 54 :采用多线程并行技术执行步骤S40 ;采用多线程并行技术执行步骤S40 ;所述步 骤S40为:根据输入变量与输入向量对应表VPt中各个未处理完成的输入向量U i采用线 性拟合的方法,计算以该输入向量为起始搜索点的搜索过程的最优解Uiim,并将{〈uiim, Vj> I j e [I.. Nv],j乒i}加入至下一轮次的输入变量与输入向量对应表VPt+1;所述最优解 Im表示输入向量U i在其对应的输入变量V i经过线性拟合后得到的覆盖路径P最多分支的 输入向量;所述采用多线程并行技术执行步骤S40是指:每个未处理完成的输入向量对应 一个步骤S40,将各个未处理完成的输入向量所对应的步骤S40装入各自的线程组中执行; 55 :重复步骤S3至S4达到限定的Nr轮次; 56 :从最后轮次得到的输入变量与输入向量对应表VP1^*找出覆盖路径P最多分支的 输入向量作为路径P的测试数据。2. 如权利要求1所述的运用线性拟合实现路径覆盖的测试数据自动生成方法,其特征 在于,所述步骤S2中生成U1= U2= U3= ..·= Unv= U。。3. 如权利要求1所述的运用线性拟合实现路径覆盖的测试数据自动生成方法,其特征 在于,所述步骤S40包括: S41:根据输入向量仏以及其对应的输入变量^构建初始向量集V= IVpV2I ;其中V1 -Ui - {v 1,I,Vi, 2,· · ·,Vl,Nv},V2 - (V 2, I,V2, 2,· · ·,V2, Nv^ ; V2?两足条件: 当j等于输入变量Vi在输入向量中的下标时,V 为随机生成;否贝U,V l,j; S42 :计算以输入向量集V中每个输入向量作为待测源程序的输入执行待测源程序时 所述路径P上的每个分支节点上的各分支函数获得分支函数值的集合以及最远公共分支 节点m ;假如输入向量集V中存在输入向量Ui执行待测源程序时覆盖所述路径P,则该输入 向量Ui作为最优解U im,转步骤S47,否则转步骤S43 ; S43:检查依赖关系集R,若当前输入变量与最远分支节点m不存在依赖关系,则转步骤 S46,否则执行步骤S431 ;所述步骤S431为根据各个分支节点上的各分支函数值的集合以 及最远公共分支节点m构建最远公共分支节点m前的每个分支节点中的各分支函数的线性 拟合函数,并根据每个分支节点中的各分支函数的线性拟合函数和待测源程序计算可行区 间I ; S44 :在可行区间I内随机选取输入变量Vi的输入值得到测试数据集加入至输入向量 集V中; 545 :重复执行步骤S42至S44直到输入向量集V中输入向量的个数达到Nk,Nk为预先 设定的常量; 546 :从输入向量集V中找出能够覆盖路径P最多分支的输入向量作为最优解Uim; 547 :根据最优解Uim与输入向量U,寸应的输入变量V 外的其余输入变量构建输入 变量与输入向量对应集{〈U^,Vj>| j e [l..Nv],j乒i},将得到的集合加入至下一轮次的 输入变量与输入向量对应表VPt+1。4. 如权利要求1所述的运用线性拟合实现路径覆盖的测试数据自动生成方法,其特征 在于,所述多线程并行技术中为VP中每个输入向量分配一个线程组;每个线程组分配λ个 线程;其4Nt为机器所支持的最大线程数;NsSVP中未完成状态输入向 量的个数。5. 如权利要求3所述的运用线性拟合实现路径覆盖的测试数据自动生成方法,其特征 在于,所述多线程并行技术中为输入变量与输入向量对应表VP t中每个输入向量分配一个 线程组;将所述步骤S42分配至该线程组中的线程内执行。6. 如权利要求3所述的运用线性拟合实现路径覆盖的测试数据自动生成方法,其特征 在于,所述多线程并行技术中为输入变量与输入向量对应表VP t中每个输入向量分配一个 线程组;将所述步骤S431分配至该线程组中的线程内执行。
【专利摘要】本发明公开了一种运用线性拟合实现路径覆盖的测试数据自动生成方法。本发明通过将主要的线性拟合运算的步骤装入至各个线程中,从而使得本发明的方法能够在多处理器的系统中并行运行,提高处理效率;再通过对输入变量与输入向量对应表VPt中数据的混合和杂凑处理,使得不容易出现不能覆盖路径的测试用例数据;再通过分支节点和输入变量之间的依赖关系R的分析处理以及输入变量完成状态的记录,可以过滤掉很多不必要的输入变量的处理,从而提高整体执行效率。
【IPC分类】G06F11/36
【公开号】CN104881359
【申请号】CN201510317006
【发明人】陈鑫, 周岩
【申请人】南京大学
【公开日】2015年9月2日
【申请日】2015年6月10日
转载请注明原文地址:https://www.famiwei.com/read-8138716.html

最新回复(0)