掌桥专利:专业的专利平台
掌桥专利
首页

一种基于MC/DC覆盖准则的最小测试用例集生成方法和系统

文献发布时间:2024-04-18 19:58:30


一种基于MC/DC覆盖准则的最小测试用例集生成方法和系统

技术领域

本发明涉及软件测试技术领域,特别涉及一种基于MC/DC覆盖准则的最小测试用例集生成方法和系统。

背景技术

针对测试用例集的生成,面对不同耦合条件的逻辑表达式,目前无法直接利用一套算法完成最小测试用例集的设计,同时保证测试用例能达到100%覆盖MC/DC准则。

发明内容

为了解决上述问题,发明人做出本发明,通过具体实施方式,提供一种基于MC/DC覆盖准则的最小测试用例集生成方法和系统。

第一方面,本发明实施例提供一种基于MC/DC覆盖准则的最小测试用例集生成方法,包括以下步骤:

根据条件逻辑表达式,绘制逻辑操作符的SCADE模型图;

根据SCADE模型图,画出至少一条从输入到输出的完整的路径;

激活任一条未被激活的路径,确定路径分析顺序,按照路径分析顺序,先对未被激活路径的条件赋值,再对激活路径的条件分别赋值1和0,得到两条测试用例;

所述路径分析顺序为:分析当前激活路径,然后分析当前激活路径的相邻路径,然后按照SCADE模型图上路径顺序依次向下分析其他未被激活路径,其中,当前分析的路径包括耦合条件时,在分析其他路径之前,优先分析其他包括相同耦合条件的未被激活路径及其相邻路径;

激活每一条未被激活的路径,分别得到对应的测试用例;

删除重复的测试用例,得到测试用例集。

在一些具体的实施例中,对未被激活路径的条件赋值,包括以下步骤:从每条未被激活路径的输入开始,将未被激活路径中And判定中的条件赋值1,将未被激活路径中Or判定中的条件赋值0;当未被激活路径中存在决定条件时,在所述路径中的所述决定条件的当前判定之后继续判断,当遇到非决定条件的判定时,根据所述判定的逻辑前置符,确定所述决定条件的赋值;在路径的同一次激活中,重复出现的条件保留当前值,不进行再次赋值。

在一些具体的实施例中,判断条件为耦合条件,包括以下步骤:当逻辑表达式中,存在重复出现的同一条件时,将所述条件判断为耦合条件;当逻辑表达式中,存在制约其他条件输出值的条件时,将所述条件判断为耦合条件。

在一些具体的实施例中,判断条件为决定条件,包括以下步骤:在路径的同一轮激活中,将不在激活路径的判定中,且为当前判定中第一个被赋值的条件,确定为决定条件;在路径的同一轮激活中,将与激活路径中的条件不在同一判定,为当前判定的判断依据的条件或为当前判定下第一个被赋值的条件,确定为决定条件。

在一些具体的实施例中,耦合条件的取值以当前测试用例中所述耦合条件的前次设定值为依据。

第二方面,本发明实施例提供一种基于MC/DC覆盖准则的最小测试用例集生成系统,包括:

路径生成模块,用于根据条件逻辑表达式,绘制逻辑操作符的SCADE模型图;根据SCADE模型图,画出至少一条从输入到输出的完整的路径;

测试用例生成模块,用于激活任一条未被激活的路径,确定路径分析顺序,按照路径分析顺序,先对未被激活路径的条件赋值,再对激活路径的条件分别赋值1和0,得到两条测试用例;所述路径分析顺序为:分析当前激活路径,然后分析当前激活路径的相邻路径,然后按照SCADE模型图上路径顺序向下依次分析其他未被激活路径,其中,当前分析的路径包括耦合条件时,在分析其他路径之前,优先分析其他包括相同耦合条件的未被激活路径及其相邻路径;激活每一条未被激活的路径,分别得到对应的测试用例;删除重复的测试用例,得到测试用例集。

在一些具体的实施例中,未被激活路径中And判定中的条件默认为1,未被激活路径中Or判定中的条件默认为0;当未被激活路径中存在决定条件时,在所述决定条件之后的所述路径中,当遇到非决定条件的判定时,根据所述判定的逻辑前置符,确定所述决定条件的赋值;在路径的同一次激活中,重复出现的条件保留当前值,不进行再次赋值。

