一种测试用例的生成方法、装置及控制设备
技术领域
本发明涉及汽车领域,特别涉及一种测试用例的生成方法、装置及控制设备。
背景技术
现阶段,随着整车功能逻辑越来越复杂,相应的测试工作也需要同步跟进。针对公式计算类的测试用例,需要根据计算公式调整测试输入,通常需要循环迭代几个周期,并分别观测每次计算出的结果是否符合预期结果。
由于公式计算类的软件是基于stateflow搭建的,在进行路径覆盖测试时需要保持测试输入的给入能够使软件一直处于预期路径中,目前此项工作需要人工手动计算调整输入值,而手动计算调整输入值效率较低,且计算过程容易出现错误,比较消耗时间和人力,较为不便。
发明内容
本发明实施例提供一种测试用例的生成方法、装置及控制设备,用以解决现有测试中计算过程效率低且容易出错的问题。
为了解决上述技术问题,本发明采用如下技术方案:
依据本发明的一个方面,提供了一种测试用例的生成方法,包括:
获取被测软件的目标路径的进入条件,所述进入条件包括一个或多个公式;
获取写入所述公式的多个参数的参数值;
判断每一所述参数值写入所述公式时,是否每一所述公式的判定均为真;
若至少一所述公式的判定为假,则针对每一判定为假的所述公式,分别进行所述参数值调整,直至每一所述公式的判定均为真;
执行所述目标路径,并记录使每一所述公式的判定均为真时的所述参数的参数值以及所述目标路径的执行结果。
可选地,在判断每一所述参数值写入所述公式时,是否每一所述公式的判定均为真之后,所述生成方法还包括:
若每一所述公式的判定均为真,则执行所述目标路径,并记录每一所述参数的参数值以及所述目标路径的执行结果。
可选地,所述针对每一判定为假的所述公式,分别进行所述参数值调整,包括:
确定所述公式中判定为假的第一公式为目标公式,以及确定所述目标公式的各个参数的参数值;
调整每一所述参数值,使所述目标公式的判定为真;
确定多个所述公式中判定为假的第二公式为目标公式,重复执行上述过程,直至每一所述公式的判定均为真。
可选地,所述调整每一所述参数值,使所述目标公式的判定为真,包括:
将所述目标公式中的首个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真;
若所述目标公式趋近于判定为真,则将所述首个参数的参数值再增加一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
可选地,所述直至趋近趋势停止之后,所述生成方法还包括:
将所述目标公式中的下一个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
可选地,所述将所述目标公式中的首个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真之后,所述生成方法还包括:
若所述目标公式远离于判定为真,则将所述首个参数的参数值减少一个精度,并判断所述目标公式是否趋近于判定为真;
若所述目标公式趋近于判定为真,则将所述首个参数的参数值再减少一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
可选地,在执行所述目标路径之后,所述生成方法还包括:
获取所述目标路径需要执行的次数;
根据所述目标路径的执行结果,判断是否每一所述公式的判定均为真,直至所述目标路径被执行完所述次数。
依据本发明的另一个方面,提供了一种测试用例的生成装置,包括:
条件获取模块,用于获取被测软件的目标路径的进入条件,所述进入条件包括一个或多个公式;
参数获取模块,用于获取写入所述公式的多个参数的参数值;
结果判定模块,用于判断每一所述参数值写入所述公式时,是否每一所述公式的判定均为真;
参数调整模块,用于若至少一所述公式的判定为假,则针对每一判定为假的所述公式,分别进行所述参数值调整,直至每一所述公式的判定均为真;
路径执行模块,用于执行所述目标路径,并记录使每一所述公式的判定均为真时的所述参数的参数值以及所述目标路径的执行结果。
可选地,所述生成装置还包括:
执行记录模块,用于若每一所述公式的判定均为真,则执行所述目标路径,并记录每一所述参数的参数值以及所述目标路径的执行结果。
可选地,所述参数调整模块包括:
第一处理子模块,用于确定所述公式中判定为假的第一公式为目标公式,以及确定所述目标公式的各个参数的参数值;
参数调整子模块,用于调整每一所述参数值,使所述目标公式的判定为真;
第二处理子模块,用于确定多个所述公式中判定为假的第二公式为目标公式,重复执行上述过程,直至每一所述公式的判定均为真。
可选地,所述参数调整子模块包括:
第一处理单元,用于将所述目标公式中的首个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真;
第二处理单元,用于若所述目标公式趋近于判定为真,则将所述首个参数的参数值再增加一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
可选地,所述参数调整子模块还包括:
第三处理单元,用于在趋近趋势停止时,将所述目标公式中的下一个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
可选地,所述参数调整子模块还包括:
第四处理单元,用于若所述目标公式远离于判定为真,则将所述首个参数的参数值减少一个精度,并判断所述目标公式是否趋近于判定为真;
第五处理单元,用于若所述目标公式趋近于判定为真,则将所述首个参数的参数值再减少一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
可选地,所述生成装置还包括:
次数获取模块,用于获取所述目标路径需要执行的次数;
判断处理模块,用于根据所述目标路径的执行结果,判断是否每一所述公式的判定均为真,直至所述目标路径被执行完所述次数。
依据本发明的另一个方面,提供了一种控制设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述处理器执行所述程序时实现如上所述的生成方法。
本发明的有益效果是:
上述方案,利用计算机强大的计算能力,通过将以前手动计算的部分通过执行预定软件逻辑来进行计算,根据公式自动进行循环迭代,计算速度快、准确率高,节省了人力与时间成本,更加方便。
附图说明
图1表示本发明实施例提供的测试用例的生成方法示意图;
图2表示本发明实施例提供的测试用例的生成装置示意图;
图3表示本发明实施例提供的测试用例的生成方法流程图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图及具体实施例对本发明进行详细描述。
本发明针对现有技术测试中计算方法效率低且容易出错的问题,提供一种测试用例的生成方法、装置及控制设备。
如图1所示,本发明其中一实施例提供一种测试用例的生成方法,包括:
S11:获取被测软件的目标路径的进入条件,所述进入条件包括一个或多个公式。
需要说明的是,本发明提供的测试用例的生成方法适用于公式计算类的软件,针对公式计算类的软件生成测试用例的输入值及其对应的预期输出结果,节省时间和人力。
S12:获取写入所述公式的多个参数的参数值。
需要说明的是,根据本发明其中一实施例,被测软件逻辑描述为:如果A+B>C,则执行路径一;如果A+B<C,则执行路径二;如果A+B=C,则执行路径三。被测软件以0.1秒为周期运行,前一个周期的计算结果会引入下一周期继续计算,并对A/B/C三个参数的参数值产生影响。
具体的,针对这类软件进行测试时,以路径一为例:为保证软件能够正常运行,首先需要明确A/B/C三个信号的数据类型、精度和取值范围,据此可以定义三个信号的初始值,其中,所述数据类型、精度和取值范围可从被测软件的功能描述中获得;然后定义A/B/C三个信号的关键字索引,即所述三个信号从什么位置赋值或取值,以及需要推导几个周期的数值,即目标路径会重复执行几次。
S13:判断每一所述参数值写入所述公式时,是否每一所述公式的判定均为真。
需要说明的是,根据本发明其中一实施例,以路径一为例,导入被测路径的进入条件判断公式,即获取被测软件的目标路径的进入条件A+B>C。通过A/B/C三个信号的关键字索引获取A/B/C三个信号的初始值,即三个参数的初始参数值,判定A+B>C是否为真,然后针对判定结果对A/B/C三个信号的值进行处理,即记录或调整所述参数的参数值。
S14:若至少一所述公式的判定为假,则针对每一判定为假的所述公式,分别进行所述参数值调整,直至每一所述公式的判定均为真;
S15:执行所述目标路径,并记录使每一所述公式的判定均为真时的所述参数的参数值以及所述目标路径的执行结果。
可选地,在判断每一所述参数值写入所述公式时,是否每一所述公式的判定均为真之后,所述生成方法还包括:
若每一所述公式的判定均为真,则执行所述目标路径,并记录每一所述参数的参数值以及所述目标路径的执行结果。
需要说明的是,上述实施例中,如果A+B>C判定为真,则把A/B/C三个参数的参数值以及执行目标路径(即路径一)的结果填写到测试用例中的指定位置,并进行下一个周期的仿真计算;如果判定为假,则说明所述初始值设置不合理,需要重新调整A/B/C三个信号的初始值设置。
还需要说明的是,在实际工作中,我们遇到的公式会比A+B>C这样的公式判定复杂,且ABC本身也可能是多个公式循环嵌套的结果。对这种复杂公式计算进行自动推导时,应当列举所有公式以及所有参数,针对所有公式进行判定。根据本发明又一实施例,被测软件逻辑描述为:如果A+B>C且D+E>F,则执行路径一;如果A+B<C且D+E<F,则执行路径二;如果A+B=C且D+E=F,则执行路径三。以路径一为目标路径时,所述进入条件为A+B>C且D+E>F,获取参数A/B/C/D/E/F的初始值后,开始对公式的真假进行判定:如果A+B>C和D+E>F都判定为真,则记录参数A/B/C/D/E/F的参数值以及执行路径一的执行结果,填入测试用例相应位置。如果A+B>C和D+E>F其中有判定为假的公式,则需要依次调整参数A/B/C/D/E/F的参数值直至A+B>C和D+E>F都判定为真。
具体的,对于判定为假的公式中的参数,应该逐个在其左右选值,并判断调整后的参数值是否可以使得判定为假的公式更趋近于判定成立,直到所有公式均判定成立,此时记录下这些参数值以及执行所述目标路径后的输出结果,作为测试用例中的输入与预期输出结果。
可选地,所述针对每一判定为假的所述公式,分别进行所述参数值调整,包括:
确定所述公式中判定为假的第一公式为目标公式,以及确定所述目标公式的各个参数的参数值;
调整每一所述参数值,使所述目标公式的判定为真;
确定多个所述公式中判定为假的第二公式为目标公式,重复执行上述过程,直至每一所述公式的判定均为真。
需要说明的是,只有所述进入条件中的所有公式的判定均为真时,才可以执行目标路径,因此需要对判定为假的公式依次进行参数值的调整,直至所有公式判定均为真。
可选地,所述调整每一所述参数值,使所述目标公式的判定为真,包括:
将所述目标公式中的首个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真;
若所述目标公式趋近于判定为真,则将所述首个参数的参数值再增加一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
需要说明的是,可以根据目标公式趋近判定为真的趋势,调整所述参数值。首先尝试在需要调整的参数的参数值增加一个精度,如果调整后的参数值使得所述目标公式更趋近于判定为真,则说明调整方向正确,可以对其参数值进一步增加一个精度继续判断;如果调整后所述目标公式远离于判定为真,则说明调整方向错误,可以尝试对其参数值减少一个精度继续判断。
可选地,所述直至趋近趋势停止之后,所述生成方法还包括:
将所述目标公式中的下一个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
需要说明的是,趋紧趋势停止,说明调整该参数的参数值不能更进一步使所述目标公式是否趋近于判定为真,则开始尝试调整下一个参数,直至所述目标公式判定为真。
可选地,所述将所述目标公式中的首个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真之后,所述生成方法还包括:
若所述目标公式远离于判定为真,则将所述首个参数的参数值减少一个精度,并判断所述目标公式是否趋近于判定为真;
若所述目标公式趋近于判定为真,则将所述首个参数的参数值再减少一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
可选地,在执行所述目标路径之后,所述生成方法还包括:
获取所述目标路径需要执行的次数;
根据所述目标路径的执行结果,判断是否每一所述公式的判定均为真,直至所述目标路径被执行完所述次数。
需要说明的是,由于软件是周期性进行运算的,所以公式计算出的数值会随着计算周期的变化而变化,通过本发明实施例提供的测试用例的生成方法可以使工程师从繁琐的公式计算中解放出来。具体的,在实际应用时,可以将生成方法的代码嵌套在用例设计工具中。当针对一项公式计算类需求设计测试用例时,调用所述代码,用户只需要将被测软件的各种跳转条件(即所述进入条件)以及跳转后执行的计算公式(即所述目标路径)填写清楚,设置初始值后运行所述代码,即可按照既定的次数执行目标路径,并计算出每一次的输入条件和预期结果。
如图3所示,为本发明实施例提供的测试用例的生成方法流程图:
S301:导入所有公式,即获取被测软件的目标路径的进入条件;
S302:读取所有参数的参数值;
S303:对目标路径的所有进入条件进行判定,即判断每一所述参数值写入所述公式时,是否每一所述公式的判定均为真;若是,则执行S304;若否,则执行S305;
S304:记录这组所有值,即记录每一所述参数的参数值;执行目标路径,得到一组新的数值,即所述目标路径的执行结果;进行下一周期的判定推导。
S305:针对首个判定为假的公式的首个参数的参数值增加一个精度,即将首个判定为假的公式作为目标公式;
S306:判断所述目标公式是否更趋近于判定成立;是,则执行S307;否则执行S313;
S307:继续逐次在此参数的参数值上增加一个单位精度,直至所述目标公式判定为真;若目标公式判定为真,则执行S312;若判定为假,则执行S308;
S308:判断趋近趋势是否停止;是,则执行S309;否,则执行S307;
S309:选择第N个参数增加一个单位精度,即将所述目标公式中的下一个参数的参数值增加一个精度;
S310:判断所述目标公式是否更趋近于判定为真;是,则执行S311;否,则执行S317;
S311:继续逐次在此参数的参数值上增加一个单位精度,直至所述目标公式判定为真;
S312:对下一个判定为假的公式进行趋近判定为真调整,直到所有公式均判定为真。记录这组所有值,即记录每一所述参数的参数值;执行目标路径,得到一组新的数值,即所述目标路径的执行结果;进行下一周期的判定推导;
S313:继续逐次在此参数的参数值上减小一个单位精度,直至所述目标公式判定为真;
S314:判断趋近趋势是否停止;是,则执行S315;否,则执行S313;
S315:选择第N个参数减少一个单位精度,即将所述目标公式中的下一个参数的参数值减少一个精度;
S316:判断所述目标公式是否更趋近于判定为真;是,则执行S311;否,则执行S317;
S317:继续逐次在此参数的参数值上减少一个单位精度,直至所述目标公式判定为真。
本发明实施例中,利用计算机强大的计算能力,通过将以前手动计算的部分通过执行预定软件逻辑来进行计算,根据公式自动进行循环迭代,计算速度快、准确率高,节省了人力与时间成本,更加方便。
如图2所示,本发明实施例还提供一种测试用例的生成装置,包括:
条件获取模块21,用于获取被测软件的目标路径的进入条件,所述进入条件包括一个或多个公式。
需要说明的是,本发明提供的测试用例的生成装置适用于公式计算类的软件,针对公式计算类的软件生成测试用例的输入值及其对应的预期输出结果,节省时间和人力。
参数获取模块22,用于获取写入所述公式的多个参数的参数值。
需要说明的是,根据本发明其中一实施例,被测软件逻辑描述为:如果A+B>C,则执行路径一;如果A+B<C,则执行路径二;如果A+B=C,则执行路径三。被测软件以0.1秒为周期运行,前一个周期的计算结果会引入下一周期继续计算,并对A/B/C三个参数的参数值产生影响。
具体的,针对这类软件进行测试时,以路径一为例:为保证软件能够正常运行,首先需要明确A/B/C三个信号的数据类型、精度和取值范围,据此可以定义三个信号的初始值,其中,所述数据类型、精度和取值范围可从被测软件的功能描述中获得;然后定义A/B/C三个信号的关键字索引,即所述三个信号从什么位置赋值或取值,以及需要推导几个周期的数值,即目标路径会重复执行几次。
结果判定模块23,用于判断每一所述参数值写入所述公式时,是否每一所述公式的判定均为真。
需要说明的是,根据本发明其中一实施例,以路径一为例,导入被测路径的进入条件判断公式,即获取被测软件的目标路径的进入条件A+B>C。通过A/B/C三个信号的关键字索引获取A/B/C三个信号的初始值,即三个参数的初始参数值,判定A+B>C是否为真,然后针对判定结果对A/B/C三个信号的值进行处理,即记录或调整所述参数的参数值。
参数调整模块24,用于若至少一所述公式的判定为假,则针对每一判定为假的所述公式,分别进行所述参数值调整,直至每一所述公式的判定均为真;
路径执行模块25,用于执行所述目标路径,并记录使每一所述公式的判定均为真时的所述参数的参数值以及所述目标路径的执行结果。
可选地,所述生成装置还包括:
执行记录模块,用于若每一所述公式的判定均为真,则执行所述目标路径,并记录每一所述参数的参数值以及所述目标路径的执行结果。
需要说明的是,上述实施例中,如果A+B>C判定为真,则把A/B/C三个参数的参数值以及执行目标路径(即路径一)的结果填写到测试用例中的指定位置,并进行下一个周期的仿真计算;如果判定为假,则说明所述初始值设置不合理,需要重新调整A/B/C三个信号的初始值设置。
还需要说明的是,在实际工作中,我们遇到的公式会比A+B>C这样的公式判定复杂,且ABC本身也可能是多个公式循环嵌套的结果。对这种复杂公式计算进行自动推导时,应当列举所有公式以及所有参数,针对所有公式进行判定。根据本发明又一实施例,被测软件逻辑描述为:如果A+B>C且D+E>F,则执行路径一;如果A+B<C且D+E<F,则执行路径二;如果A+B=C且D+E=F,则执行路径三。以路径一为目标路径时,所述进入条件为A+B>C且D+E>F,获取参数A/B/C/D/E/F的初始值后,开始对公式的真假进行判定:如果A+B>C和D+E>F都判定为真,则记录参数A/B/C/D/E/F的参数值以及执行路径一的执行结果,填入测试用例相应位置。如果A+B>C和D+E>F其中有判定为假的公式,则需要依次调整参数A/B/C/D/E/F的参数值直至A+B>C和D+E>F都判定为真。
具体的,对于判定为假的公式中的参数,应该逐个在其左右选值,并判断调整后的参数值是否可以使得判定为假的公式更趋近于判定成立,直到所有公式均判定成立,此时记录下这些参数值以及执行所述目标路径后的输出结果,作为测试用例中的输入与预期输出结果。
可选地,所述参数调整模块包括:
第一处理子模块,用于确定所述公式中判定为假的第一公式为目标公式,以及确定所述目标公式的各个参数的参数值;
参数调整子模块,用于调整每一所述参数值,使所述目标公式的判定为真;
第二处理子模块,用于确定多个所述公式中判定为假的第二公式为目标公式,重复执行上述过程,直至每一所述公式的判定均为真。
需要说明的是,只有所述进入条件中的所有公式的判定均为真时,才可以执行目标路径,因此需要对判定为假的公式依次进行参数值的调整,直至所有公式判定均为真。
需要说明的是,可以根据目标公式趋近判定为真的趋势,调整所述参数值。首先尝试在需要调整的参数的参数值增加一个精度,如果调整后的参数值使得所述目标公式更趋近于判定为真,则说明调整方向正确,可以对其参数值进一步增加一个精度继续判断;如果调整后所述目标公式远离于判定为真,则说明调整方向错误,可以尝试对其参数值减少一个精度继续判断。
可选地,所述参数调整子模块包括:
第一处理单元,用于将所述目标公式中的首个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真;
第二处理单元,用于若所述目标公式趋近于判定为真,则将所述首个参数的参数值再增加一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
需要说明的是,趋紧趋势停止,说明调整该参数的参数值不能更进一步使所述目标公式是否趋近于判定为真,则开始尝试调整下一个参数,直至所述目标公式判定为真。
可选地,所述参数调整子模块还包括:
第三处理单元,用于在趋近趋势停止时,将所述目标公式中的下一个参数的参数值增加一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
可选地,所述参数调整子模块还包括:
第四处理单元,用于若所述目标公式远离于判定为真,则将所述首个参数的参数值减少一个精度,并判断所述目标公式是否趋近于判定为真;
第五处理单元,用于若所述目标公式趋近于判定为真,则将所述首个参数的参数值再减少一个精度,并判断所述目标公式是否趋近于判定为真,直至趋近趋势停止或所述目标公式判定为真。
可选地,所述生成装置还包括:
次数获取模块,用于获取所述目标路径需要执行的次数;
判断处理模块,用于根据所述目标路径的执行结果,判断是否每一所述公式的判定均为真,直至所述目标路径被执行完所述次数。
需要说明的是,由于软件是周期性进行运算的,所以公式计算出的数值会随着计算周期的变化而变化,通过本发明实施例提供的测试用例的生成装置可以使工程师从繁琐的公式计算中解放出来。具体的,在实际应用时,可以将生成装置集成在用例设计工具中。当针对一项公式计算类需求设计测试用例时,用户只需要将被测软件的各种跳转条件(即所述进入条件)以及跳转后执行的计算公式(即所述目标路径)填写清楚,设置初始值,即可按照既定的次数执行目标路径,并计算出每一次的输入条件和预期结果。
本发明实施例中,利用计算机强大的计算能力,通过将以前手动计算的部分通过执行预定软件逻辑来进行计算,根据公式自动进行循环迭代,计算速度快、准确率高,节省了人力与时间成本,更加方便。
本发明实施例还提供一种控制设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序;所述处理器执行所述程序时实现如上所述的生成方法。
以上所述的是本发明的优选实施方式,应当指出对于本技术领域的普通人员来说,在不脱离本发明所述的原理前提下还可以作出若干改进和润饰,这些改进和润饰也在本发明的保护范围内。