一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

测试用例生成方法、设备和存储介质与流程

2022-03-19 12:50:23 来源:中国专利 TAG:
1.本发明属于嵌入式软件开发的软件测试
技术领域
:,具体涉及一种测试用例生成方法、设备和存储介质。
背景技术
::2.软件测试是软件质量的一个重要保证,在软件测试领域,测试用例和测试脚本的编写一直是软件测试的一项重要工作,测试用例和测试脚本的质量对于测试的质量和被测软件的质量有重大的影响,针对同样的需求,不同水平的测试人员编写的测试用例和测试脚本质量相差很大,而且人工编写测试用例和测试脚本工作量很大,效率较低。3.基于模型的测试(modelbasedtesting,简称mbt)属于软件测试领域的一种测试方法,它通过建立测试场景或模型(以下简称模型),自动生成测试用例和测试代码。它是软件测试的一种新兴技术,与传统测试技术相比,mbt更直观、更容易理解,能够自动生成测试数据,测试覆盖率高,测试用例的逻辑路径能方便的展示出来,方便校核需求与代码,省去大量的重复代码的编写工作,测试用例的代码由模型生成,能够提升测试效率,而且mbt模型形象直观、更容易理解,它通过算法自动生成测试用例与测试脚本,能够提高测试设计与测试用例的质量。4.如图1所示,图1为基于mbt测试的流程图,图1中于mbt测试的步骤一般为:100、分析软件的需求规格;101、根据需求建立模型;102、模型分析与检查是否通过,若是执行步骤103和步骤104,若否,返回步骤101;103、根据模型生成测试用例;104、根据模型或测试用例生成测试脚本。5.国内外对于mbt测试技术的都进行了大量的研究,形成了一些mbt的测试方法,目前典型的mbt测试方法有以下几类:基于因果图模型的测试方法、基于判定表(decisiontables)模型的测试方法、基于正交表模型的测试方法、基于fsm(finite-statemachine)有限状态机模型的测试建模方法、基于uml(unifiedmodelinglanguage)统一建模语言的测试方法、基于fbd(functionblockdiagram)功能块图模型的测试方法。6.fsm模型,表示有限个状态以及这些状态之间的转移和动作的数学模型,fsm模型能够比较好的描述软件的运行状态和迁移过程,同时fsm模型属于强语义描述模型,因此基于fsm模型自动生成测试用例是一种比较常用的测试用例自动生成方法。但是对于信号较多并且信号之间存在大量逻辑关系的软件,fsm模型难以直观清晰低描述信号之间的逻辑关系,甚至会因为信号量的增加出现状态爆炸。fbd模型在描述信号之间的逻辑运算关系上具有逻辑清晰,简洁直观的优势,因此成为目前嵌入式控制软件常用的编程语言。同时fbd模型能够精确简洁低描述软件需求,因此基于fbd模型自动生成测试用例也成为研究的热点。7.而许多嵌入式控制软件,不但涉及大量的输入输出信号,信号之间也存在逻辑关系,因此,无论使用fsm模型还是fbd模型都无法准确地描述软件功能,导致生成的测试用例准确性较低。技术实现要素:8.本发明的主要目的是提供一种测试用例生成方法、设备和存储介质,以解决现有技术中生成的测试用例准确性较低的问题。9.针对上述问题,第一方面,本发明提供了一种测试用例生成方法,包括:10.根据软件需求规格中的所有软件运行的状态和不同软件运行的状态之间转换的触发条件,建立有限状态机模型;11.根据软件需求规格中的输入输出、输入与输出之间的逻辑关系、所有输入之间的约束关系,建立基于类功能块图语言的功能块图模型;12.根据所述功能块图模型的生效状态,在所述有限状态机模型中选取一个软件运行的状态作为所述功能块图模型的前置状态;13.根据预设的转换规则,将功能块图模型转换为描述软件运行的状态变化过程的转换有限状态机模型,并根据所述功能块图模型的前置状态,将所述转换有限状态机模型与所述有限状态机模型进行关联,得到目标有限状态机模型;14.基于所述目标有限状态机模型,采用预设的遍历算法,将每一条路径生成一条测试用例。15.本发明还提供一种测试用例生成设备,包括存储器和处理器;16.所述存储器上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述测试用例生成方法的步骤。17.本发明还提供一种存储介质,其上存储有计算机程序,所述计算机程序被控制器执行时实现上述所述测试用例生成方法的步骤。18.与现有技术相比,上述方案中的一个或多个实施例可以具有如下优点或有益效果:19.本发明的测试用例生成方法、设备和存储介质,基于fsm模型和fbd模型两种模型描述软件的需求,并将fbd模型转换为完整的fsm模型,实现了融合fsm模型和fbd模型两种模型混合建模,既能够准确全面地描述软件的运行过程状态,又能够准确描述软件输入输出之间的逻辑关系,提高了生成的测试用例准确性,同时,不但提取了fbd模型的数据组合,同时提取了fbd模型数据组合之间的转换关系,从而让测试用例覆盖更多的场景,提升测试的覆盖率,也避免了fbd模型转换fsm模型状态爆炸问题,并且能够自动生成测试用例,不但避免了人为失误,还提升了测试设计的效率。20.本发明的其它特征和优点将在随后的说明书中阐述,并且部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。附图说明21.附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例共同用于解释本发明,并不构成对本发明的限制。在附图中:22.图1为基于mbt测试的流程图;23.图2为fsm模型的状态转移图示意图;24.图3为一种fbd模型的示意图;25.图4为基于fbd模型自动生成测试用例的流程图;26.图5为本发明的测试用例生成方法实施例的流程图;27.图6为本发明建立的一种fsm模型示意图;28.图7为本发明建立的另一种fbd模型的示意图;29.图8为存在锁存器时入口状态求解示意图;30.图9为图7中and_1转换示例图;31.图10为图9对应的过程fsm模型;32.图11为rs_1模型元素转换得到的过程fsm模型;33.图12为gt_1模型元素转换得到的过程fsm模型;34.图13为or_1模型元素转换得到的过程fsm模型;35.图14为图6和图7对应的模型经转换后得到的目标fsm模型;36.图15为基于邮递员算法生成测试用例的流程图;37.图16为fbd模型转换为fsm的算法的流程图;38.图17为图16中步骤165的流程图;39.图18为本发明的测试用例生成装置实施例的结构示意图。具体实施方式40.以下将结合附图及实施例来详细说明本发明的实施方式,借此对本发明如何应用技术手段来解决技术问题,并达成技术效果的实现过程能充分理解并据以实施。需要说明的是,只要不构成冲突,本发明中的各个实施例以及各实施例中的各个特征可以相互结合,所形成的技术方案均在本发明的保护范围之内。41.fsm模型,表示有限个状态以及这些状态之间的转移和动作的数学模型。系统上一个周期的状态和当前的输入,决定了下一个周期的状态。一个有限状态机m可以用一个六元组m=(s,i,o,δ,λ,s)表示,其中:42.s={s0,s1,s2,s3……sn},是一个有限状态集;43.i={i0,i1,i2,i3……in},是一个输入事件集合,允许包含空事件,以“-”表示;44.o={o0,o1,o2,o3……on},是一个输出事件集合,允许包含空事件,以“-”表示;45.:s×i→s,是一个转移函数;46.λ:s×i→o,是一个输出函数;47.s0∈s为m的初始状态。48.当有限状态机处于状态si∈s时,若收到一个输入激励i∈i,则有限状态机将要进入的新状态由δ(s,i)给出,同时产生输出响应λ(s,i),执行完成后有限状态机进入新的状态si∈s。如图2所示,图2为fsm模型的状态转移图示意图,若状态机处于v1状态,若收到激励b,则产生输出x,同时状态迁移到v2状态。v2状态到v3状态,v3状态到v1状态的原理参考上述记载,在此不再赘述。49.基于fsm模型的测试用例自动生成方法一般分为如下步骤50.1)、建立软件的fsm模型;51.2)、建立测试用例生成的覆盖准则;52.3)、从初始状态出发,遍历fsm模型的迁移路径,每遍历一条完整的迁移路径,则将迁移路径转换为测试用例;53.4)、重复步骤3)的遍历过程,直到满足覆盖准则。54.fbd是iec61131标准规定的一种plc编程语言,由功能和功能块组成,这些功能和功能块通过连接线彼此互连,或与变量相连,构成图形化的描述语言,如图3所示。图3为一种fbd模型的示意图。如图3所示,该fbd模型的元素可以包括data_in1-data_in5等输入变量,parameter参数变量、大于、与、或等逻辑、锁存器rs、data_out1输出变量等。55.图4为基于fbd模型自动生成测试用例的流程图。如图4所示,基于fbd模型自动生成测试用例一般包括如下步骤:56.401、分析软件的需求规格,提取需求规格中的输入输出、逻辑关系、约束关系;57.402、通过根据需求规格建立fbd语言的模型;58.403、建立fbd模型转换数据组合表的规则;59.404、根据fbd模型以及转换规则将fbd模型转换为数据组合表;60.405、根据数据组合表,自动生成测试用例。61.实施例一62.为解决现有技术中存在的上述技术问题,本发明实施例提供了一种测试用例生成方法。63.图5为本发明的测试用例生成方法实施例的流程图,如图5所示,本实施例的测试用例生成方法具体可以包括如下步骤:64.500、根据软件需求规格中的所有软件运行的状态和不同软件运行的状态之间转换的触发条件,建立fsm模型;65.具体地,建立fsm模型的核心是动作和状态。状态为一组变量以及变量的值组成,表征被测软件的一种确定的状态。动作为一组操作的组合或者一组变量以及变量的变化的组合。动作是状态之间迁移的触发条件,通过动作,可以从一个状态进入另一个状态。66.状态和动作之间、状态和状态之间存在指向关系,通过状态可以索引状态可以执行的动作,通过状态可以索引该状态的前一个状态以及下一个状态,通过动作可以索引该动作的前一个状态和下一个状态。67.建立fsm模型时,可以使用表1中的建模元素,其中表1为fsm模型的建模元素:68.表1[0069][0070]本实施例中,根据软件需求规格中的所有软件运行的状态和不同软件运行的状态之间转换的触发条件,建立fsm模型时,可以按照如下步骤实现:[0071]5001)分析需求规格,分析软件运行的主要状态,形成fsm状态列表;[0072]5002)分析不同状态之间转换的触发条件,建立不同状态之间的转换关系,用转换关系将不同状态连接起来;[0073]5003)找到所有状态的初始状态,以初始状态为起点,将所有状态串联起来形成fsm模型。[0074]图6为本发明建立的一种fsm模型示意图。如图6所示,该fsm模型由初始状态s0经转换a01迁移至状态s1,状态s1经转换a11迁移至状态s3,状态s3经转换a31迁移至状态s5。其他路径与上述路径描述相似,在此不再赘述。[0075]501、根据软件需求规格中的输入输出、输入与输出之间的逻辑关系、所有输入之间的约束关系,建立基于类功能块图语言的fbd模型;[0076]具体地,fbd模型建立过程中,主要用于根据软件需求,使用图形化的建模方式,建立软件输入输出信号之间的逻辑关系。fbd模型基本元素遵循iec61131标准,并在fbd语言基础上增加了约束条件和状态元素,具体如表2所示,表2为fbd模型的建模元素。[0077]表2[0078][0079][0080][0081][0082]在一个具体实现过程中,可以根据如下步骤,建立fbd模型:[0083]5011)、分析需求规格,提取需求中所有涉及的输入和输出;[0084]5022)、定义输入与输出的数据类型、取值范围、默认测试数据;[0085]5033)、分析所有输入与输出之间的关系,并将输入与输出之间的关系采用fbd模型元素描述出来,画出fbd模型图;[0086]5044)、分析输入之间的约束关系,并将约束关系在fbd模型上表示出来;[0087]5055)、分析该fbd模型生效的状态,在已经建立的fsm状态图上选择一个状态作为fbd的前置状态。[0088]图7为本发明建立的另一种fbd模型的示意图。如图7所示本实施例的fbd模型的模型元素可以包括模拟输入变量1、参数(可以设置为160)、约束条件(可以设置为互斥)、布尔输入变量1-3、大于gt_1、与and_1、或or_1、锁存器rs_1和布尔输出变量1。[0089]502、根据fbd模型的生效状态,在fsm模型中选取一个软件运行的状态作为fbd模型的前置状态;[0090]在一个具体实现过程中,可以根据fbd模型的生效状态,在fsm模型中选取一个软件运行的状态作为fbd模型的前置状态。例如,本实施例中,根据软件需求可以获知fbd模型在fsm模型中的状态s3生效,此时,可以将fsm模型中的状态s3作为fbd模型的前置状态,并在fbd模型中标记fbd模型的前置状态为状态3。[0091]503、根据预设的转换规则,将fbd模型转换为描述软件运行的状态变化过程的转换fsm模型,并根据fbd模型的前置状态,将转换fsm模型与fsm模型进行关联,得到目标fsm模型;[0092]具体地,可以根据如下步骤实现步骤503:[0093]5031)、以功能块图模型的前置状态为初始状态,对功能块图模型中与每个输出模型元素存在连接关系的一组功能模型元素进行求解,得到该组功能模型元素的入口状态;其中,此处的连接关系包括直接连接和/或间接连结。例如,图7中的输出模型元素为布尔输出变量,与该输出模型元素存在连接关系的一组功能模型元素为表示锁存器的功能模型元素、表示逻辑与的功能模型元素、表示逻辑或的功能模型元素、表示大于的功能模型元素。[0094]具体地,可以遍历fbd模型,fbd模型以一个输出为根节点,是树形结构,通过深度遍历算法,依次查找fbd模型的每一个模型元素。对于遍历到的一个模型元素,假设该模型元素为fa。如果模型元素fa为输入变量对应的输入模型元素或输出变量对应的出处模型元素,则重新遍历下一个模型元素,如果模型元素fa为功能模型元素,则可以对模型元素fa进行转换。[0095]在实际应用中,求解与每个输出模型元素存在连接关系的一组功能模型元素的入口状态的原因是fbd模型中存在rs锁存器/sr锁存器模型元素,这些模型元素会影响最终输出,导致每个功能模型元素输出变化无法影响最终的输出变量。以图7为例,当对表示大于的gt_1模型元素进行模型转换时,如果布尔输入变量2有效,则无论模拟输入变量1取大于160的值还是取小于160的值,布尔输出变量1一直保持为无效,从而无法测试出大于gt_1模块对布尔输出变量1的影响,所以在对表示大于的gt_1模型元素进行模型转换时,必须要进入到布尔输入变量1有效、对布尔输入变量2无效、对布尔输入变量3无效的入口状态。[0096]在一个具体实现过程中,求解该组功能模型元素的入口状态的方法如下:[0097]如果该组功能模型元素包括表示锁存器的功能模型元素,将串接在锁存器set端口的功能模型元素的入口状态在初始状态基础上顺序迁移到第一状态;如图8所示,图8为存在锁存器时入口状态求解示意图。图8中,每个功能模型元素的入口状态在初始状态s0基础上顺序迁移到图8所示的s2状态。[0098]如果该组功能模型元素包括表示锁存器的功能模型元素,将串接在锁存器reset端口的功能模型元素的入口状态在初始状态基础上顺序迁移到第二状态;图8中,每个表示输出变量的模型元素的入口状态在初始状态s0基础上顺序迁移到图8所示的s4状态。[0099]如果该组功能模型元素不包括,则该组功能模型元素的入口状态维持初始状态。[0100]本实施例中,经过上述求解,可以保证在有锁存器的情况下,在set端口和reset端口均为0时,能够确定锁存器的输出端口输出的数据是明确的。[0101]5032)、根据预设的转换规则,将每个功能模型元素转换为对应的展开fsm模型;[0102]本实施例中预设的转换规则可以如下:[0103]每个功能模型元素的每个直接输入接口至少覆盖真、假两种情形,如果输入接口为非布尔量,则至少覆盖2个不同的数值;[0104]每个功能模型元素的直接输出接口至少覆盖真、假两种情形,如果输出接口为非布尔量,则至少覆盖2个不同的数值;[0105]每个功能模型元素的每个直接输入在其他直接输入保持不变的情况下,至少触发了所述功能块图模型的直接输出的变化。[0106]以图7中的and_1为例,and_1转换fsm模型时,and_1串接在rs锁存器的set端,所以入口状态为图8所示的s2。同时为了满足模型元素的转换规则,转换结果如图9。其中,图9为图7中and_1转换示例图。图9中,状态2在迁移时,可以有3中情况:aand31:and_1_i1=1/and_1_i2=1,得到的状态为sand31:and_1_q=1;aand32:and_1_i1=1/and_1_i2=0,得到的状态为sand32:and_1_q=0;aand33:and_1_i1=0and_1_i2=1,得到的状态为sand33:and_1_q=0。[0107]5033)、针对每个展开fsm模型的每一个转换和状态,求解满足期望的输入变量和输出变量的数据组合,以得到对应的过程fsm模型;[0108]在实际应用中,fbd模型元素转换为fsm模型转换和状态组合需要的是输入变量和输出变量的组合,而模型元素fa的输入连接的可能不是输入变量,而是一个模型元素,因此步骤5032)中转换为展开fsm模型图的转换/状态组合是一组中间变量组合,需要进一步求解。以图7的and_1为例,and_1的i1输入为gt_1,因此转换得到的图9所示的展开fsm模型组合是基于该元素直接输入/输出的组合,并不是fbd模型输入变量和输出变量的数据组合,需要进一步求解输入变量和输出变量的数据组合。[0109]在一个具体实现过程中,可以按照如下步骤实现步骤5033):[0110]50331)、从转换状态对集合fsma/c选择一个转换状态对acti/sti;其中,每个所述展开fsm模型包含x个转换,第i个转换定义为acti,转换acti的唯一出口状态为sti;acti和sti构成了一对转换状态组合acti/sti;所有转换状态组合acti/sti的集合构成了每个所述展开fsm模型的转换状态对集合fsma/c;[0111]50332)、以每个功能模型元素为起点向前深度遍历所述功能块图模型,并将转换acti中的数据赋值给所述功能模型元素对应的直接输入元素,作为直接输入元素的输出数据;[0112]具体地,如果遍历得到的当前的向前模型元素表示输入模型元素,则将输入变量和输入变量的取值加入到转换acti中;如果遍历得到的当前的向前模型元素表示功能模型元素,则根据得到的当前的向前模型元素的类型、输出,求解出得到的当前的向前模型元素所有直接输入的数据组合;以遍历得到的当前的向前模型元素为下一次遍历的起点,向前深度遍历所述功能块图模型,并将求解出的当前的向前模型元素的所有直接输入的数据组合赋值给下一个向前模型元素对应的直接输入元素,作为直接输入元素的输出数据,直到遍历完成每个功能模型元素的所有模型元素。[0113]50333)、以每个功能模型元素为起点向后广度遍历所述功能块图模型,并将状态sti中的数据赋值给所述功能模型元素的直接输出元素,作为直接输出元素输出数据和的对应位置的输入数据。[0114]具体地,如果遍历得到的当前的向后模型元素表示输出变量,则将输出变量和输出变量的取值加入到状态sti中;如果遍历得到的当前的向后模型元素表示输入变量,则根据当前的向后模型元素的类型、输出,求解出当前的向后模型元素所有直接输入和直接输出的数据组合;以遍历得到的当前的向后模型元素为下一次遍历的起点,向后广度遍历所述功能块图模型,并将求解出当前的向后模型元素所有直接输入和直接输出的数据组合赋值给所述下一个向后功能模型元素对应的直接输入模型元素和直接输出模型元素,直到遍历完成每个功能模型元素的所有向后模型元素。[0115]以图7为例,and_1经过求解得到展开fsm模型如图9,经过步骤5033)求解后最终转换得到的过程fsm模型如图10。图10为图9对应的过程fsm模型;如图10,图9中aand1:set=0/rset=1,被赋值为aand1:模拟输入变量1=159;布尔输入变量1=0;布尔输入变量2=1;布尔输入变量3=1。其他类似,在此不再赘述。[0116]同理,可以根据图7的转换原理,根据深度遍历规则,依次进行rs_1、and_1、gt_1、or_1的模型转换,其中and_1转换的fsm模型如图10所示,rs_1转换得到的fsm模型如图11所示,gt_1转换得到的fsm模型如图12所示,or_1转换得到的fsm模型如图13所示。其中,图11为rs_1模型元素转换得到的过程fsm模型;图12为gt_1模型元素转换得到的过程fsm模型;图13为or_1模型元素转换得到的过程fsm模型。[0117]5034)、对所有过程fms模型进行重组处理,以得到转换fsm模型。[0118]在实际应用中,将所有的过程fms模型实际都整合在一个完整的fsm模型图中,即可得到转换fsm模型。[0119]具体地,在对所有过程fms模型进行重组处理时,可以基于约束的删减和/或删除重复转换。其中,基于约束的删减如下:遍历得到的所有过程有限状态机模型,将所有过程有限状态机模型中的每一个转换的数据组合与约束条件进行对比,如果数据组合与约束条件冲突,则删除该转换出口后端的所有状态和转换,例如,如图7所示,要求布尔输入变量1和布尔输入变量3互斥,而状态图11中ars42中布尔输入变量1和布尔输入变量3相等,所以删除ars42和srs42,其他的类似,在此不再一一举例说明。[0120]遍历得到的所有过程有限状态机模型,如果同一个状态的两个出口转换的数据组合完全一致,则认为转换重复,将两个转换以及两个转换的出口状态路径合并,删除第二个转换及转换的出口状态,并将第二个转换的出口状态后的路径合并到第一个转换的出口状态。例如图10-图13中状态s3后的转换ars1、aand1、agt1、aor1的变量数据完全一致,所以将删除aand1、agt1、aor1、sand1、sgt1、sor1,并将sand1、sgt1、sor1后的路径合并到srs1,其他的类似,在此不再一一举例说明。[0121]本实施例中,经过步骤5031-5034)后,即可得到fbd模型对应的转换fsm模型,并根据fbd模型的前置状态,将转换fsm模型与fsm模型进行关联,得到目标fsm模型。图14为图6和图7对应的模型经转换后得到的目标fsm模型。图14中相关定义参照图10-图13所示。[0122]需要说明的是,本实施例中,在得到转换fsm模型后,可以生成转换fsm模型对应的fsm状态图,并将fsm状态图输出,以直观地查看fbd生成的转换fsm模型对应的图形,从而有利于结果的检查和校核。[0123]504、基于目标fsm模型,采用预设的遍历算法,将每一条路径生成一条测试用例。[0124]在一个具体实现过程中,预设的遍历算法基于如下准则进行计算:[0125]第一、状态覆盖:fsm模型中的每个状态必须覆盖一次;[0126]第二、转换覆盖:fsm模型中的每个转换必须覆盖一次;[0127]第三、转换/状态覆盖准则:fsm模型中的每一对转换/状态对必须覆盖一次;转换/状态对是指一个转换及该转换的唯一出口状态的组合。[0128]本实施例中预设的遍历算法可以包括w算法、d算法、uio算法、邮递员算法,本实施例以邮递员算法仅举例说明。图15为基于邮递员算法生成测试用例的流程图。[0129]5041、从初始状态启动遍历;[0130]5042、依次获取当前状态sin的第i个转换和转换的出口状态soi;[0131]5043、判断出口状态soi是否存在出口转换;若是,执行步骤5044,若否,执行步骤5045;[0132]5044、判断出口状态soi在本次遍历路径中是否重复出现;若是,执行步骤5045,若否,执行步骤5046;[0133]5045、将初始状态和soi之间路径生成一条测试用例,并执行步骤5047;[0134]5046、将出口状态soi作为当前状态sin,并返回步骤5042;[0135]5047、判断是否已经满足覆盖准则,若是,结束,若否,返回步骤5041。[0136]表3为图15生成的测试用例。[0137]表3[0138][0139]本实施例的测试用例生成方法,基于fsm模型和fbd模型两种模型描述软件的需求,并将fbd模型转换为完整的fsm模型,实现了融合fsm模型和fbd模型两种模型混合建模,既能够准确描述软件的运行过程状态,又能够准确描述软件输入输出之间的逻辑关系,能够比较全面地描述软件的功能,同时,不但提取了fbd模型的数据组合,同时提取了fbd模型数据组合之间的转换关系,从而让测试用例覆盖更多的场景,提升测试的覆盖率,也避免了fbd模型转换fsm模型状态爆炸问题,并且能够自动生成测试用例,不但避免了人为失误,还提升了测试设计的效率。[0140]下面对fbd模型转换为fsm的算法的完整实现过程进行描述:[0141]图16为fbd模型转换为fsm的算法的流程图,如图16所示,fbd模型转换为fsm的算法可以包括如下步骤:[0142]160、建立初始状态;[0143]fbd模型的前置状态必须是某一个已经建立的fsm模型的一个状态元素。获取fbd模型的前置状态作为初始状态,假设为s0,同时与前置状态所在的fsm模型建立关联。[0144]161、遍历fbd模型;[0145]遍历fbd模型。fbd模型以一个输出为根节点,是树形结构,通过深度遍历算法,依次查找fbd模型的每一个模型元素。[0146]162、是否为输入变化量或输出变化量;若是,返回步骤161,若否,执行步骤163;[0147]163、求解获取的模型元素的入口状态;[0148]164、将获取的模型元素转换为展开fsm模型;[0149]165、求解展开fsm模型的转换/状态的输入变量和输出变量的数据组合;[0150]166、所有展开fsm模型的转换/状态求解是否完成;若是,执行步骤167,若否,返回步骤165;[0151]167、fbd模型中所有功能块是否分解完成,若是,执行步骤168,若否,返回步骤161;[0152]168、对测试分解的最终结果删减合并重复路径,得到转换fsm模型;[0153]169、生成fsm模型对应的fsm状态图。[0154]图17为图16中步骤165的流程图,如图17所示,步骤165的实现步骤具体可以包括如下步骤:[0155]1651、从转换状态对集合fsmac选择一个转换状态对acti/sti;[0156]1652、以模型元素fa为起点向前深度遍历fbd模型,将acti的数据组合传递给模型元素fa的直接输入模型的输出;[0157]1653、当前的向前模型元素是否表示输入模型元素,若是,执行步骤1654,若否,执行步骤1655;[0158]1654、将输入变量及输入变量的取值加入转换acti,并执行步骤1657;[0159]1655、根据当前的向前模型元素的类型和期望输出,按照算法求解当前当前的向前模型元素的直接输入数据组合;[0160]1656、从当前的向前模型元素向前深度遍历fbd模型,并将当前的向前模型元素的期望输入传递给下一个向前模型元素,作为直接输入元素的输出数据,并返回步骤1653;[0161]1657、向前遍历是否完成,若是,执行步骤1658,若否,返回步骤1652;[0162]1658、以模型元素fa为起点向后深度遍历fbd模型将sti的数据组合传递给fa的直接输出模型的输入;[0163]1659、当前的向后模型元素是否为输出模型元素,若是,执行步骤16510,若否,执行步骤16511;[0164]16510、将输出变量及取值加入状态sti,并执行步骤165913;[0165]16511、根据当前的向后模型元素的类型和期望输出,按照算法求解当前向后模型元素的直接输入和直接输出数据组合;[0166]16512、从当前的向后模型元素向后深度遍历fbd模型,并将当前的向后模型元素的期望输出传递给下一个向后功能模型元素对应的直接输入元素作为直接输出元素,并返回步骤1659;[0167]16513、向后遍历是否完成,若是,执行步骤165914,若否,返回步骤1658;[0168]16514、集合fsmac中的所有转换状态对求解是否完成,若是,结束,若否,返回步骤1651。[0169]需要说明的是,本发明实施例的方法可以由单个设备执行,例如一台计算机或服务器等。本实施例的方法也可以应用于分布式场景下,由多台设备相互配合来完成。在这种分布式场景的情况下,这多台设备中的一台设备可以只执行本发明实施例的方法中的某一个或多个步骤,这多台设备相互之间会进行交互以完成的方法。[0170]实施例四[0171]为解决现有技术中存在的上述技术问题,本发明实施例还提供了一种测试用例生成装置。[0172]图18为本发明的测试用例生成装置实施例的结构示意图,如图18所示,本实施例的测试用例生成装置包括fsm建模模块181、fbd建模模块182、fbd模型转换fsm模型模块183、自动生成测试用例模块184。[0173]fsm建模模块181,用于根据软件需求规格中的所有软件运行的状态和不同软件运行的状态之间转换的触发条件,建立有限状态机模型;[0174]fbd建模模块182,用于根据软件需求规格中的输入输出、输入与输出之间的逻辑关系、所有输入之间的约束关系,建立基于类功能块图语言的功能块图模型;以及,根据所述功能块图模型的生效状态,在所述有限状态机模型中选取一个软件运行的状态作为所述功能块图模型的前置状态;[0175]fbd模型转换fsm模型模块183,用于根据预设的转换规则,将功能块图模型转换为描述软件运行的状态变化过程的转换有限状态机模型,并根据所述功能块图模型的前置状态,将所述转换有限状态机模型与所述有限状态机模型进行关联,得到目标有限状态机模型;[0176]自动生成测试用例模块184,用于基于所述目标有限状态机模型,采用预设的遍历算法,将每一条路径生成一条测试用例。[0177]在一个具体实现过程中,本实施例的测试用例生成装置还可以包括过程fsm模型185,用于生成所述转换有限状态机模型对应的有限状态机状态图;输出所述有限状态机状态图。[0178]实施例三[0179]为解决现有技术中存在的上述技术问题,本发明实施例还提供了一种测试用例生成设备。[0180]该测试用例生成设备包括,存储器和处理器;所述存储器上存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例所述测试用例生成方法的步骤。[0181]需要说明的是,上述实施例的设备用于实现前述实施例中相应的方法,并且具有相应的方法实施例的有益效果,在此不再赘述。[0182]实施例四[0183]为解决现有技术中存在的上述技术问题,本发明实施例提供了一种存储介质。[0184]本发明实施例提供的存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述实施例的测试用例生成方法的步骤。[0185]可以理解的是,上述各实施例中相同或相似部分可以相互参考,在一些实施例中未详细说明的内容可以参见其他实施例中相同或相似的内容。[0186]需要说明的是,在本发明的描述中,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。此外,在本发明的描述中,除非另有说明,“多个”的含义是指至少两个。[0187]流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或更多个用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分,并且本发明的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能,这应被本发明的实施例所属
技术领域
:的技术人员所理解。[0188]应当理解,本发明的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。例如,如果用硬件来实现,和在另一实施方式中一样,可用本领域公知的下列技术中的任一项或他们的组合来实现:具有用于对数据信号实现逻辑功能的逻辑门电路的离散逻辑电路,具有合适的组合逻辑门电路的专用集成电路,可编程门阵列(pga),现场可编程门阵列(fpga)等。[0189]本
技术领域
:的普通技术人员可以理解实现上述实施例方法携带的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施例的步骤之一或其组合。[0190]此外,在本发明各个实施例中的各功能单元可以集成在一个处理模块32中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。所述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。[0191]上述提到的存储介质可以是只读存储器,磁盘或光盘等。[0192]在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。[0193]虽然本发明所公开的实施方式如上,但所述的内容只是为了便于理解本发明而采用的实施方式,并非用以限定本发明。任何本发明所属
技术领域
:内的技术人员,在不脱离本发明所公开的精神和范围的前提下,可以在实施的形式上及细节上作任何的修改与变化,但本发明的保护范围,仍须以所附的权利要求书所界定的范围为准。当前第1页12当前第1页12
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献