在一些具体的实施例中,逻辑表达式中重复出现的同一条件为耦合条件;逻辑表达式中制约其他条件输出值的条件为耦合条件。

在一些具体的实施例中,决定条件是在路径的同一轮激活中,不在激活路径的判定中,且为当前判定中第一个被赋值的条件;决定条件还包括在路径的同一轮激活中,将与激活路径中的条件不在同一判定,且为当前判定的判断依据的条件。

在一些具体的实施例中,耦合条件的取值为当前测试用例中所述耦合条件前次设定值。

基于同一发明构思,本发明实施例还提供一种电子设备,包括:存储器、处理器及存储于存储器上并在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述的基于MC/DC覆盖准则的最小测试用例集生成方法。

基于同一发明构思,本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令执行时实现前述的基于MC/DC覆盖准则的最小测试用例集生成方法。

本发明实施例提供的上述技术方案的有益效果至少包括:

仅用一套算法便可完成多种耦合条件下的最小测试用例集的设计,可100%覆盖零耦合条件,弱耦合条件,强耦合条件下的逻辑表达式的MC/DC准则覆盖率要求。可协助软件测试工程师设计测试用例的生成,提高测试覆盖率,与其他测试用例生成过程相比,清晰易懂,测试用例少,覆盖率高,具有较强的操作性,能够提高软件测试效率。

本发明的其它特征和优点将在随后的说明书中阐述,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。

下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。

附图说明

附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制。在附图中:

图1为本发明实施例中基于MC/DC覆盖准则的最小测试用例集生成方法的流程图;

图2为本发明实施例中 (A&&B)&&(C&&D)||E)的SCADE模型图;

