CN104050082B - 一种面向修订的条件判定覆盖的测试数据自动生成方法 - Google Patents
一种面向修订的条件判定覆盖的测试数据自动生成方法 Download PDFInfo
- Publication number
- CN104050082B CN104050082B CN201410271281.4A CN201410271281A CN104050082B CN 104050082 B CN104050082 B CN 104050082B CN 201410271281 A CN201410271281 A CN 201410271281A CN 104050082 B CN104050082 B CN 104050082B
- Authority
- CN
- China
- Prior art keywords
- branch node
- branch
- path
- input vector
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种面向修订的条件判定覆盖的测试数据自动生成方法。本发明通过对每个分支节点按修订的条件判定覆盖准则寻找可覆盖该分支节点的测试数据产生待测源代码的测试数据集。其中,对个分支节点按修订的条件判定覆盖准则寻找可覆盖该分支节点的测试数据通过以下方法实现:首先通过随机方法构建输入向量集,然后对输入向量集的运行分析,再通过线性拟合的手段扩展输入向量集,经重复迭代,获得可覆盖该节点面向修订的条件判定的测试数据。本发明方法高度自动化,能够尽可能的提高单元测试的效率,降低测试成本,并且支持面向修订的条件判定覆盖准则。
Description
技术领域
本发明涉及一种测试数据自动生成方法,特别涉及自动化单元测试中修改的条件判定覆盖测试的测试用例数据的生成方法。
背景技术
测试技术是保障软件系统质量最重要和最有效的方法之一,一直以来也是工业界保证软件系统正确性最主要的手段。受计算能力和时间、空间资源的限制,测试无法穷尽软件所有可能的执行,实践中,各种测试充分度准则被用于驱动和评估测试过程。因此,面向给定的测试充分度准则,如何生成对应的测试用例集合,以驱动程序的执行覆盖相应的结构,成为测试过程中最关键的技术环节。目前测试用例的设计基本依靠人工手动完成,不仅费时费力,而且用例的有效性也难以得到保证。如何自动地为各种测试充分度准则生成有效的测试用例,已成为测试技术研究的热点问题之一。
面向修改的条件/判定的测试覆盖(简称:MC/DC,即Modified Condition/Decision Coverage)准则,是应用较广泛的一种白箱测试充分度准则,尤其适用于安全要求较高的航空航天、医药等领域。它要求设计足够的测试用例,使得判定中每个条件的所有可能取值至少执行一次,同时每个判定的所有可能判定结果至少执行一次,并且每个条件能够独立地影响判定。条件独立地影响判定是指在其他条件不变的前提下仅改变条件的值而使判定结果改变。举例来说,判定语句S=A and(B or C),其中,A、B、C为判定中的条件。A、B、C的取值有8种组合,用集合为:{TTT,TTF,TFT,TFF,FTT,FTF,FFT,FFF},其中,每个条件能够独立地影响判定的情形有:{TTF,TFF,TFT,FFT}。也即,当保持AC为TF时,B的取值可以独立确定判定语句S的值;当AB为TF时,C的取值可以独立确定判定语句S的值;当BC为FT时,A的取值可以独立确定判定语句S的值。
理论研究已经证明,不存在通用有效的算法可以为程序中任意判定的任意条件取值组合生成测试输入。已有的研究工作可分为基于静态分析和基于动态执行两类方法。基于静态分析的方法无法有效的处理判定中的非线性约束条件,动态方法容易陷入局部最优点而无法发现可行的输入,它们在处理实际问题时存在很大的局限性。
科学和工程问题中,通常可以采用诸如采样、实验等方法获得若干离散的数据,根据这些数据,我们往往希望得到一个逼近于实际函数或者更加密集的离散方程与已知数据相吻合,这个过程叫做拟合。线性拟合是比较简单的拟合方式,数据点使用直线进行连接,结果是一个多边形。线性拟合简单易用,它可以在比较短的时间内得到逼近函数,缩短了算法自动生成测试数据的前期工作量。
发明内容
本发明所要解决的问题是为待测试源程序自动构建测试数据(测试用例),使得在这些测试数据下执行待测试源程序能够覆盖该待测试源程序的所有判定的可能取值及判定中所有条件的可能取值并表明每个条件独立影响判定,完成修改的条件判定覆盖测试。
为解决上述问题,本发明采用的方案如下:
一种面向修订的条件判定覆盖的测试数据自动生成方法,包括分析待测源程序获得待测源程序所有路径的集合和所有分支节点的集合BS以及分支节点的关联路径集的集合的步骤,该方法还包括对分支节点集BS中的每一分支节点B执行以下步骤:
S1:根据B的关联路径集中各路径上位于B(含B)之前的各分支节点的各个条件,构建关于输入变量向量X的分支函数Fk,i,j(X);所述输入变量向量X为所述待测源程序输入变量构成的向量;所述分支函数Fk,i,j(X)表示路径k上第i个分支节点的第j个条件的分支函数;所述路径k经过分支节点B;
S2:构建初始的输入向量集U;所述初始的输入向量集U至少包含两个输入向量;
S3:计算以输入向量集U中每个输入向量作为待测源程序的输入执行待测源程序时与所述分支节点B关联的各路径k上位于B之前(含B)的每个分支节点上的各分支函数Fk,i,j(X)获得分支函数值的集合V以及最远公共分支节点mk;当执行待测源程序时的执行路径经过分支节点B时计算B的判定和判定中各个条件的取值;假如输入向量集U中存在一个输入向量执行待测源程序时执行路径经过分支节点B且使B的判定或判定中某个条件产生新的取值,则记录该输入向量作为所述分支节点B的一个测试数据;假如所述分支节点B的测试数据集覆盖了B的判定及判定中各条件所有可能取值并且每个条件都独立影响了判定,则返回该测试数据集作为所述分支节点B的测试数据集;
S4:根据分支节点B的关联路径集中各路径k上位于B之前(含B)的各个分支节点上的各分支函数值的集合V以及最远公共节点mk构建路径k上位于最远公共节点mk之前(含mk)的每个分支节点的各分支函数的拟合函数LFk,i,j;LFk,i,j表示路径k上第i个分支节点的第j个条件的分支函数的线性拟合函数;S5:根据与B关联的各路径上位于B之前(含B)的每个分支节点中的各分支函数的线性拟合函数LFk,i,j和待测源程序计算可行区间I;
S6:在可行区间I内随机选取各输入变量的输入值得到测试数据集加入至输入向量集U中;
S7:重复执行步骤S3至S6直到步骤S3至S6执行的次数达到限定的次数;
S8:返回所有记录的所述分支节点B的测试数据作为所述分支节点B的测试数据集。
进一步,根据本发明的面向修订的条件判定覆盖的测试数据自动生成方法,所述步骤S2中所述的初始的输入向量集U包含Ni+1个输入向量,所述Ni为输入变量的个数;初始的输入向量集U={u0,u1,u2,...,uNi},其中ui={ui,1,ui,2,...,ui,Ni};输入向量u0为随机生成,ui与u0满足关系:
其中i,j∈{1,2,...,Ni}。
进一步,根据本发明的面向修订的条件判定覆盖的测试数据自动生成方法,所述步骤S3包括:
S31:从输入向量集U获取未执行的输入向量ut;
S32:判断未执行的输入向量ut是否存在;假如不存在未执行的输入向量,则执行步骤S34;否则执行步骤S33;
S33:根据ut执行待测源代码得到执行的路径与分支节点B的关联路径集中各路径k的公共分支节点mk,t,计算路径k上位于分支节点B之前(含B)的各分支节点的分支函数Fk,i,j(X)的值,B的所有关联路径的各个分支节点的各分支函数Fk,i,j(X)的值构成集合V;若执行的路径经过分支节点B,则执行的路径为分支节点B的一条关联路径,根据该关联路径上B的判定中各个条件的分支函数值得到分支节点B的判定和判定中各条件的取值;假如B的判定或判定中条件产生了新的取值,则记录该输入向量作为所述分支节点B的一个测试数据;假如B的测试数据集覆盖了B的判定且判定中各条件所有可能取值并且每个条件都独立影响了判定,返回该测试数据集作为所述分支节点B的测试数据集并结束对整个分支节点B生成测试数据的过程。
S34:从分支B的各关联路径k记录的{mk,1,mk,2,...,mk,TU}中选取最远公共分支节点mk。
进一步,根据本发明的面向修订的条件判定覆盖的测试数据自动生成方法,所述步骤S4包括以下步骤:
S41:输入向量集U和B的关联路径集中各路径k上位于B之前(含B)的各个分支节点的各分支函数值的集合V以及最远公共节点mk构建坐标集Vk,y,z,j={(u1,j,Fk,y,z(u1,j)),(u2,j,Fk,y,z(u2,j)),...,(uTU,j,Fk,y,z(uTU,j))};
S42:以Vk,y,z,j={(u1,j,Fk,y,z(u1,j)),(u2,j,Fk,y,z(u2,j)),...,(uTU,j,Fk,y,z(uTU,j))}内两个相邻的坐标点构建Fk,y,z(xj)的线性拟合函数LFk,y,z(xj)=pj*xj+qj,得到参数集LFPQk,i,j={(p1,q1),(p2,q2),...,(pNi,qNi)};
其中,Vk,y,z,j表示路径k上第y个分支节点第z个分支函数对应第j个输入变量的坐标集,其中y≤m;ui,j为输入向量集U中第i个输入向量的第j个输入变量的值;Fk,y,z(xj)为路径k上第y个节点第z个分支函数关于第j个输入变量的函数;LFk,y,z(xj)为路径k上第y个节点第z个分支函数关于第j个输入变量的线性拟合函数;LFPQk,i,j为路径k上第i个节点第j个分支函数的线性拟合函数的参数集。
进一步,根据本发明的面向修订的条件判定覆盖的测试数据自动生成方法,所述步骤S5包括:
S51:计算分支节点B的各关联路径k上位于分支节点B之前(含B)的各个分支节点中各分支函数的可行区间Dk,i,j;
S52:合并每个分支节点内的各分支函数的可行区间Dk,i,j得到各分支节点的可行区间Dk,i;
S53:合并最远公共分支节点mk前的各分支节点的可行区间Dk,i得到分支节点B在关联路径k上的可行区间Ik。
S54:合并分支节点B在各关联路径k上的可行区间Ik,得到分支节点B的可行区间I。
进一步,根据本发明的面向修订的条件判定覆盖的测试数据自动生成方法,所述可行区间I={I1,I2,...,Is},其中,s为输入变量的个数,Ii为第i个输入变量的可行区间,Ii={Ii,1,Ii,2,...,Ii,Mi},其中,Ii,j为第i个输入变量第j个可行分段区间,Mi为第i个输入变量可行分段区间数,所述步骤S6中,当Mi为1时,从Ii为第i个输入变量的可行区间的唯一分段区间Ii,1的扩展区间中随机取值构建测试数据。
一种机器可读介质,该可读介质上存储有指令集合,当该指令集合被执行时,使得该机器可执行上述面向修订的条件判定覆盖的测试数据自动生成方法。
本发明的技术效果如下:
1、本发明方法无需分析程序路径上各语句之间的数据依赖关系,采用动态执行的方式,自动确定分支谓词的线性拟合函数,效率高。
2、能有效地处理路径中的非线性约束条件,并采用动态步长扩张的方式,很好的解决动态方法容易陷入局部最优点而无法发现可行的输入的问题。
3、能有效地处理路径中的复合条件约束,将复合条件谓词等价转换成分支函数分组,利用线性拟合函数快速的确定输入变量的可用取值区间。
4、约束求解器采用线性拟合的方法求解约束系统,充分利用线性拟合函数简单易用的优点;如果分支函数关于输入变量是线性的,则获得的线性拟合函数与函数本身完全吻合,如果分支函数关于输入变量是非线性的,则综合在各个区间上得到的线性拟合函数,可以估算分支函数的大致情况,随着程序的不断执行,用于函数赋值的数据越多,估算得到的函数信息就越精确。理论上,当计算拟合函数的区间足够小时,获得的线性拟合函数就能足够贴近函数的真实情况,对自动生成准确的测试数据就更有指导意义。
5、本发明方法高度自动化,能够尽可能的提高单元测试的效率,降低测试成本。
6、本发明方法能够很好的支持面向修改的条件/判定的测试覆盖准则。
附图说明
图1是本发明待测源程序代码例子。
图2是本发明步骤S3的流程图。
具体实施方式
下面结合说明书附图对本发明做进一步详细说明。
一、CLFF测试数据自动生成方法的基本原理
CLFF测试数据自动生成方法,即基于线性拟合函数驱动的测试数据自动生成算法,是线性拟合技术在测试数据自动生成中的应用。具体来说,首先对待测源程序进行词法分析、语法分析及语义分析后获得待测源程序所有路径和所有分支节点,然后针对每个分支节点单独生成一套测试数据(测试用例)使得该测试数据能够覆盖该节点的判定及判定中各个条件的所有可能取值以及表明各条件独立影响判定,每个分支节点对应一套测试数据,测试源程序的所有分支节点能够得到测试数据集。
在为某分支节点生成测试数据时,首先随机生成一输入数据,然后根据该输入数据执行待测源程序,分析其执行结果,根据执行结果通过线性拟合后构造新的测试数据,然后根据新的测试数据执行待测源程序,分析其执行结果,再根据执行结果通过线性拟合后构造新的测试数据,重复上述步骤直到存在一组测试数据能够覆盖该分支节点的判定及判定中各个条件的所有取值组合以及表明各条件独立影响判定。此外,这里还存在被分析的分支节点永远无法覆盖判定/条件的所有取值组合或无法表明所有的条件都独立影响判定,在这种情形下,通过对循环计数直到循环次数达到某一限值时停止,然后将能够覆盖该分支节点的判定及判定中条件某一种取值的输入数据作为测试数据返回。
因此,本发明的重点在于,如何根据执行结果进行线性拟合以及如何根据线性拟合构造新的测试数据。
二、构建分支函数
本发明的步骤S1为根据所述分支节点B的关联路径集中每条路径上位于B之前(含B)的各分支节点的各个条件,构建关于输入变量向量X的分支函数Fk,i,j(X)。这个步骤简称为构建分支函数。
分支节点的关联路径集:经过分支节点的路径的集合。
条件有两种,一种是布尔表达式:Bool(X);对于布尔表达式,分支函数Fk,i,j(X)=Bool(X)。另一种是包含条件运算符的条件,表示为:L(X)rel R(X),rel∈{>,≥,=,≠,≤,<};这里rel表示条件运算符,L(X)表示条件运算符左侧的表达式,R(X)表示条件运算符右侧的表达式,那么,分支函数Fk,i,j(X)=L(X)-R(X)。也就是说,分支函数是条件的规范表示,任何条件都可以表示成如下格式:Fk,i,j(X)rel 0,rel∈{>,≥,=,≠,≤,<}。通常每个分支节点上包含多个条件,进行条件的规范表示后,与所述分支节点B关联的路径k上第i个分支节点的逻辑表达式可以表示成:ck,i=Fk,i,1(X)rel1 0op1Fk,i,2(X)rel20op2...ops-1Fk,i,s(X)rels 0,这里opi表示与(And)或或(Or)的逻辑运算符,s表示路径k上第i个分支节点上条件的数量。
除了上述的规范表示外,构建的分支函数还有一个参数的映射过程,也就是将分支函数Fk,i,j(X)的参数映射至输入变量的向量X中使得分支函数Fk,i,j(X)是关于输入变量向量X的函数。对于特定的路径k,分支函数Fk,i,j(X)与输入变量向量X之间的函数关系是确定的。如图1所示,由C语言编写的example源代码中,总共有6条路径:分别为:路径1:P1→C1→P2→C2→P4→P6;路径2:P1→C1→P2→C2→C3→P5→P6;路径3:P1→C1→P2→C2→C3→P6;路径4:P1→C1→P3→C2→P4→P6;路径5:P1→C1→P3→C2→C3→P5→P6;路径6:P1→C1→P3→C2→C3→P6。程序中一共有三个分支节点:C1,C2,C3。与分支节点C1关联的路径集:路径1,2,3,4,5,6;与分支节点C2关联的路径集:路径1,2,3,4,5,6;与分支节点C3关联的路径集:路径2,3,5,6。example函数有3个输入分别为a,b,c,其中C2分支节点的条件为d+e>100,在路径确定的情形下,d和e相对于a,b,c的输入是确定的,可以表示成d=D(a,b,c)和e=E(a,b,c),则该条件的分支函数定义为:Fk,i,j(X)=D(X)-E(X),X={a,b,c}。由此,对于任一输入x={ax,bx,cx},分支函数Fk,i,j(X)均能直接计算得到一具体的函数值。以路径4为例,d=(a-b)*2,e=b,由此可以得到C2分支节点的唯一一个条件的分支函数F4,2,1(a,b,c)=d+e-100=(a-b)*2+b-100=2*a-b-100。以路径2为例,d=(a-b)*2,e=d=(a-b)*2,由此可以得到C2分支节点的唯一一个条件的分支函数F2,2,1(a,b,c)=d+e-100=(a-b)*4-100。也就是说,不同路径下,同样分支节点的同样条件的分支函数可能不同。但在确定了的路径下,分支函数关于输入变量的函数是确定了的。
本步骤的输入是待测源程序在分支节点B的关联路径集上每一路径中位于B之前(含B)的各分支节点的各个条件,输出是相应条件的分支函数Fk,i,j(X)。这里X为输入变量向量,由待测源程序输入变量构成的向量。分支函数Fk,i,j(X)表示路径k上第i个分支节点的第j个条件的分支函数,i和j的取值范围取决于分支节点所在路径上的分支节点数和各个分支节点上的条件数。
需要说明的是,这里路径是由对待测源程序进行词法分析、语法分析及语义分析,最终分析得到待测试源程序程序路径集中的某一条路径,所述分支节点B是由程序路径集中所有路径的分支节点组成的程序分支节点集中的某一个分支节点。本领域技术人员理解,对待测源程序进行词法分析、语法分析属于现有技术,其具体实现细节也不是本发明所要讨论的主题范畴。本领域技术人员还可以理解,在对待测源程序进行词法分析、语法分析及语义分析后,可以首先对待测源程序所有分支节点的各个条件构建分支函数,得到一个总的分支函数集,然后根据与分支节点B关联的路径集上每一条路径中位于B之前(含B)的分支节点从这个总的分支函数集中选取相应的分支函数即可。
三、构建初始的输入向量集
本步骤即为前述的步骤S2。
由于本发明通过线性拟合构建可行区间,然后从可行区间内选取测试数据。而线性拟合至少需要两个数据样本。因此,在构建初始的输入向量集U时,初始的输入向量集U至少包含两个输入向量。这里,输入向量对应前述的输入变量向量X。输入向量的每个元素为对应着待测源程序相应的输入变量的具体的值。初始的输入向量集U内的输入向量由随机生成,输入向量内的每个元素由随机生成。为更好的实现本发明的线性拟合。本发明中优先采用如下方法构建初始的输入向量集U:
初始的输入向量集U包含Ni+1个输入向量,Ni为输入变量的个数;初始的输入向量集U={u0,u1,u2,...,uNi},其中ui={ui,1,ui,1,ui,2,...,ui,Ni}。在这Ni+1个输入向量中,其中第一个输入向量,即输入向量u0为随机生成。ui与u0满足关系:其中i,j∈{1,2,...,Ni}。
这样设计的好处是,对于某个分支函数Fi,j(X)进行线性拟合时,每个输入变量可以分别进行,而避免多元线性拟合,同时所有的变量都能得到进行有效的线性拟合的数据。以前述例子的路径4为例,C2节点的分支函数为F4,2,1=2*a-b-100。假设输入向量集的四个输入向量分别为:u0={0,-3,-2},u1={4,-3,-2},u2={0,9,-2},u3={0,-3,7}。其中,输入向量u0,u1中,输入变量b和c的取值相同,分别为-3和-2,此时,可以构建关于输入变量a的线性拟合函数LF4,2,1(a)=2*a-97。同理,根据输入向量u0,u2可以构建关于输入变量b的线性拟合函数LF4,2,1(b)=-1*b-100。
四、执行代码与统计
本步骤即为前述的步骤S3。
本步骤的输入为:输入向量集U、分支节点B的关联路径集和待测源程序。输出为:各个输入向量对应的分支节点B的关联路径集中各路径k上位于分支节点B之前(含B)的各分支节点的各个分支函数Fk,i,j(X)的值构成的集合V,以及与路径k的最远公共路径分支节点mk。
具体的过程可通过图2所示的流程实现,包括步骤S31、S32、S33、S34。
S31,从输入向量集U获取未执行的输入向量ut。步骤S3~S6是迭代循环的过程。输入向量集U随着迭代循环过程变化,迭代循环的第一次迭代的输入为初始的输入向量集U,初始的输入向量集U由前述步骤S2获得。由于第n次迭代过程与前几次迭代过程有所重复,即第n次迭代过程的输入向量集U中部分输入向量已经由前几次迭代过程执行了步骤S33。考虑处理效率,这部分重复的输入向量不需要重复再执行步骤S33。因此,只需要从输入向量集U中选取那些未执行的输入向量执行步骤S33即可。
S32,判断未执行的输入向量ut是否存在。该步骤是S31的延伸的判断步骤。假如未执行的输入向量ut不存在,表示输入向量集U中每个输入向量均执行了步骤S33,则执行步骤S34。假如未执行的输入向量ut存在,则对该输入向量ut执行步骤S33。
S33,根据ut执行待测源代码得到执行的路径和分支节点B的各关联路径k的公共分支节点mk,t,并计算关联路径k上位于分支节点B之前(含B)各分支节点的分支函数Fk,i,j(X)的值。这里的执行待测源代码可以是模拟执行。一种实施方法是通过插桩的方式,在待测源代码中植入插桩代码。插桩代码可以监视待测源代码每一步执行的结果以及执行待测源代码的经过的路径。第二种实施方法是直接计算分支节点B的各关联路径k上位于分支节点B之前(含B)各分支节点的分支函数Fk,i,j(X)值,然后根据分支函数Fk,i,j(X)对应的条件ck,i分析其执行的路径Pt。在第一种实施方法下,包括三个步骤:植入插桩代码,执行待测源程序,计算分支节点B的关联路径集中各路径k上位于B之前(含B)的各分支节点的分支函数Fk,i,j(X)的值。而第二种实施方法下,执行待测源程序和计算分支节点B的关联路径集中各路径k上位于B之前(含B)的各分支节点的分支函数Fk,i,j(X)的值可以一步完成。因此本发明优先采用第二种实施方法。任一输入向量ut执行待测源代码后,可以得到所执行的路径Pt与分支节点B的关联路径集中路径k的公共分支节点mk,t。对于输入向量集U={u1,u2,...,uKU}而言,可以关联路径k的公共分支节点集Mk={mk,1,mk,2,...,mk,TU},以及分支函数Fk,i,j(X)的值的集合V={V1,V2,...,VTU}。这里的TU表示输入向量集U中元素的个数。这里的公共分支节点mk,t(其中,t∈{1,2,...,KU})为分支节点下标的表示的输入向量ut在路径k下的最远公共分节点。输入向量ut在路径k下的公共分支节点是根据输入向量ut执行待测源代码后所执行的路径Pt与路径k重叠的部分中最后一个分支节点。相应地,计算B的关联路径k上的分支函数Fk,i,j(X)的值也是指根据输入向量ut执行待测源代码后所执行的路径Pt与路径k重叠部分的分支节点的各条件中的分支函数Fk,i,j(X)的值,也即集合V中其中Fk,i(ut)={Fk,i,1(ut),Fk,i,2(ut),...,Fk,i,iM(ut)}。以图1中的代码流程为例。分支节点C2的关联路径集中一关联路径路径1为P1→C1→P2→C2→P4→P6。而某一输入向量ut={0,-3,-2}下,执行图1中的代码后,得到的路径Pt(即路径3)为:P1→C1→P2→C2→C3→P6,则重叠的路径为:P1→C1→P2→C2,因此公共分支节点m1,t=C2,或者用第二个分支节点的下标表示:m1,t=2。相应地,各个分支函数F1,i,j(X)的值为:F1,1,1=a-b=3;F1,2,1=(a-b)*4-100=-88。执行的路径Pt:P1→C1→P2→C2→C3→P6经过分支节点C2,则Pt(即路径3)是分支节点C2的关联路径,根据该关联路径路径3上C2的判定中各个条件的分支函数值F3,2,1=(a-b)*4-100=-88(路径3上第二个分支节点即分支节点C2)得到分支节点C2的判定e+d>100的取值为假,判定中条件e+d>100的取值也为假;若该判定/条件取值组合(判定为假,判定中条件为假)使C2的判定或判定中某个条件产生新的取值,或该判定/条件取值组合能和已覆盖的判定/条件取值组合联合表明某个条件独立影响了判定,则记录该输入向量ut={0,-3,-2}作为所述分支节点C2的一个测试数据;假如C2的测试数据集覆盖了C2的判定且判定中各条件所有可能取值且表明C2中每个条件都独立影响了C2的判定,返回该测试数据集作为所述分支节点C2的测试数据集并结束对整个分支节点B生成测试数据的过程。
S34,对分支节点B的每条关联路径k从{mk,1,mk,2,...,mk,TU}中选取路径k最远的公共分支节点mk。由于这里的公共分支节点mk,t(其中,t∈{1,2,...,TU})为分支节点下标,因此,关联路径k最远的公共分支节点mk=max{mk,1,mk,2,...,mk,TU}。
需要说明的是,这里的最远的公共分支节点mk在分支节点B以前(包含节点B)。
五、线性拟合
本步骤即为前述的步骤S4。
本步骤的输入为分支节点B的各关联路径k上位于B之前(含B)的各个分支节点上的各分支函数值的集合V和各关联路径的最远公共分支节点mk。这两个输入都是步骤S3的输出。输出为:分支节点B的各关联路径k的最远公共分支节点mk前的每个分支节点中的各分支函数的线性拟合函数LFk,i,j。这里LFk,i,j表示路径k上第i个分支的第j个分支函数的线性拟合函数。需要说明的是这里的最远公共分支节点mk前包括最远公共分支节点mk。根据前述输入向量U={u1,u2,...,uTU},分支函数值的集合V={V1,V2,...,VTU},可以得到输入向量坐标集:{(u1,V1),(u2,V2),...,(uTU,VTU)}。对于路径k上任一第y个分支节点的第z个分支函数Fk,y,z(X)可以得到坐标集Vk,y,z={(u1,Fk,y,z(u1)),(u2,Fk,y,z(u2)),...,(uTU,Fk,y,z(uTU))}。
线性拟合函数LFk,i,j实现的方式很多,下述有三种实施方式:
第一种线性拟合的实施方式是采用多元线性回归拟合。根据坐标集Vk,y,z以及多元线性拟合函数(其中,Ni为输入变量的个数),即可以计算得到的多元线性拟合函数LFk,y,z(X)的系数{a0,a1,...,aNi},从而完成线性拟合函数的构建。
第二和第三种线性拟合的实施方式都是对各个输入变量逐个进行简单的线性拟合。首先将Fk,y,z(X)视为关于输入变量xj(xj表示第j个输入变量,其中j∈{1,2,...,Ni},Ni为输入变量的个数)的函数Fk,y,z(xj),根据坐标集Vk,y,z可以得到关于输入变量xj的坐标集为:Vk,y,z,j={(u1,j,Fk,y,z(u1,j)),(u2,j,Fk,y,z(u2,j)),...,(uTU,j,Fk,y,z(uTU,j))},其中,ui,j表示第i个输入向量中第j个输入变量的值。Fk,y,z(xj)的线性拟合函数LFk,y,z(xj)=pj*xj+qj。
第二种线性拟合的实施方式是以坐标集Vk,y,z,j内的所有数据作为实测数据通过最小二乘法构建Fk,y,z(xj)的线性拟合函数LFk,y,z(xj)=pj*xj+qj。则有:
第三种线性拟合的实施方式是以坐标集Vk,y,z,j={(u1,j,Fk,y,z(u1,j)),(u2,j,Fk,y,z(u2,j)),...,(uTU,j,Fk,y,z(uTU,j))}内两个相邻的坐标点构建Fk,y,z(xj)的线性拟合函数LFk,y,z(xj)=pj*xj+qj。当ut,j≠ut+1,j时,由于Vk,y,z,j中存在TU个坐标,因此根据上述的规则,理论上可以得到TU-1个线性拟合函数。为此可采用后置规则,总是以最后两个相邻的坐标点构建线性拟合函数。比如,假如uTU,j≠uTU-1,j,则假如uTU,j=uTU-1,j=...=uTU-t+1,j≠uTU-t,j,则
第二和第三种线性拟合的实施方式的输出均为最远公共分支节点mk前的每个分支节点中的各分支函数LFk,i,j可以得到线性拟合函数LFk,i,j的关于每个输入变量的参数集LFPQk,i,j={(p1,q1),(p2,q2),...,(pNi,qNi)},其中Ni为输入变量的个数。线性拟合函数LFk,i,j由参数集LFPQk,i,j表示。
第一种线性拟合的实施方式采用多元线性回归的方式有诸多实测数据限制。因此本发明优先采用第二和第三种线性拟合的实施方式。由于线性拟合是迭代过程,输入向量集U在迭代中增加,因此,采用第三种线性拟合的实施方式得到的线性拟合参数pj和qj比第二种线性拟合的实施方式更有变化性。因此,本发明以第三种线性拟合的实施方式为最优实施方案。
为方便后续说明,第一种线性拟合的实施方式的输出{a0,a1,...,aNi}可以转换成二和第三种线性拟合的实施方式的输出LFPQk,i,j={(p1,q1),(p2,q2),...,(pNi,qNi)},转换可采用如下的方法:pi=ai;qi=Fy,z(u1)-u1,i×ai。由此,三种线性拟合的实施方式具备相同格式或类型的输出结果。
六、可行区间的计算
本步骤为前述的步骤S5。
可行区间是指产生经过分支节点B及覆盖分支节点B完成修改的条件/判定覆盖缺少的判定及判定中各条件可能取值组合的可行取值区间。
以分支节点B的关联路径k上位于B之前(不含B)的第i个分支节点的逻辑表达式ck,i为例,ck,i=Fk,i,1(X)rel1 0op1Fk,i,2(X)rel2 0op2...ops-1Fk,i,s(X)rels0,这里opi表示与(And)或或(Or)的逻辑运算符,s表示路径k上第i个分支节点上条件的数量。当执行待测源代码时,覆盖分支节点B的关联路径k上位于分支节点B之前(不含B)的部分要求逻辑表达式ck,i为假。其中,某分支函数Fk,i,j(X)大于0时,逻辑表达式ck,i才有可能为假,这意味着只有当Fk,i,j(X)大于0时,才能覆盖分支节点B的关联路径k上位于分支节点B之前(不含B)的部分。当X位于区间Dk,i,j时,满足Fk,i,j(X)大于0,则区间Dk,i,j为可行区间。由于区间Dk,i,j与分支函数Fk,i,j(X)相对应,区间Dk,i,j又称为分支函数Fk,i,j(X)的可行区间。合并逻辑表达式ck,i内的各个分支函数的可行区间Dk,i,j即可得到逻辑表达式ck,i的可行区间Dk,i。逻辑表达式ck,i的可行区间Dk,i又称为路径k上第i个分支节点的可行区间。
再以分支节点B的关联路径k上分支节点B(假设B为路径k上的第h个分支节点)的逻辑表达式ck,h为例,ck,h=Fk,h,1(X)rel1 0op1Fk,h,2(X)rel2 0op2...ops-1Fk,h,s(X)rels 0,这里opi表示与(And)或或(Or)的逻辑运算符,s表示路径k上第h个分支节点上条件的数量。当执行待测源代码时,覆盖分支节点B完成修改的条件/判定覆盖缺少的一个判定/条件取值组合要求逻辑表达式ck,h为假。其中,某分支函数Fk,h,j(X)大于0时,逻辑表达式ck,h才有可能为假并且Fk,h,j(X)relj 0对应的条件取得未覆盖的取值或表明判定中其他条件独立影响了判定,这意味着只有当Fk,h,j(X)大于0时,才能覆盖分支节点B完成修改的条件/判定覆盖缺少的一个判定/条件取值组合。当X位于区间Dk,h,j时,满足Fk,h,j(X)大于0,则区间Dk,h,j为可行区间。由于区间Dk,h,j与分支函数Fk,h,j(X)相对应,区间Dk,h,j又称为分支函数Fk,h,j(X)的可行区间。合并逻辑表达式ck,h内的各个分支函数的可行区间Dk,h,j即可得到逻辑表达式ck,h的可行区间Dk,h。逻辑表达式ck,h的可行区间Dk,h又称为路径k上第h个分支节点的可行区间。
合并最远公共分支节点mk前的每个分支节点的可行区间Dk,i可以得到分支节点B在关联路径k上的可行区间Ik。因此,步骤S5分成以下四个步骤:
S51:计算分支节点B的各关联路径k上位于分支节点B之前(含B)的各个分支节点中各分支函数的可行区间Dk,i,j;
S52:合并每个分支节点内的各分支函数的可行区间Dk,i,j得到各分支节点的可行区间Dk,i;
S53:合并最远公共分支节点mk前的各分支节点的可行区间Dk,i得到分支节点B在关联路径k上的可行区间Ik。
S54:合并分支节点B在各关联路径k上的可行区间Ik,得到分支节点B的可行区间I。
步骤S51中,分支函数Fk,i,j(X)的可行区间Dk,,j由分支函数Fk,i,j(X)对应的线性拟合函数LFk,i,j(X)计算获得。前述三种线性拟合的实施方式的输出为LFPQk,i,j={(p1,q1),(p2,q2),...,(pNi,qNi)}。用LFPQk,i,j表示的线性拟合函数LFk,i,j(X)是按各个输入变量分别定义的线性拟合函数集,在计算可行区间Dk,i,j时,可采用同样的方式,即按各个输入变量分别计算不等式方程LFk,i,j(xk)reli 0=pk*xk+qk reli 0的关于xw区间解Dk,i,j,w,Dk,i,j,w为路径k上第i个分支节点第j个分支函数的第w个输入变量的可行区间。本领域技术人员理解,这样得到的xw区间解Dk,i,j,w很宽,一般为(a,∞)或(-∞,a)的形式。注意到线性拟合函数LFk,i,j(xw)=pw*xw+qw由Vk,y,z,j={(u1,j,Fk,y,z(u1,j)),(u2,j,Fk,y,z(u2,j)),...,(uTU,j,Fk,u,z(uTU,j))}计算获得。因此可以将可行区间Dk,i,j,w限制在{u1,j,u2,j,...,uTU,j}相关区间RD内,即可行区间Dk,i,j,w是相关区间RD与不等式方程的区间解的交集。相关区间RD可以为:(2×umin,j-umax,j,umax,j)或(2×umin,j-umax,j,2×umax,j-umin,j)或(umin,j,2×umax,j-umin,j)或(umin,j,umax,j)或(ura,j,urb,j)或(2×ura,j-urb,j,urb,j)或(2×ura,j-urb,j,2×urb,j-ura,j)或(ura,j,2×urb,j-ura,j)等等。其中,umin,j=min{u1,j,u2,j,...,uTU,j},umax,j=max{u1,j,u2,j,...,uTU,j};ura,j,urb,j∈{u1,j,u2,j,...,uTU,j},为前述计算中,ura,j=min{uTU-t,j,uTU,j},urb,j=max{uTU-t,j,uTU,j}。每个输入变量可以得到一个可行区间Dk,i,j,w,由此可以得到分支函数Fk,i,j(X)的可行区间Dk,i,j={Dk,i,j,1,Dk,i,j,2,...,Dk,i,j,s},其中s为输入变量的个数。
步骤S52中分支节点的可行区间Dk,i采用与逻辑表达式ck,i=Fk,i,1(X)rel10op1Fk,i,2(X)rel2 0op2...ops-1Fk,i,s(X)rels 0一致的交并集运算规则进行合并:
Dk,i=Dk,i,1op1Dk,i,2op2...ops-1Dk,i,s。
步骤S53中可行区间Ik采用交集运算规则进行合并:
其中mk为最远公共分支节点。
步骤S54中可行区间I采用并集运算规则进行合并:
其中NB为分支节点B的关联路径集中路径个数;
最终得到的可行区间I={I1,I2,...,Is}。其中s为输入变量的个数,Ii为第i个输入变量的可行区间。输入变量的可行区间Ii为由可行分段区间组成的可行分段区间集,Ii={Ii,1,Ii,2,...,Ii,Mi},其中,Ii,j为第i个输入变量第j个可行分段区间,Mi为第i个输入变量可行分段区间数。
七、输入向量集的扩展
本步骤即为前述的步骤S6,在可行区间I内随机选取各输入变量的输入值得到测试数据集加入至输入向量集U中。
由于I={I1,I2,...,Is},而Ii={Ii,1,Ii,2,...,Ii,Mi}。本步骤中只需要从各个输入变量的可行分段区间集Ii的各个可行分段区间中随机选择一数据即可构建新的输入向量集T。由于每个输入变量都有Mi个可行分段区间,因此每个输入变量能从中选出Mi随机数。将所有的输入变量的各个可行分段区间所得的随机数组合后可产生M1×M2×...×Ms个输入向量。构建新的输入向量集T与原输入向量集U合并后得到新的输入向量集U。
对于部分比较特殊的输入变量,其对应可行分段区间数只有1个。这种情形下,可以在扩展区间中随机取值。扩展区间分左扩展区间,右扩展区间。假设第i个输入变量的可行区间唯一的分段区间Ii,1为(a,b),a<b,则左扩展区间为(2b-a,a),右扩展区间为:(b,2a-b)。
八、迭代与迭代的结束
本步骤即为前述的步骤S7和步骤S8。
步骤S7,重复执行步骤S3至S6直到步骤S3至S6执行的次数达到限定的次数。步骤S3至S6是迭代循环的过程,每经一轮的迭代循环,输入向量集U内的输入向量也随之变化。假如在步骤S3中,输入向量集U中存在一个输入向量执行待测源程序时经过所述分支节点B且覆盖一个B中判定及判定中条件未出现的取值组合,则记录该输入向量作为所述分支节点B的一个测试数据,假如所述分支节点B不存在未覆盖的判定及判定中条件的取值组合并且表明了分支节点B的所有的条件都独立影响B的判定,则记录的测试数据集作为所述分支节点B的测试数据集,整个迭代过程结束。假如迭代循环的次数达到预先设定的限定次数时,表明分支节点B不能完成所有的修改的条件/判定覆盖。假如分支节点B不可达同样需要返回分支节点B的测试数据集,即步骤S8。
步骤S8,返回记录的B的测试数据集作为分支节点B的修改的条件/判定覆盖的测试数据集。
Claims (4)
1.一种面向修订的条件判定覆盖的测试数据自动生成方法,包括分析待测源程序获得待测源程序所有路径的集合和所有分支节点的集合BS以及分支节点的关联路径集的集合的步骤,其特征在于,该方法还包括对分支节点的集合BS中的每一分支节点执行以下步骤:
S1:根据分支节点的关联路径集中各路径上位于分支节点之前的各分支节点的各个条件,构建关于输入变量向量X的分支函数Fk,i,j(X);所述输入变量向量X为所述待测源程序输入变量构成的向量;所述分支函数Fk,i,j(X)表示路径k上第i个分支节点的第j个条件的分支函数;所述路径k经过分支节点;k为分支节点的关联路径集中路径的序号;
S2:构建初始的输入向量集U;所述初始的输入向量集U至少包含两个输入向量;
S3:以输入向量集U中每个输入向量作为待测源程序的输入执行待测源程序,计算出最远公共分支节点mk,并同时计算所述分支节点的关联路径集中各路径上位于分支节点之前的每个分支节点上的各分支函数Fk,i,j(X),从而获得所述分支节点的关联路径集中各路径上位于分支节点之前的各个分支节点上的各分支函数值的集合V;当执行待测源程序时的执行路径经过分支节点时计算分支节点的判定和判定中各个条件的取值;假如输入向量集U中存在一个输入向量执行待测源程序时执行路径经过分支节点且使分支节点的判定或判定中某个条件产生新的取值,则记录该输入向量作为所述分支节点的一个测试数据;假如所述分支节点的测试数据集覆盖了分支节点的判定及判定中各条件所有可能取值并且每个条件都独立影响了判定,则返回该测试数据集作为所述分支节点的测试数据集;所述最远公共分支节点mk为路径k的最远公共分支节点;
S4:根据分支节点的关联路径集中各路径上位于分支节点之前的各个分支节点上的各分支函数值的集合V以及最远公共节点mk构建路径k上位于最远公共节点mk之前的每个分支节点的各分支函数的拟合函数LFk,i,j;LFk,i,j表示路径k上第i个分支节点的第j个条件的分支函数的线性拟合函数;
S5:根据分支节点的关联路径集中各路径上位于分支节点之前的每个分支节点中的各分支函数的线性拟合函数LFk,i,j和待测源程序计算可行区间I;所述可行区间I={I1,I2,...,Is},其中,s为输入变量的个数,Ii为第i个输入变量的可行区间,Ii={Ii,1,Ii,2,...,Ii,Mi},其中,Ii,j为第i个输入变量第j个可行分段区间,Mi为第i个输入变量可行分段区间数;
S6:在可行区间I内随机选取各输入变量的输入值得到测试数据集加入至输入向量集U中;当Mi为1时,从Ii为第i个输入变量的可行区间的唯一分段区间Ii,1的扩展区间中随机取值构建测试数据;
S7:重复执行步骤S3至S6直到步骤S3至S6执行的次数达到限定的次数;
S8:返回所有记录的所述分支节点的测试数据作为所述分支节点的测试数据集;所述步骤S5包括:
S51:计算分支节点的关联路径集中各路径上位于分支节点之前的各个分支节点中各分支函数的可行区间Dk,i,j;所述可行区间Dk,i,j为路径k上第i个分支节点的第j个条件的分支函数的可行区间;
S52:合并每个分支节点内的各分支函数的可行区间Dk,i,j得到各分支节点的可行区间Dk,i;所述可行区间Dk,i为路径k上第i个分支节点的可行区间;
S53:合并最远公共分支节点mk前的各分支节点的可行区间Dk,i得到分支节点在各路径上的可行区间Ik;所述可行区间Ik为路径k的可行区间;
S54:合并分支节点在各路径上的可行区间Ik,得到分支节点的可行区间I。
2.如权利要求1所述的面向修订的条件判定覆盖的测试数据自动生成方法,其特征在于,
所述步骤S2中所述的初始的输入向量集U包含Ni+1个输入向量,所述Ni为输入变量的个数;初始的输入向量集U={u0,u1,u2,...,uNi},其中ui为第i个输入向量,uNi为第Ni个输入向量,输入向量u0为随机生成;ui={ui,1,ui,2,...,ui,Ni};ui与u0满足关系:其中i,j∈{1,2,...,Ni};ui,j为第i个输入向量中的第j个变量所对应的值,ui,Ni为第i个输入向量中的第Ni个变量所对应的值;i表示输入向量集中的序号,j表示输入变量的序号。
3.如权利要求1所述的面向修订的条件判定覆盖的测试数据自动生成方法,其特征在于,所述步骤S3包括:
S31:从输入向量集U获取未执行的输入向量ut;其中,ut为输入向量集U中第t个输入向量;
S32:判断未执行的输入向量ut是否存在;假如不存在未执行的输入向量,则执行步骤S34;否则执行步骤S33;
S33:根据ut执行待测源代码得到执行的路径与分支节点的关联路径集中各路径的公共分支节点mk,t,计算路径k上位于分支节点之前的各分支节点的分支函数Fk,i,j(X)的值,分支节点的关联路径集中所有路径的各个分支节点的各分支函数Fk,i,j(X)的值构成集合V;若执行的路径经过分支节点,则执行的路径为分支节点的一条关联路径,根据该关联路径上分支节点的判定中各个条件的分支函数值得到分支节点的判定和判定中各条件的取值;假如分支节点的判定或判定中条件产生了新的取值,则记录该输入向量作为所述分支节点的一个测试数据;假如分支节点的测试数据集覆盖了分支节点的判定且判定中各条件所有可能取值并且每个条件都独立影响了判定,返回该测试数据集作为所述分支节点的测试数据集并结束对整个分支节点生成测试数据的过程;其中,mk,t为输入向量集U中第t个输入向量ut执行待测源代码得到执行的路径k与分支节点的关联路径集中各路径的公共分支节点;
S34:从分支节点的各关联路径k记录的{mk,1,mk,2,...,mk,TU}中选取最远公共分支节点mk;其中,mk,i为输入向量集U中第i个输入向量ui执行待测源代码得到执行的路径k与分支节点的关联路径集中各路径的公共分支节点,mk,TU为输入向量集U中第TU个输入向量uTU执行待测源代码得到执行的路径k与分支节点的关联路径集中各路径的公共分支节点;
其中,t为输入向量ut输入向量集U中的序号,TU为输入向量集U中元素的个数。
4.如权利要求1所述的面向修订的条件判定覆盖的测试数据自动生成方法,其特征在于,所述步骤S4包括以下步骤:
S41:输入向量集U和分支节点的关联路径集中各路径上位于分支节点之前的各个分支节点的各分支函数值的集合V以及最远公共节点mk构建坐标集Vk,y,z,j={(u1,j,Fk,y,z(u1,j)),(u2,j,Fk,y,z(u2,j)),...,(uTU,j,Fk,y,z(uTU,j))};
S42:以Vk,y,z,j={(u1,j,Fk,y,z(u1,j)),(u2,j,Fk,y,z(u2,j)),...,(uTU,j,Fk,y,z(uTU,j))}内两个相邻的坐标点构建Fk,y,z(xj)的线性拟合函数LFk,y,z(xj)=pj*xj+qj,得到参数集LFPQk,i,j={(p1,q1),(p2,q2),...,(pNi,qNi)};
其中,Vk,y,z,j表示路径k上第y个分支节点第z个分支函数对应第j个输入变量的坐标集,其中y≤m;ui,j为输入向量集U中第i个输入向量的第j个输入变量的值;uTU,j为输入向量集U中第TU个输入向量的第j个输入变量的值;Fk,y,z(xj)为路径k上第y个节点第z个分支函数关于第j个输入变量的函数;LFk,y,z(xj)为路径k上第y个节点第z个分支函数关于第j个输入变量的线性拟合函数;xj表示第j个输入变量;LFPQk,i,j为路径k上第i个节点第j个分支函数的线性拟合函数的参数集;pj和qj为第j个输入变量所对应的线性拟合函数的两个系数;pNi和qNi为第Ni个输入变量所对应的线性拟合函数的两个系数;TU为输入向量集U中输入向量的个数;Ni为输入变量的个数。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410271281.4A CN104050082B (zh) | 2014-06-17 | 2014-06-17 | 一种面向修订的条件判定覆盖的测试数据自动生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410271281.4A CN104050082B (zh) | 2014-06-17 | 2014-06-17 | 一种面向修订的条件判定覆盖的测试数据自动生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104050082A CN104050082A (zh) | 2014-09-17 |
CN104050082B true CN104050082B (zh) | 2017-04-26 |
Family
ID=51502968
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410271281.4A Active CN104050082B (zh) | 2014-06-17 | 2014-06-17 | 一种面向修订的条件判定覆盖的测试数据自动生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104050082B (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105607989A (zh) * | 2014-11-18 | 2016-05-25 | 阿里巴巴集团控股有限公司 | 一种软件测试数据抽样方法及系统 |
CN104461906B (zh) * | 2014-12-30 | 2017-08-25 | 中国科学院软件研究所 | 一种基于代码转换的mc/dc覆盖准则的软件测试数据生成方法 |
CN104881359B (zh) * | 2015-06-10 | 2017-11-24 | 南京大学 | 一种运用线性拟合实现路径覆盖的测试数据自动生成方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075208A (zh) * | 2007-07-19 | 2007-11-21 | 中兴通讯股份有限公司 | 应用于白盒路径测试的测试用例生成方法 |
CN101436128A (zh) * | 2007-11-16 | 2009-05-20 | 北京邮电大学 | 软件测试用例自动生成方法及系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7257657B2 (en) * | 2003-11-06 | 2007-08-14 | International Business Machines Corporation | Method and apparatus for counting instruction execution and data accesses for specific types of instructions |
-
2014
- 2014-06-17 CN CN201410271281.4A patent/CN104050082B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101075208A (zh) * | 2007-07-19 | 2007-11-21 | 中兴通讯股份有限公司 | 应用于白盒路径测试的测试用例生成方法 |
CN101436128A (zh) * | 2007-11-16 | 2009-05-20 | 北京邮电大学 | 软件测试用例自动生成方法及系统 |
Non-Patent Citations (1)
Title |
---|
分量线性拟合函数驱动的测试数据自动生成技术研究;丁文旭;《中国优秀硕士学位论文全文数据库 信息科技辑》;20121015;第5-28页 * |
Also Published As
Publication number | Publication date |
---|---|
CN104050082A (zh) | 2014-09-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103942147B (zh) | 一种线性拟合函数驱动的测试数据自动生成方法 | |
Lombardi et al. | Boosting combinatorial problem modeling with machine learning | |
Hamraz et al. | A matrix-calculation-based algorithm for numerical change propagation analysis | |
Huang et al. | Forecasting container throughput of Qingdao port with a hybrid model | |
Kondratenko et al. | Decision-making based on fuzzy estimation of quality level for cargo delivery | |
Plehn et al. | Assessing the impact of changes and their knock-on effects in manufacturing systems | |
CN104050082B (zh) | 一种面向修订的条件判定覆盖的测试数据自动生成方法 | |
Nikas et al. | Developing robust climate policies: a fuzzy cognitive map approach | |
JPWO2018079225A1 (ja) | 自動予測システム、自動予測方法および自動予測プログラム | |
CN104050083B (zh) | 一种面向条件判定覆盖的测试数据自动生成方法 | |
Quasim et al. | Artificial intelligence as a business forecasting and error handling tool | |
CN113159441A (zh) | 银行业务项目实施情况的预测方法及装置 | |
Nural et al. | Automated predictive big data analytics using ontology based semantics | |
Lantow et al. | Towards a classification framework for approaches to enterprise architecture analysis | |
Loniewsli et al. | An automated approach for architectural model transformations | |
CN104881359B (zh) | 一种运用线性拟合实现路径覆盖的测试数据自动生成方法 | |
US9576319B2 (en) | Methods and systems of four-valued Monte Carlo simulation for financial modeling | |
Dimitropoulos et al. | Aition: a scalable platform for interactive data mining | |
Saada et al. | Learning Model Transformations from Examples using FCA: One for All or All for One? | |
CN114254764B (zh) | 基于反馈的机器学习模型搜索方法、系统、设备及介质 | |
Potoniec et al. | Combining ontology class expression generation with mathematical modeling for ontology learning | |
Barbier et al. | Contribution of model-driven engineering to crop modeling | |
Sheivandi et al. | Automatic Service Composition Based on Graph Coloring | |
Guttmann | Second-order properties of undirected graphs | |
Danielson et al. | Development of software for decision analysis |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |