CN104809067A - 面向等式约束的测试用例生成方法和装置 - Google Patents
面向等式约束的测试用例生成方法和装置 Download PDFInfo
- Publication number
- CN104809067A CN104809067A CN201510229658.4A CN201510229658A CN104809067A CN 104809067 A CN104809067 A CN 104809067A CN 201510229658 A CN201510229658 A CN 201510229658A CN 104809067 A CN104809067 A CN 104809067A
- Authority
- CN
- China
- Prior art keywords
- variable
- rollback
- matrix
- test case
- interval
- 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.)
- Granted
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 101
- 238000000034 method Methods 0.000 title claims abstract description 62
- 239000011159 matrix material Substances 0.000 claims abstract description 83
- 230000003190 augmentative effect Effects 0.000 claims abstract description 40
- 238000005516 engineering process Methods 0.000 claims description 29
- 230000009194 climbing Effects 0.000 claims description 8
- 238000004458 analytical method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 206010051602 Laziness Diseases 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008094 contradictory effect Effects 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 238000013100 final test Methods 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000007493 shaping process Methods 0.000 description 1
- 238000013522 software testing Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种面向等式约束的测试用例生成方法和装置,测试用例生成方法包括:接收测试用例生成请求,生成请求中携带待测程序;获取待测程序的预定路径、表达式列表、预定路径中的各个变量及各个变量的第一取值区间;根据表达式列表中的等式,确定等式约束的第一系数矩阵及第一增广矩阵;判断第一系数矩阵的秩是否小于第一增广矩阵的秩;若否,则对各个变量进行回退运算,确定各个变量的第二取值区间;判断各个变量的第二取值区间的边界值是否相等;若相等,则根据各个变量的第二取值区间生成测试用例。本发明提供的面向等式约束的测试用例生成方法和装置,生成测试用例的过程无需人工干预,速度快,效率高,可对待测程序实现100%覆盖。
Description
技术领域
本发明属于软件测试技术领域,尤其是涉及一种面向等式约束的测试用例生成方法和装置。
背景技术
软件测试是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤。
在众多的软件测试方法中,面向路径的测试用例生成过程可以描述为:给定一个程序模块(以下简称P)和P中任意一条路径(以下简称W),一个变量(以下简称xi)如果出现在P的一个输入声明中,则称xi为P的一个输入变量,xi的定义域(以下简称Dxi)为xi所有可能的取值集合。一个输入向量x={x1,x2,…,xm}∈(Dx1×Dx2×…×Dxm)称为P的一个程序输入,简称为P的一个输入,其中m为P中输入变量的个数。设P的所有输入数据表示为解空间D,求x∈D,使得以x为输入沿W运行P。目前路径W的测试用例生成主要是靠人工来完成,需要大量的时间。
目前,被测程序中有大量等式约束存在,如果主要靠人工完成,时间久,效率低,且若无法满足等式约束则会导致最终生成的测试用例无法达到100%覆盖率,从而难以满足对于软件可靠性的要求。
发明内容
本发明提供一种面向等式约束的测试用例生成方法和装置,用以克服现有技术中包含等式约束的被测程序生成测试用例时,时间久,效率低的问题。
本发明提供了一种面向等式约束的测试用例生成方法,包括:接收测试用例生成请求,所述生成请求中携带待测程序;
获取所述待测程序的预定路径、表达式列表、所述预定路径中的各个变量及各个变量的第一取值区间;
根据所述表达式列表中的等式,确定等式约束的第一系数矩阵及第一增广矩阵;
判断所述第一系数矩阵的秩是否小于所述第一增广矩阵的秩;
若否,则对所述各个变量进行回退运算,确定各个变量的第二取值区间;
判断所述各个变量的第二取值区间的边界值是否相等;
若相等,则根据所述各个变量的第二取值区间生成测试用例。
本发明提供了一种面向等式约束的测试用例生成装置,包括:
接收模块,用于接收测试用例生成请求,所述生成请求中携带待测程序;
获取模块,用于获取所述待测程序的预定路径、表达式列表、所述预定路径中的各个变量及各个变量的第一取值区间;
确定模块,用于根据所述表达式列表中的等式,确定等式约束的第一系数矩阵及第一增广矩阵;
判断模块,用于判断所述第一系数矩阵的秩是否小于所述第一增广矩阵的秩;
运算模块,用于若否,则对所述各个变量进行回退运算,确定各个变量的第二取值区间;
所述判断模块,还用于判断所述各个变量的第二取值区间的边界值是否相等;
生成模块,用于若相等,则根据所述各个变量的第二取值区间生成测试用例。
本发明提供的面向等式约束的测试用例生成方法和装置,通过构造待测程序中等式约束的系数矩阵和增广矩阵,在确定系数矩阵的秩大于增广矩阵时,对待测程序中的各个变量的取值区间进行回退运算,然后根据各个变量的回退运算不发生矛盾的取值区间生成测试用例,生成测试用例的过程无需人工干预,速度快,效率高,可对待测程序实现100%覆盖。
附图说明
图1为本发明提供的面向等式约束的测试用例生成方法实施例一的流程图;
图2为本发明提供的面向等式约束的测试用例生成方法实施例二的流程图;
图3为本发明提供的确定所有变量的第二取值区间的流程示意图;
图4为本发明提供的面向等式约束的测试用例生成装置实施例一的结构示意图;
图5为本发明提供的面向等式约束的测试用例生成装置实施例二的结构示意图。
具体实施方式
图1为本发明提供的面向等式约束的测试用例生成方法实施例一的流程示意图。如图1所示,该面向等式约束的测试用例生成方法包括:
S100,接收测试用例生成请求,所述生成请求中携带待测程序。
本测试用例生成方法的执行主体为测试用例生成装置。测试用例生成装置接收的测试用例生成请求,可以是在收到待测程序后触发的;也可以是在测试用例生成装置获得待测程序后,由人工在通过触发测试用例生成装置中的测试用例生成按钮触发的,本发明对此不做限定。
S101,获取所述待测程序的预定路径、表达式列表、所述预定路径中的各个变量及各个变量的第一取值区间。
测试用例生成装置接收到待测程序后,对待测程序进行分析,读取待测程序的预定路径,并生成待测程序的控制流图。进而通过遍历待测程序的控制流图获得预定路径中的各个变量、各个变量的取值区间及表达式列表等。
具体的,首先遍历控制流图,提取含有表达式的节点,并存储于线性表列中。然后遍历线性列表中的每个节点,提取变量和表达式。
通过遍历线性列表中的每个节点,将条件语句中表达式和变量提取出来,其中,表达式用于条件的计算,变量作为后续搜索过程的操作对象。这个过程可以沿着上述提取含有表达式的节点的路径来进行,过程中还要考虑路径上的赋值语句。某些条件能够唯一地确定某个或某些变量的值。而这些隐含的值就如同赋值一样,不再需要进一步搜索。这可以大大缩少搜索空间。对这种条件要优先进行计算。例如,条件语句:if(a==3),此时,优先计算该语句,可以很快确定变量a的取值空间就只能是{3}。
上述优先计算能唯一确定值的条件的策略衍生的一个搜索原则是有限区域优先搜索:某些变量在最初或经过某些条件约束,使搜索区域变得只有有限几个点,在这种条件下优先搜索这种变量有助于尽早发现矛盾或搜索成功。例如,假设x为一个整型变量,条件语句if(1≤x≤3),则确定了x∈[1,2,3]。
原始输入变量通常包括函数参数、函数中用到的全局变量和静态变量,首先通过遍历抽象语法树,识别出这些变量。变量的取值区间通常根据被测程序的语言中对应的类型和操作系统运行环境来确定。原始输入变量的定义域由变量的类型和操作系统运行环境已经决定,计算程序中的赋值和条件语句的限定范围,对原始输入变量的取值空间进一步压缩。最终确定路径末尾节点各输入变量取值区间。
定义表达式的格式为类似数学表达式的格式,例如对于被测程序
提取的表达式列表包括为{x1+x2+x3=100,x1-x2-x3=10}。
S102,根据所述表达式列表中的等式,确定等式约束的第一系数矩阵及第一增广矩阵。
例如,在上述例子中,提取的第一系数矩阵A和第一增广矩阵B分别为:
S103,判断所述第一系数矩阵的秩是否小于所述第一增广矩阵的秩。
S104,若否,则对所述各个变量进行回退运算,确定各个变量的第二取值区间。
具体的,上述矩阵A的秩R(A)=2,矩阵B的秩R(B)=2,R(A)=R(B),即矩阵A的秩不小于矩阵B的秩。则确定上述的预定路径可达,然后可对上述各变量的取值区间进行回退运算。对各变量的取值区间进行回退运算,是指依次为各变量在各变量对应的取值区间中取值赋值,然后依次将各变量的取值代人待测程序控制流图的入口节点,遍历控制流图进行区间运算。
相应的,若通过判断确定待测程序中等式约束的系数矩阵的秩小于增广矩阵的秩,则可确定该预定路径不可达,即可结束该测试用例的生成。不可达路径是指在给定的输入区间内,该路径是永远不可能被执行。
分析表明,一般的程序中存在大量的不可达路径。在产生测试用例的过程中,选择不可达路径是可能的,这也是影响测试效率的主要因素之一,因此应该尽早停止对该路径的计算,退出测试用例生成过程。
S105,判断所述各个变量的第二取值区间的边界值是否相等。
S106,若相等,则根据所述各个变量的第二取值区间生成测试用例。
具体的,为每个变量的取值区间进行回退运算时,若控制流图可以达到程序末尾节点,说明该变量的回退值的回退运算未发生矛盾,则该变量的取值区间的边界即可定为以该回退值为上下边界的区间,举例来说,若整形变量X的第一取值区间为[1,10],对变量X进行回退运算时,将变量X赋值为6时,代入待测程序控制流图的入口节点,通过遍历控制流图可达程序末尾节点,则可暂时确定变量X的第二取值区间为[6,6]。当遍历完所有的变量后,再判断所有变量的取值区间的边界是否相等,若都相等,则说明所有变量都进行了区间运算,即可根据所有变量的第二取值区间生成测试用例,由于此时生成的测试用例中的所有变量的取值区间均通过了回退运算,所以该测试用例可以对待测程序实现100%覆盖。
本实施例提供的面向等式约束的测试用例生成方法,通过构造待测程序中等式约束的系数矩阵和增广矩阵,在确定系数矩阵的秩大于增广矩阵时,对待测程序中的各个变量的取值区间进行回退运算,然后根据各个变量的回退运算不发生矛盾的取值区间生成测试用例,生成测试用例的过程无需人工干预,速度快,效率高,可对待测程序实现100%覆盖。
图2为本发明提供的面向等式约束的测试用例生成方法实施例二的流程示意图。如图2所示,该面向等式约束的测试用例生成方法包括:
S200,接收测试用例生成请求,所述生成请求中携带待测程序。
S201,获取所述待测程序的预定路径、表达式列表、所述预定路径中的各个变量及各个变量的第一取值区间。
S202,根据所述表达式列表中的等式,确定等式约束的第一系数矩阵及第一增广矩阵。
S203,判断所述第一系数矩阵的秩是否小于所述第一增广矩阵的秩,若否,则执行S204,若是,则执行210。
S204,对所述各个变量进行回退运算,确定各个变量的第二取值区间。
具体的,图3为本实施例提供的确定各个变量的第二取值区间的流程示意图。如图3所示,上述S204包括:
S301,根据第一预设的规则对所述各个变量进行排序,确定当前变量。
具体的,第一预设的规则可以是根据变量在表达式中出现的次数,或者变量的区间大小等等,本实施例对此不做限定。
S302,判断所述表达式列表中所有等式中的变量个数是否都小于3个,若是,则执行S303,否则,执行S316
即对等式采取“懒惰求解”策略,只有当等式中有两个变量的时候才对其采用S303中的爬山法进行求解,否则只进行是否有解的判断,这样可以减少步骤S316的运算量。
S303,根据爬山法回退值选取规则为所述当前变量选取第一回退值。
为当前变量选择回退值,此时当前变量的区间形如[V,V],即表示为上下界相等的区间,而其他变量(已回退的和未回退的)的区间是保持不变的,即距离上次回退运算唯一发生变化的就是当前变量的区间从一个有界区间变成了一个确定值。
S304,对所述第一系数矩阵和第一增广矩阵进行约简,确定第二系数矩阵和第二增广矩阵。
将为当前变量选取的第一回退值代人等式集合中,将各等式进行化简,然后确定化简后的等式的第二系数矩阵和第二增广矩阵。举例来说,上述表达式列表包括为{x1+x2+x3=100,x1-x2-x3=10},若当前变量为x2,根据爬山法回退值选取规则为x2选取的第一回退值为5,化简后的表达式列表为{x1+x3=95,x1-x3=15}。相应的,得到的第二系数矩阵为 第二增广矩阵为
S305,判断所述第二系数矩阵的秩是否小于所述第二增广矩阵的秩,若否,则执行S306,若是,则执行S314。
S306,对所述当前变量进行回退运算。
对当前变量的第一回退值进行回退运算,即将当前变量的边界相等的取值区间代人程序控制流图的入口节点,进行区间运算。
S307,判断所述当前变量的回退运算是否发生矛盾,若是,则执行S310,否则,执行S308。
S308,判断是否已对所有变量进行了回退运算,若是,则执行S309,否则,执行S317。
S309,确定所有变量的第二取值区间。
S310,判断是否已遍历完当前变量所有的回退值,若是,则执行312,若否,则执行S311。
S311,为所述当前变量选取第二回退值,返回执行S306。
具体的,通过对矛盾信息进行分析,若确定对当前变量的第一回退值选取的偏小,则可在第一回退值与当前变量的取值区间的上边界值间选取第二回退值,若确定对当前变量的第一回退值选取的偏大,则可在第一回退值与当前变量的取值区间的下边界值间选取第二回退值。
S312,判断是否已对当前变量进行回溯运算,若是,则执行S318,若否,则执行S313。
S313,对所述当前变量进行回溯运算,并为所述当前变量选取第三回退值,返回执行S306。
具体的,对当前变量进行回溯运算,是指根据上述为所有变量进行排序的结果,从排序的变量中选取当前变量的前一个变量,本发明称为前一变量,为前一变量重新进行回退运算,选取新的回退值,在前一变量新的回退值的基础上,重新为当前变量选取回退值,重新对当前变量的回退值进行回退运算。
需要说明的是,在执行S313之前,还包括:判断当前变量是否为变量排序队列中的首变量,若是,则确定该待测程序生成测试用例失败,若否,则执行S313。
即上述对当前变量进行回溯运算时,若当前变量在遍历完前一变量所有的回退值后,仍无法通过回退运算,则可继续对前一变量的再前一个变量,本发明称为再前变量的回退值进行遍历,并在再前变量新的回退值的基础上,对前一变量进行回退运算,然后对当前变量进行回退运算,直至当前变量的回退运算通过后,继续当前变量的后一变量进行回退运算,或者直至回溯到所有变量的排序队列中的首变量的所有可用回退值后,仍有变量的回退运算无法通过,则可确定待测程序的测试用例生成失败。
S314,判断是否已遍历完当前变量所有的回退值,若是,则执行S318,若否,则执行S315。
S315,根据爬山法回退值选取规则为所述当前变量选取第四回退值,然后基于所述第四回退值,执行S304。
需要说明的是,第四回退值是不同与第一回退值的值。
S316,根据第二预设的规则为所述当前变量选取第五回退值,然后基于所述第五回退值执行S306。
具体的,第二预设的规则可以是从当前变量的取值区间中选取中间值、最小值或者最大值作为第五回退值,本实施例对此不做限定。
S317,重新确定当前变量,返回执行S302。
若通过判断并未对待测程序中的所有变量进行回退运算,则可按照上述过程重新确定当前变量,并为当前变量选取回退值,继续进行回退运算。需要说明的是,重新确定当前变量时,可以根据上述S301对变量进行排序的结果,直接选取刚完成回退运算的变量的下一变量为当前变量,即待测程序中的所有变量根据排序结果,依次成为“当前变量”,依次进行回退运算。
S318,结束。
S205,判断所述各个变量的第二取值区间的边界值是否相等,若相等,则执行S206,否则返回执行S204。
S206,根据所述各个变量的第二取值区间生成测试用例。
S207,用所述生成的测试用例驱动所述待测程序,并记录所述待测程序实际执行的路径。
待测试用例生成后,可以对测试用例进行验证,可用生成的测试用例驱动待测程序,并记录待测程序在测试用例的驱动下的执行路径。
具体的,在上述S207之前还包括:
S207a,在所述待测程序中插装预设的代码。
具体的,在被测软件程序中插入预设的代码,以获得程序在被执行时行为的信息,上述预设的代码可以是语句。插装主要根据控制流图来确定插装点,在被测程序控制流图的开始、分支处对被测程序实施插装,然后生成抽象语法树上的插装语句树结点,然后将抽象语法树重新转换输出为源程序。
例如,下列程序:
经过自动插装后形如:
在执行被测程序的过程中,就可以收集程序实际执行的路径信息。
相应的,上述S207包括:
用所述生成的测试用例驱动所述待测程序;
根据所述插装的预设代码记录所述待测程序实际执行的路径。
需要说明的是,本实施例中的S207a与上述S201~S206间的顺序不唯一。可以在执行完S200后,就执行S207a,或者在执行完S201~S206间任意一步时即执行S207a,本实施例对此不做限定。
S208,判断所述实际执行路径与预定路径是否符合,若符合,则执行S209,否则执行S210。
S209,输出测试用例。
具体的,前面的插装代码记录了实际的执行路径,将其和预定的路径进行对比,若记录的实际执行路径与预定的路径符合,则说明测试用例正确,即可将测试用例输出给用户。相应的,若不符合,说明得到的测试用例并不能覆盖待测路径,就要重新生成,这是由于测试用例生成过程中的一些简化近似计算造成的。
S210,结束。
本实施例提供的面向等式约束的测试用例生成方法,通过构造待测程序中等式约束的系数矩阵和增广矩阵,在确定系数矩阵的秩大于增广矩阵时,对待测程序中的各个变量的取值区间进行回退运算,然后根据各个变量的回退运算不发生矛盾的取值区间生成测试用例,生成测试用例的过程无需人工干预,速度快,效率高,可对待测程序实现100%覆盖。并且利用生成的测试用例驱动待测程序,确保生成的测试用例驱动待测程序的实际路径与预定路径符合,进一步提高了生成的测试用例的可靠性。
图4为本发明提供的面向等式约束的测试用例生成装置实施例一的结构示意图。如图4所示,该测试用例生成装置400,包括:接收模块401、获取模块402、确定模块403、判断模块404、运算模块405及生成模块406。
其中,接收模块401,用于接收测试用例生成请求,所述生成请求中携带待测程序;获取模块402,用于获取所述待测程序的预定路径、表达式列表、所述预定路径中的各个变量及各个变量的第一取值区间;确定模块403,用于根据所述表达式列表中的等式,确定等式约束的第一系数矩阵及第一增广矩阵;判断模块404,用于判断所述第一系数矩阵的秩是否小于所述第一增广矩阵的秩;运算模块405,用于若否,则对所述各个变量进行回退运算,确定各个变量的第二取值区间;所述判断模块404,还用于判断所述各个变量的第二取值区间的边界值是否相等;生成模块406,用于若相等,则根据所述各个变量的第二取值区间生成测试用例。
本实施例的装置可以用于执行图1所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
图5为本发明提供的面向等式约束的测试用例生成装置实施例二的结构示意图。如图5所示,该测试用例生成装置500,在图4所示的基础上,还包括:驱动模块501。
其中,驱动模块501,用所述生成的测试用例驱动所述待测程序,并记录所述待测程序实际执行的路径;相应的,判断模块404,还用于判断所述实际执行路径与预定路径是否符合;确定模块403还用于,若符合,则确定测试用例正确。
进一步的,还包括:插装模块502,用于在所述待测程序中插装预设的代码;所述驱动模块501具体用于用所述生成的测试用例驱动所述待测程序;根据所述插装的预设代码记录所述待测程序实际执行的路径。
进一步地,所述运算模块,具体用于:
根据第一预设的规则对所述各个变量进行排序,确定当前变量;
判断所述表达式列表中所有等式中的变量个数是否都小于3个;
若是,则根据爬山法回退值选取规则为所述当前变量选取第一回退值;
根据所述第一回退值,对所述第一系数矩阵和第一增广矩阵进行约简,确定第二系数矩阵和第二增广矩阵;
判断所述第二系数矩阵的秩是否小于所述第二增广矩阵的秩;
若否,则对所述当前变量进行回退运算;
判断所述当前变量的回退运算是否发生矛盾;
若否,则判断是否已对所有变量进行回退运算;
若是,则确定所有变量的第二取值区间。
在本发明的一种可能的实现形式中,所述运算模块,还具体用于:
若否,则确定新的当前变量,重复执行所述确定所有变量的第二取值区间的过程,直至确定所述所有变量的第二取值区间。
在本发明的再一种可能的实现形式中,所述运算模块,还具体用于:
若是,则判断是否已遍历完所述当前变量的所有回退值;
若否,则为所述当前变量选取第二回退值,并基于所述第二回退值,为当前变量进行回退运算,直至遍历完所述当前变量的所有回退值。
在本发明的另一种可能的实现形式中,所述运算模块,还具体用于:
若是,则判断是否已对所述当前变量进行回溯运算;
若否,则对所述当前变量进行回溯运算;
为所述当前变量选取第三回退值,基于所述第三回退值对所述当前变量进行回退运算。
在本发明的又一种可能的实现形式中,所述运算模块,还具体用于:
若是,则判断是否已遍历完所述当前变量的所有回退值;
若否,则根据爬山法回退值选取规则为所述当前变量选取第四回退值;
根据所述第一回退值,重复执行对所述第一系数矩阵和第一增广矩阵进行约简,确定第二系数矩阵和第二增广矩阵。
在本发明的又一种可能的实现形式中,所述运算模块,还具体用于:
若否,则根据第二预设的规则为所述当前变量选取第五回退值;
基于所述第五回退值,为对所述当前变量进行回退运算。
本实施例的装置可以用于执行图2和3所示方法实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (10)
1.一种面向等式约束的测试用例生成方法,其特征在于,包括:
接收测试用例生成请求,所述生成请求中携带待测程序;
获取所述待测程序的预定路径、表达式列表、所述预定路径中的各个变量及各个变量的第一取值区间;
根据所述表达式列表中的等式,确定等式约束的第一系数矩阵及第一增广矩阵;
判断所述第一系数矩阵的秩是否小于所述第一增广矩阵的秩;
若否,则对所述各个变量进行回退运算,确定各个变量的第二取值区间;
判断所述各个变量的第二取值区间的边界值是否相等;
若相等,则根据所述各个变量的第二取值区间生成测试用例。
2.根据权利要求1所述的面向等式约束的测试用例生成方法,其特征在于,所述生成测试用例之后,还包括:
用所述生成的测试用例驱动所述待测程序,并记录所述待测程序实际执行的路径;
判断所述实际执行路径与预定路径是否符合;
若符合,则确定测试用例正确。
3.根据权利要求2所述的面向等式约束的测试用例生成方法,其特征在于,所述用所述生成的测试用例驱动所述待测程序,并记录所述待测程序实际执行的路径之前,还包括:
在所述待测程序中插装预设的代码;
所述用所述生成的测试用例驱动所述待测程序,并记录述待测程序实际执行的路径,包括:
用所述生成的测试用例驱动所述待测程序;
根据所述插装的预设代码记录所述待测程序实际执行的路径。
4.根据权利要求1所述的面向等式约束的测试用例生成方法,其特征在于,所述确定各个变量的第二取值区间,包括:
根据第一预设的规则对所述各个变量进行排序,确定当前变量;
判断所述表达式列表中所有等式中的变量个数是否都小于3个;
若是,则根据爬山法回退值选取规则为所述当前变量选取第一回退值;
根据所述第一回退值,对所述第一系数矩阵和第一增广矩阵进行约简,确定第二系数矩阵和第二增广矩阵;
判断所述第二系数矩阵的秩是否小于所述第二增广矩阵的秩;
若否,则对所述当前变量进行回退运算;
判断所述当前变量的回退运算是否发生矛盾;
若否,则判断是否已对所有变量进行回退运算;
若是,则确定所有变量的第二取值区间。
5.根据权利要求4所述的面向等式约束的测试用例生成方法,其特征在于,所述判断是否已对所有变量进行回退运算之后,还包括:
若否,则确定新的当前变量,重复执行所述确定所有变量的第二取值区间的过程,直至确定所述所有变量的第二取值区间。
6.根据权利要求4所述的面向等式约束的测试用例生成方法,其特征在于,所述判断所述当前变量的回退运算是否发生矛盾之后,还包括:
若是,则判断是否已遍历完所述当前变量的所有回退值;
若否,则为所述当前变量选取第二回退值,并基于所述第二回退值,为当前变量进行回退运算,直至遍历完所述当前变量的所有回退值。
7.根据权利要求6所述的面向等式约束的测试用例生成方法,其特征在于,所述判断是否已遍历完所述当前变量的所有回退值之后,还包括:
若是,则判断是否已对所述当前变量进行回溯运算;
若否,则对所述当前变量进行回溯运算;
为所述当前变量选取第三回退值,基于所述第三回退值对所述当前变量进行回退运算。
8.根据权利要求4所述的面向等式约束的测试用例生成方法,其特征在于,所述判断所述第二系数矩阵的秩是否小于所述第二增广矩阵的秩之后,还包括:
若是,则判断是否已遍历完所述当前变量的所有回退值;
若否,则根据爬山法回退值选取规则为所述当前变量选取第四回退值;
根据所述第一回退值,重复执行对所述第一系数矩阵和第一增广矩阵进行约简,确定第二系数矩阵和第二增广矩阵。
9.根据权利要求4所述的面向等式约束的测试用例生成方法,其特征在于,所述判断所述表达式列表中所有等式中的变量个数是否都小于3个之后,还包括:
若否,则根据第二预设的规则为所述当前变量选取第五回退值;
基于所述第五回退值,为对所述当前变量进行回退运算。
10.一种面向等式约束的测试用例生成装置,其特征在于,包括:
接收模块,用于接收测试用例生成请求,所述生成请求中携带待测程序;
获取模块,用于获取所述待测程序的预定路径、表达式列表、所述预定路径中的各个变量及各个变量的第一取值区间;
确定模块,用于根据所述表达式列表中的等式,确定等式约束的第一系数矩阵及第一增广矩阵;
判断模块,用于判断所述第一系数矩阵的秩是否小于所述第一增广矩阵的秩;
运算模块,用于若否,则对所述各个变量进行回退运算,确定各个变量的第二取值区间;
所述判断模块,还用于判断所述各个变量的第二取值区间的边界值是否相等;
生成模块,用于若相等,则根据所述各个变量的第二取值区间生成测试用例。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510229658.4A CN104809067B (zh) | 2015-05-07 | 2015-05-07 | 面向等式约束的测试用例生成方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510229658.4A CN104809067B (zh) | 2015-05-07 | 2015-05-07 | 面向等式约束的测试用例生成方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104809067A true CN104809067A (zh) | 2015-07-29 |
CN104809067B CN104809067B (zh) | 2017-11-17 |
Family
ID=53693909
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510229658.4A Expired - Fee Related CN104809067B (zh) | 2015-05-07 | 2015-05-07 | 面向等式约束的测试用例生成方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104809067B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224455A (zh) * | 2015-09-28 | 2016-01-06 | 北京邮电大学 | 一种自动生成字符串类型测试用例的方法 |
CN106681903A (zh) * | 2015-11-11 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 生成测试用例的方法及装置 |
CN107025170A (zh) * | 2016-02-02 | 2017-08-08 | 通用电气公司 | 用于设计模型的基于覆盖的自动化的测试用例增广的系统和方法 |
CN113238932A (zh) * | 2021-04-30 | 2021-08-10 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 测试用例自动生成方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6986125B2 (en) * | 2001-08-01 | 2006-01-10 | International Business Machines Corporation | Method and apparatus for testing and evaluating a software component using an abstraction matrix |
CN103019934A (zh) * | 2012-11-28 | 2013-04-03 | 北京交控科技有限公司 | 基于数据代码分离技术的测试用例生成方法 |
CN104317708A (zh) * | 2014-10-21 | 2015-01-28 | 北京邮电大学 | 基于迭代的区间运算的软件测试用例自动生成方法及系统 |
-
2015
- 2015-05-07 CN CN201510229658.4A patent/CN104809067B/zh not_active Expired - Fee Related
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6986125B2 (en) * | 2001-08-01 | 2006-01-10 | International Business Machines Corporation | Method and apparatus for testing and evaluating a software component using an abstraction matrix |
CN103019934A (zh) * | 2012-11-28 | 2013-04-03 | 北京交控科技有限公司 | 基于数据代码分离技术的测试用例生成方法 |
CN104317708A (zh) * | 2014-10-21 | 2015-01-28 | 北京邮电大学 | 基于迭代的区间运算的软件测试用例自动生成方法及系统 |
Non-Patent Citations (2)
Title |
---|
邢颖 等: "基于分支限界搜索框架的测试用例自动生成", 《中国科学》 * |
邢颖: "测试用例自动生成的分支限界算法及实验研究", 《中国博士学位论文全文数据库 信息科技辑》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105224455A (zh) * | 2015-09-28 | 2016-01-06 | 北京邮电大学 | 一种自动生成字符串类型测试用例的方法 |
CN105224455B (zh) * | 2015-09-28 | 2018-01-09 | 北京邮电大学 | 一种自动生成字符串类型测试用例的方法 |
CN106681903A (zh) * | 2015-11-11 | 2017-05-17 | 阿里巴巴集团控股有限公司 | 生成测试用例的方法及装置 |
CN106681903B (zh) * | 2015-11-11 | 2020-05-12 | 阿里巴巴集团控股有限公司 | 生成测试用例的方法及装置 |
CN107025170A (zh) * | 2016-02-02 | 2017-08-08 | 通用电气公司 | 用于设计模型的基于覆盖的自动化的测试用例增广的系统和方法 |
CN107025170B (zh) * | 2016-02-02 | 2021-11-16 | 通用电气公司 | 用于设计模型的基于覆盖的自动化的测试用例增广的系统和方法 |
CN113238932A (zh) * | 2021-04-30 | 2021-08-10 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 测试用例自动生成方法 |
CN113238932B (zh) * | 2021-04-30 | 2024-03-19 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 测试用例自动生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104809067B (zh) | 2017-11-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US6922829B2 (en) | Method of generating profile-optimized code | |
CN109739755B (zh) | 一种基于程序追踪和混合执行的模糊测试系统 | |
US6308323B1 (en) | Apparatus and method for compiling a plurality of instruction sets for a processor and a media for recording the compiling method | |
US6185516B1 (en) | Automata-theoretic verification of systems | |
CN104809067A (zh) | 面向等式约束的测试用例生成方法和装置 | |
CN109086215B (zh) | 一种嵌入式软件单元测试用例生成方法及系统 | |
CN109684190A (zh) | 软件测试装置和方法 | |
CN110058882A (zh) | 一种用于cnn加速的opu指令集定义方法 | |
CN108021507A (zh) | 符号执行的并行路径搜索方法及装置 | |
US6691079B1 (en) | Method and system for analyzing test coverage | |
CN110347570A (zh) | 一种ide环境下代码自动生成工具分析方法 | |
KR101275727B1 (ko) | 스테이트먼트를 재구성하는 방법 및 그 기능을 구비한컴퓨터 시스템 | |
CN101551748A (zh) | 一种优化的编译方法 | |
CN110377525B (zh) | 一种基于运行时特征和机器学习的并行程序性能预测系统 | |
CN108629124A (zh) | 一种基于活动图路径的仿真参数数据自动生成方法 | |
EP1152336A1 (en) | User interface for making compiler tradeoffs | |
CN112905451A (zh) | 应用程序的自动化测试方法及装置 | |
CN111814414A (zh) | 一种基于遗传算法的覆盖率收敛方法及系统 | |
JP2003099283A (ja) | ソフトウェアシステムのテスト優先度導出支援方法、テストケース設計支援方法、およびその支援プログラム | |
CN112076463B (zh) | 一种手机游戏轻量化方法 | |
CN112084117B (zh) | 一种测试方法和装置 | |
US7096462B2 (en) | System and method for using data address sequences of a program in a software development tool | |
CN115599793A (zh) | 一种更新数据的方法、装置及存储介质 | |
CN111221731B (zh) | 一种快速获取到达程序指定点测试用例的方法 | |
CN104317708B (zh) | 基于迭代的区间运算的软件测试用例自动生成方法及系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
EXSB | Decision made by sipo to initiate substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20171117 |
|
CF01 | Termination of patent right due to non-payment of annual fee |