图3为本发明实施例中(A&&B)||(!((A||B)的SCADE模型图;

图4为本发明实施例中(A&&B)||(A&&C)||(A&&D)||(B&&C)||(C&&D)的SCADE模型图;

图5为本发明实施例中 (A&&B)&&(C&&D)||E)的路径标识图;

图6为本发明实施例中(A&&B)||(!((A||B)的路径标识图;

图7为本发明实施例中(A&&B)||(A&&C)||(A&&D)||(B&&C)||(C&&D)的路径标识图;

图8为本发明实施例图7的SCADE模型中Path1激活过程示意图;

图9为本发明实施例图7的SCADE模型中Path10激活过程示意图;

图10为本发明实施例中 (A&&B)&&(C&&D)||E)的路径覆盖图;

图11为本发明实施例中(A&&B)||(!((A||B)的路径覆盖图;

图12为本发明实施例中(A&&B)||(A&&C)||(A&&D)||(B&&C)||(C&&D)的路径覆盖图;

图13为本发明实施例中一种电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

为了解决现有技术中存在的问题,本发明实施例提供一种基于MC/DC覆盖准则的最小测试用例集生成方法和系统。通过对应用于安全开发软件SCADE下的模型覆盖测试,为符合对测试用例要求更全面的MC/DC准则的A级软件获得最小的测试用例集,提出的路径生成算法。通过该算法生成的测试用例,可100%覆盖零耦合条件,弱耦合条件,强耦合条件下的逻辑表达式的MC/DC准则覆盖率要求。修正条件判定MC/DC(Modified Condition/Decision Coverage)为一种软件结构覆盖性测试准则,适用于如航空航天、轨道交通等领域的A级软件进行模型白盒测试。在测试过程中,需要测试人员根据模型需求完成测试用例编写,测试质量往往依赖于测试者的知识和经验。复杂的逻辑组合条件,缺少对MC/DC准则的精确理解,往往耗费测试人员大量时间。

本发明实施例提供一种基于MC/DC覆盖准则的最小测试用例集生成方法,其流程如图1所示,包括如下步骤:

步骤S1:根据条件逻辑表达式,绘制逻辑操作符的SCADE模型图。

这里的条件逻辑表达式对应的是实际的物理条件设置,例如轨道继电器、信号机的状态等,将其中一种状态设置为条件A,将另一种状态设置为条件B,一个区段中,包括多个状态,根据区段的状态,写出对应的包括多种条件的逻辑表达式,根据逻辑表达式的结果,执行列车办理进路等操作。

SCADE(Safety Critical Application Development Environment),意为安全关键的应用开发环境,是一款通过多个安全关键行业软件工程标准认证的工具。目前广泛应用于航天、轨交、核电等对软件安全要求严苛的领域。它使用模型化的语言,让软件设计者更聚焦于需求的图形化表达,在使用SCADE QTE进行主机上的模型覆盖分析时,写入测试用例,可使用MTC(Model Test Coverage)工具进行代码级覆盖测试,可直接在工具上观察到设计的测试用例对模型的覆盖情况。

条件(Condition):指逻辑表达式中不包含与、或、非等布尔操作符的部分,或称为逻辑变量。

判定(Decision):指含两个及以上条件的逻辑关系式。

前置逻辑符:逻辑表达式中出现在该条件或判定前面的逻辑操作符(“&&”,“||”)。

改进条件/判定范围(MC/DC:Modified Condition/Decision Coverage):程序中的每个入口点和出口点至少被调用一次;判定中每个条件的所有取值至少出现一次;每个判定的所有可能结果至少出现一次;每个条件都能独立地影响判定的结果,即在其它所有条件不变的情况下改变该条件的值,使得判定结果改变。

耦合条件:逻辑表达式中,同一条件重复出现,或某条件输出值制约其它条件的输出值。

路径:指该输入到输出的通路,当同一变量在不同通路时,仍视为不同通路。

路径激活:MC/DC中的屏蔽效应要求即只能有一个输入对输出结果的独立影响的测试用例才能计入覆盖率,其原则为从每个输入到每个输出评定只有一条通路,此时这条通路未被其他路径屏蔽其效应算做激活,当路径激活,输入分别为1/0。

激活路径:从输入到输出当前准备激活的路径。

屏蔽路径:从输入到输出未被激活,处于屏蔽状态的路径。

相邻路径:同一判定下的路径算是相邻路径。

例如,根据逻辑表达式 (A&&B)&&(C&&D)||E),绘制如图2所示的SCADE模型图,图2中包括3个与操作符,1个或操作符。根据逻辑表达式(A&&B)||(!((A||B),绘制如图3所示的SCADE模型图,图3中包括1个与操作符,2个或操作符,一个非操作符。根据逻辑表达式(A&&B)||(A&&C)||(A&&D)||(B&&C)||(C&&D),绘制如图4所示的SCADE模型图,图4中包括5个与操作符,1个或操作符。

步骤S2:根据SCADE模型图,画出至少一条从输入到输出的完整的路径。

根据逻辑表达式 (A&&B)&&(C&&D)||E),绘制如图5所示的路径标识图,图5中包括Path1至5。根据逻辑表达式(A&&B)||(!((A||B),绘制如图6所示的路径标识图,图6中包括Path1至4。根据逻辑表达式(A&&B)||(A&&C)||(A&&D)||(B&&C)||(C&&D),绘制如图7所示的路径标识图,图7中包括Path1至10。

步骤S3:激活任一条未被激活的路径,确定路径分析顺序,按照路径分析顺序,先对未被激活路径的条件赋值,再对激活路径的条件分别赋值1和0,得到两条测试用例;所述路径分析顺序为:分析当前激活路径,然后分析当前激活路径的未被激活的相邻路径,然后按照SCADE模型图上路径顺序向下依次分析其他未被激活路径,其中,当前分析的路径包括耦合条件时,在分析其他路径之前,优先分析其他包括相同耦合条件的未被激活路径及其相邻路径。在同一判定中的路径算相邻路径。

在一些具体的实施例中,以图7为例的Path1的路径激活为例,具体过程如图8所示:激活Path1,Path1未被激活的相邻路径为Path2,Path1包括耦合条件A(图中用圆圈框出,A1表示SCADE的模型图中从上到下条件A第一次出现,A2表示第二次出现,其他字母编号的含义同理),因此,在分析其他路径之前,优先分析其他包括相同耦合条件的未被激活路径及其相邻路径。包括相同耦合条件A的其他未被激活路径依次包括Path3、Path5,所以在分析Path2之后,先分析Path3及其相邻路径Path4、Path5及其相邻路径Path6。分析完耦合条件A后,查看前面还出现了耦合条件B(图中用圆圈框出,B1表示SCADE的模型图中条件B从上到下第一次出现),依次分析包含耦合条件B的路径Path7及其相邻路径Path8。剩下的路径中则不包含未激活的耦合条件B了。查看未激活路径中包含耦合条件C(图中用圆圈框出,C1表示SCADE的模型图中条件C从上到下第一次出现),因此分析Path9及其相邻路径Path10。综合以上得到分析顺序为:Path1、Path2、Path3、Path4、Path5、Path6、Path7、Path8、Path9、Path10。

相对应路径依次向下分析的规定,以图7为例的Path10的路径激活为例展示。具体过程如图9所示:激活Path10,先分析Path10的相邻路径Path9,Path10中包含耦合条件D(D2表示条件D在SCADE模型中第二次出现),因此分析未激活路径中包含耦合条件的Path6及其相邻路径Path5,查看到Path9中包含耦合条件C(C3表示条件C在SCADE模型中从上到下第三次出现),因此分析未激活路径中包含耦合条件C的路径Path8及其相邻路径Path7,Path4及其相邻路径Path3。按照耦合条件出现顺序,还有未分析的耦合条件A(Path5下的条件A3,A3表示条件A在SCADE模型中从上到下第三次出现)。未激活路径Path1包含耦合条件A,因此分析Path1及其相邻路径Path2。综合以上得到分析顺序为:Path10、Path9、Path6、Path5、Path8、Path7、Path4、Path3、Path1、Path2。

图5和图6的路径分析顺序确定方法和图7相同,图7的测试比图5、图6复杂,因此以图7为例进行说明。

在一些具体的实施例中,对未被激活路径的条件赋值,包括以下步骤:从每条未被激活路径的输入开始,将未被激活路径中And判定中的条件赋值1,将未被激活路径中Or判定中的条件赋值0;当未被激活路径中存在决定条件时,在所述路径中的所述决定条件的当前判定之后继续判断,当遇到非决定条件的判定时,根据所述判定的逻辑前置符,确定所述决定条件的赋值;在路径的同一次激活中,重复出现的条件保留当前值,不进行再次赋值。

在一些具体的实施例中,判断条件为决定条件,包括以下步骤:在路径的同一轮激活中,将不在激活路径的判定中,且为当前判定中第一个被赋值的条件,确定为决定条件;在路径的同一轮激活中,将与激活路径中的条件不在同一判定,且为当前判定的判断依据的条件,确定为决定条件。从激活一条路径,到得到两条对应测试用例的过程,称为一轮激活。激活几条路径,就包括几轮激活,每轮激活包括了激活路径,确定路径分析顺序,按照路径分析顺序,先对未被激活路径的条件赋值,再对激活路径的条件分别赋值1和0,得到两条测试用例。

在赋值阶段,以图7中Path1激活为例,先对未被激活路径的条件赋值,再对激活路径的条件分别赋值1和0。按照路径分析顺序Path1、Path2、Path3、Path4、Path5、Path6、Path7、Path8、Path9、Path10,未被激活路径的分析顺序是Path2、Path3、Path4、Path5、Path6、Path7、Path8、Path9、Path10。Path2中,从输入开始,条件B处在And判定中,因此B赋值1。Path3的A在激活路径Path1中已经出现,在本次激活Path1的过程中,待对未被激活路径的条件赋值后再对A赋值。在Path4中,条件C不在激活路径的判定中,且为当前判定中第一个被赋值的条件,所以C是决定条件,具体的,C是图7中判定And2(And表示逻辑符与,2表示同种逻辑符的编号,此处的And在图7中从上到下排第二,所以编号And2)的决定条件。当未被激活路径中存在决定条件时,在所述路径中的所述决定条件的当前判定之后继续判断,因此,在Path4中遇到决定条件C后,沿着从输入到输出的方向,继续判断Path4之后的判定,Path4中And2之后的判定是Or1(Or表示逻辑符或,1表示同种逻辑符的编号,此处Or在图7中只有一个,所以编号Or1)。C不能独立影响Or1的判定结果,不是Or1的判断依据,也不是Or1中第一个被赋值的条件,所以C不是Or1的决定条件。当遇到非决定条件的判定时,根据所述判定的逻辑前置符,确定所述决定条件的赋值,此时判定的逻辑前置符为Or,所以根据Or确定C的赋值,同时未被激活路径中Or判定中的条件默认赋值0,所以C赋值0。Path5中的A在激活路径Path1中已经出现,在本次激活Path1的过程中,待对未被激活路径的条件赋值后再对A赋值。Path6中条件D为图7中And3的决定条件,所以沿Path6继续判断,D不是Or1的决定条件,所以根据Or1确定D的赋值,未被激活路径中Or判定中的条件默认赋值0,所以D赋值0。Path7中,B为重复条件,在对未被激活路径的条件赋值的过程中,不再赋值。Path8中的C在本轮激活中已经出现过,保留当前值,不进行再次赋值。Path9中的C在本轮激活中已经出现过,保留当前值,不进行再次赋值。Path10中的D在本轮激活中已经出现过,保留当前值,不进行再次赋值。因此,在本轮Path1的激活中,未被激活路径的条件B、C、D赋值分别为T、F、F,如表3编号1的一行所示。

在对未被激活路径的条件赋值之后,再对激活路径的条件分别赋值1和0,得到两条测试用例。具体的,接着上面的例子,在本轮Path1的激活中,A为激活路径Path1的条件,分别赋值1和0,结合之前对未被激活路径的条件B、C、D的赋值,得到两个测试用例,这两个测试用例分别对应表3编号1和2,编号1的测试用例中A至D的值分别为T、T、F、F,输出T,编号2的测试用例中A至D的值分别为F、T、F、F,输出F。

在赋值阶段,再以图7中Path10激活为例,先对未被激活路径的条件赋值,再对激活路径的条件分别赋值1和0。按照路径分析顺序Path10、Path9、Path6、Path5、Path8、Path7、Path4、Path3、Path1、Path2,未被激活路径的分析顺序是Path9、Path6、Path5、Path8、Path7、Path4、Path3、Path1、Path2。在Path9中,从输入开始,条件C处在And判定中,因此C赋值1。Path6的D在激活路径Path10中已经出现,在本次激活Path10的过程中,待对未被激活路径的条件赋值后再对D赋值。在Path5中,条件A不在激活路径的判定中,且为当前判定中第一个被赋值的条件,所以A是决定条件,具体的,A是图7中判定And3(And表示逻辑符与,3表示同种逻辑符的编号,此处的And在图7中从上到下排第三,所以编号And3)的决定条件。当未被激活路径中存在决定条件时,在所述路径中的所述决定条件的当前判定之后继续判断,因此,在Path5中遇到决定条件A后,沿着从输入到输出的方向,继续判断Path5之后的判定,Path5中And3之后的判定是Or1(Or表示逻辑符或,1表示同种逻辑符的编号,此处Or在图7中只有一个,所以编号Or1)。A不能独立影响Or1的判定结果,不是Or1的判断依据,所以A不是Or1的决定条件。当遇到非决定条件的判定时,根据所述判定的逻辑前置符,确定所述决定条件的赋值,此时判定的逻辑前置符为Or,所以根据Or确定A的赋值,同时未被激活路径中Or判定中的条件默认赋值0,所以A赋值0。Path8中的C在激活路径Path9中已经出现,不再重复赋值。由于Path7的同一判定的相邻路径Path8的条件C已赋值为1,因此Path7中条件B为图7中And4的决定条件,因为此时条件B的赋值直接决定当前判定的结果,所以沿Path7继续判断,B不是Or1的决定条件,所以根据Or1确定B的赋值,未被激活路径中Or判定中的条件默认赋值0,所以B赋值0。Path4中C在本轮激活中已经出现过,保留当前值,不进行再次赋值。Path3中的A在本轮激活中已经出现过,保留当前值,不进行再次赋值。此时还剩余Path1和Path2未分析。在本轮已分析的路径中,查找是否含未分析的耦合条件,此时还有未分析的耦合条件A,因此先分析未激活路径中含耦合条件A的Path1,再分析其相邻路径Path2。Path1中的A在本轮激活中已经出现过保留当前值,不进行再次赋值。Path2中的B在本轮激活中已经出现过,保留当前值,不进行再次赋值。因此,在本轮Path1的激活中,未被激活路径的条件B、C、D赋值分别为F、F、T,如表3编号9的一行所示。

在对未被激活路径的条件赋值之后,再对激活路径的条件分别赋值1和0,得到两条测试用例。具体的,接着上面的例子,在本轮Path1的激活中,A为激活路径Path1的条件,分别赋值1和0,结合之前对未被激活路径的条件B、C、D的赋值,得到两个测试用例,这两个测试用例分别对应表3编号9和5,编号9的测试用例中A至D的值分别为F、F、T、T,输出T,编号5的测试用例中A至D的值分别为F、F、T、F,输出F。

在一些具体的实施例中,判断条件为耦合条件,包括以下步骤:当逻辑表达式中,存在重复出现的同一条件时,将所述条件判断为耦合条件;当逻辑表达式中,存在制约其他条件输出值的条件时,将所述条件判断为耦合条件。

在一些具体的实施例中,耦合条件的取值以当前测试用例中所述耦合条件的前次设定值为依据。

步骤S4:激活每一条未被激活的路径,分别得到对应的测试用例;删除重复的测试用例,得到测试用例集。

零耦合的逻辑表达式 (A&&B)&&(C&&D)||E)对应的最小测试用例集如表1所示。

表1(A&&B)&&(C&&D)||E)的测试用例表

零耦合的逻辑表达式 (A&&B)&&(C&&D)||E)的路径覆盖如图10所示,达到路径完全覆盖,路径覆盖率100%。

弱耦合的逻辑表达式(A&&B)||(!((A||B)对应的最小测试用例集如表2所示。

表2(A&&B)||(!((A||B)的测试用例表

弱耦合的逻辑表达式(A&&B)||(!((A||B)的路径覆盖如图11所示,达到路径完全覆盖,路径覆盖率100%。

强耦合的逻辑表达式(A&&B)||(A&&C)||(A&&D)||(B&&C)||(C&&D)对应的最小测试用例集如表3所示。

表3(A&&B)||(A&&C)||(A&&D)||(B&&C)||(C&&D)的测试用例表

强耦合的逻辑表达式(A&&B)||(A&&C)||(A&&D)||(B&&C)||(C&&D)的路径覆盖如图12所示,达到路径完全覆盖,路径覆盖率100%。

在一个具体的实施例中,基于MC/DC覆盖准则的最小测试用例集生成方法,总结为以下步骤:

第一步:根据逻辑表达式画出逻辑操作符的模型,由输入到输出为一条完整的路径,从条件1开始,可画出N条路径,命名为Path1~PathN(N≥1)。

第二步:规定分析顺序。由Path1开始依次对路径进行激活,当前激活的路径称为激活路径,其他路径称为屏蔽路径。分析顺序为激活路径,再分析激活路径的下的相邻路径,再向下依次分析其他判定的路径。需要注意的是在分析各路径时需判断该路径下条件是否为耦合条件,若当前分析的路径下的条件为耦合条件时,其他包含该耦合条件的路径下的条件不再分析,分析顺序调整到该耦合条件的第一次出现的路径后。

第三步:完成屏蔽路径的条件赋值。为达到屏蔽效应,当遇到And判定时,该路径下条件默认为1,当遇到Or判定时,该路径下条件默认为0。若非决定条件,则该条件由当前判定的前置逻辑符决定,若为决定条件,从该路径的输入到输出向前判断是否为该判定的决定条件,直到找到不判断为决定条件的判定,此时该条件由该判定的前置逻辑符决定.耦合条件的取值以当前测试用例的前次设定值为依据。

决定条件:1.在本轮路径激活的测试用例中,该条件与激活路径下条件不在同一判定,且为当前判定中第一个被赋值的条件(此时不算入激活路径下条件及其耦合条件)。2.该条件与激活路径下条件不在同一判定,且该条件为当前判定的判定依据。

第四步:完成激活路径的条件赋值。对该激活路径下条件赋值1和0,其他变量取在第三步中的取值,形成两条测试用例。

第五步:对每条路径进行激活,重复2-4的过程,直到完成最后一条激活路径的测试用例。

第六步:整理测试案例,删除重复的测试案例,得到最终的测试案例集。

本实施例的上述方法中,仅用一套算法便可完成多种耦合条件下的最小测试用例集的设计,可100%覆盖零耦合条件,弱耦合条件,强耦合条件下的逻辑表达式的MC/DC准则覆盖率要求。可协助软件测试工程师设计测试用例的生成,提高测试覆盖率,与其他测试用例生成过程相比,清晰易懂,测试用例少,覆盖率高,具有较强的操作性,能够提高软件测试效率。

本领域技术人员能够对上述顺序进行变换而并不离开本公开的保护范围。

本发明另一实施例提供一种基于MC/DC覆盖准则的最小测试用例集生成系统,包括:

路径生成模块,用于根据条件逻辑表达式,绘制逻辑操作符的SCADE模型图;根据SCADE模型图,画出至少一条从输入到输出的完整的路径;

测试用例生成模块,用于激活任一条未被激活的路径,确定路径分析顺序,按照路径分析顺序,先对未被激活路径的条件赋值,再对激活路径的条件分别赋值1和0,得到两条测试用例;所述路径分析顺序为:分析当前激活路径,然后分析当前激活路径的未被激活的相邻路径,然后按照SCADE模型图上路径顺序分析其他未被激活路径,其中,当前分析的路径包括耦合条件时,在分析其他路径之前,优先分析其他包括相同耦合条件的未被激活路径;激活每一条未被激活的路径,分别得到对应的测试用例;删除重复的测试用例,得到测试用例集。

在一些具体的实施例中,未被激活路径中And判定中的条件默认为1,未被激活路径中Or判定中的条件默认为0;当未被激活路径中存在决定条件时,在所述决定条件之后的所述路径中,当遇到非决定条件的判定时,根据所述判定的逻辑前置符,确定所述决定条件的赋值;在路径的同一次激活中,重复出现的条件保留当前值,不进行再次赋值。

在一些具体的实施例中,逻辑表达式中重复出现的同一条件为耦合条件;逻辑表达式中制约其他条件输出值的条件为耦合条件。

在一些具体的实施例中,决定条件是在路径的同一轮激活中,不在激活路径的判定中,且为当前判定中第一个被赋值的条件;决定条件还包括在路径的同一轮激活中,将与激活路径中的条件不在同一判定,且为当前判定的判断依据的条件。

在一些具体的实施例中,耦合条件的取值为当前测试用例中所述耦合条件前次设定值。

关于上述实施例中的系统,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

本实施例中,仅用一套算法便可完成多种耦合条件下的最小测试用例集的设计,可100%覆盖零耦合条件,弱耦合条件,强耦合条件下的逻辑表达式的MC/DC准则覆盖率要求。可协助软件测试工程师设计测试用例的生成,提高测试覆盖率,与其他测试用例生成过程相比,清晰易懂,测试用例少,覆盖率高,具有较强的操作性,能够提高软件测试效率。

基于同一发明构思,本发明实施例还提供一种电子设备,其结构如图13所示,包括:存储器、处理器及存储于存储器上并在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现前述的基于MC/DC覆盖准则的最小测试用例集生成方法。

基于同一发明构思,本发明实施例还提供一种计算机存储介质,所述计算机存储介质中存储有计算机可执行指令,所述计算机可执行指令被处理器执行时实现前述的基于MC/DC覆盖准则的最小测试用例集生成方法。

凡在本发明的原则范围内做的任何修改、补充和等同替换等,均应仍归属于本发明的专利涵盖范围内。

相关技术
  • 一种基于代码转换的MC/DC覆盖准则的软件测试数据生成方法
  • 一种基于代码转换的MC/DC覆盖准则的软件测试数据生成方法
技术分类

06120116504319