CN104991863A - 一种基于功能块图测试模型自动生成测试用例的方法 - Google Patents
一种基于功能块图测试模型自动生成测试用例的方法 Download PDFInfo
- Publication number
- CN104991863A CN104991863A CN201510412282.0A CN201510412282A CN104991863A CN 104991863 A CN104991863 A CN 104991863A CN 201510412282 A CN201510412282 A CN 201510412282A CN 104991863 A CN104991863 A CN 104991863A
- Authority
- CN
- China
- Prior art keywords
- data
- function block
- block diagram
- model
- input
- 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
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于功能块图测试模型自动生成测试用例的方法,步骤包括:提取嵌入式软件的需求规格中的输入与输出、逻辑关系和约束关系,根据软件的需求规格中的输入输出、逻辑关系和约束关系建立基于类功能块图语言的功能块图测试模型;建立用于将功能块图测试模型转换为数据组合表的转换规则;从功能块图测试模型中提取基础数据,然后在基础数据的基础上根据所述转换规则进行数据衍生,从而将功能块图测试模型转换为数据组合表;根据数据组合表生成测试用例。本发明具有测试效率高、测试用例质量好、对时序关系敏感、对边界敏感、对运算逻辑敏感、能够识别软件的状态和状态之间的转移关系的优点。
Description
技术领域
本发明涉及嵌入式软件开发的软件测试技术,具体涉及一种基于功能块图测试模型自动生成测试用例的方法。
背景技术
软件测试是软件质量的一个重要保证,在软件测试领域,测试用例和测试脚本的编写一直是软件测试的一项重要工作,测试用例和测试脚本的质量对于测试的质量和被测软件的质量有重大的影响,针对同样的需求,不同水平的测试人员编写的测试用例和测试脚本质量相差很大,而且人工编写测试用例和测试脚本工作量很大,效率较低。
基于模型的测试(Model based testing,简称MBT)属于软件测试领域的一种测试方法,它通过建立测试场景或测试模型(以下简称测试模型),自动生成测试用例和测试代码。它是软件测试的一种新兴技术,与传统测试技术相比,MBT更直观、更容易理解,能够自动生成测试数据,测试覆盖率高,测试用例的逻辑路径能方便的展示出来,方便校核需求与代码,省去大量的重复代码的编写工作,测试用例的代码由测试模型生成,能够提升测试效率,而且MBT模型形象直观、更容易理解,它通过算法自动生成测试用例与测试脚本,能够提高测试设计与测试用例的质量。目前基于模型的测试研究主要有因果图、判定表、正交表、FSM有限状态机、UML统一建模语言模型等建模方法,但是因果图、正交表测试建模方法,无法处理时序问题和状态转移问题;基于FSM有限状态机的测试建模存在模型爆炸的缺点;UML适用于面向对象的软件开发的测试建模,不适用于面向过程的软件开发的测试建模。
如图1所示,基于模型的测试的一般步骤为:分析软件的需求规格、根据需求建立模型、模型分析与检查、根据模型生成测试用例以及根据模型或测试用例生成测试脚本。目前,国内外对于MBT测试技术的都进行了大量的研究,形成了一些MBT的测试方法,目前典型的MBT测试方法有以下几类:基于因果图模型的测试方法、基于判定表(Decision Tables)模型的测试方法、基于正交表模型的测试方法、基于FSM(Finite-state machine)有限状态机模型的测试建模方法、基于UML(Unified Modeling Language)统一建模语言的测试方法模型。
因果图(cause effect graphics)是一种形式化语言,是一种组合逻辑网络图。因果图把输入条件视为原因,把输出或程序状态的改变视为结果,将黑盒看成是从因到果的网络图,采用逻辑图的形式来表达功能说明书中输入条件的各种组合与输出的关系。基于因果图模型的测试方法的基本原理是通过因果图,把用自然语言描述的功能说明转换为判定表,然后为判定表的每一列设计一个测试用例。
因果图模型输入输出主要包含以下两种关系:原因与结果之间的关系、输入及输出条件的关系。如图2所示,原因与结果之间的关系包括恒等、非、或和与四种关系。如图3所示,输入及输出条件的关系包括异、或、唯一、要求和强制五种关系。
如图4所示,现有技术的基于因果图模型的测试方法一般分为5个步骤:(1)分析需求规格,提取原因和结果。分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等级类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符。(2)建立因果图模型。分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系,画出因果图。(3)建立因果图中输入、输出的约束关系。由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件。(4)把因果图转换为判定表。(5)根据判定表生成测试用例。把判定表的每一列拿出来作为依据,自动生成测试用例。
基于因果图建模的测试方法逻辑性强,对于需求的表达清晰明了、易于理解,它不仅仅考虑输入之间的逻辑组合,并且考虑了输入之间的约束关系,可以通过约束关系,避免输入组合的爆炸,降低测试用例数量,但是基于因果图模型的测试方法存在以下缺点:(1)、基于因果图模型的测试方法对于时序关系不敏感,当需求中涉及时序(延时、脉冲)关系时,因果图模型无法清晰地表述。(2)、基于因果图模型的测试对于边界不敏感,当出现比较逻辑(大于、等于、大于等于、小于、小于等于)时,因果图建模无法提取相应的边界,只能人工去提取边界。(3)、基于因果图模型的测试方法对于运算逻辑不敏感,当出现运算逻辑(加、减、乘、除、求模、取余)时,因果图模型无法对这些运算逻辑进行识别,也无法对运算逻辑进行测试分解。(4)、基于因果图模型的测试方法无法识别软件的状态和状态之间的转移关系,因此只能生成测试用例,而无法生成可执行的自动化测试脚本。
发明内容
本发明要解决的技术问题是:针对现有技术的上述问题,提供一种对时序关系敏感、对边界敏感、对运算逻辑敏感、能够识别软件的状态和状态之间的转移关系的基于功能块图测试模型自动生成测试用例的方法。
为了解决上述技术问题,本发明采用的技术方案为:
一种基于功能块图测试模型自动生成测试用例的方法,步骤包括:
1)提取嵌入式软件的需求规格中的输入与输出、逻辑关系和约束关系,根据软件的需求规格中的输入输出、逻辑关系和约束关系建立基于类功能块图语言的功能块图测试模型;
2)建立用于将功能块图测试模型转换为数据组合表的转换规则;
3)从功能块图测试模型中提取基础数据,然后在基础数据的基础上根据所述转换规则进行数据衍生,从而将功能块图测试模型转换为数据组合表;
4)根据数据组合表生成测试用例。
优选地,所述步骤1)的详细步骤如下:
1.1)提取嵌入式软件的需求规格中的输入与输出;
1.2)定义输入与输出的数据类型、取值范围、默认测试数据;
1.3)分析所有输入与输出之间的逻辑关系,将输入与输出之间的逻辑关系采用模型元素描述出来,画出功能块图测试模型图;
1.4)分析所有输入之间的约束关系,并在功能块图测试模型图上表示出所述约束关系。
优选地,所述步骤1.1)中嵌入式软件的需求规格中的输入需要满足的要求包括:输入的数据类型确定、输入的数据取值范围确定、输入的数据的精度确定、输入的数据要具备用于生成测试用例时优先取值的默认测试取值。
优选地,所述步骤1.3)中的模型元素包括逻辑关系、逻辑比较、运算逻辑、约束关系、时序关系、触发器或累加器共六种类型的模型元素,所述逻辑关系包括与、或、非、异或以及同或,所述逻辑比较包括恒等、不等、大于、大于等于、小于以及小于等于,所述运算逻辑包括加、减、乘、除、求余、取模、最大值以及最小值,所述约束关系包括E约束、R约束、M约束、O约束以及I约束,所述时序关系包括上升沿延时、下降沿延时以及脉冲,所述触发器或累加器包括RS触发器、SR触发器、递增计数器以及递减计数器;所述模型元素在满足可编程逻辑控制器标准IEC61131的基础上还包含模型元素的测试属性;所述模型元素的基本属性在满足可编程逻辑控制器标准IEC61131的基础上,还包括模型元素的名称、输入或输出数量、输入或输出数据类型,输入与输出之间的逻辑关系;所述模型元素的测试属性包含输入与输入之间的测试组合关系,输入与输出之间的测试分解关系。
优选地,所述步骤2)的详细步骤包括:
2.1)针对功能块图测试模型采用以输出为导向、倒序进行层次划分,使得同一个模型元素的输入属于同一个层次的输入,从而建立用于将功能块图测试模型转换为数据组合表的分层规则;
2.2)针对功能块图测试模型中的每一个模型元素,建立用于将功能块图测试模型转换为数据组合表时,用于使同一个模型元素的输入实现软件测试的最优覆盖的测试数据组合覆盖规则及优先规则;
2.3)建立用于将功能块图测试模型转换为数据组合表的约束规则,最终得到由分层规则、测试数据组合覆盖规则及优先规则、约束规则构成的转换规则。
优选地,所述步骤3)的详细步骤包括:
3.1)以功能块图测试模型的直接输出为导向,根据用于将功能块图测试模型转换为数据组合表的分层规则及优先规则,逆向推导功能块图测试模型的原始数据,建立数据组合表的第一组数据组合;
3.2)将第一组数据组合作为基础数据组合,根据用于将功能块图测试模型转换为数据组合表的覆盖规则,对第一组数据组合进行变型衍生后续的数据组合,直到生成的数据组合能够覆盖功能块图测试模型中所有模型元素的覆盖规则,最终得到由第一组数据组合以及所有后续的数据组合构成的数据组合表。
优选地,所述步骤3.1)具体是指:根据用于将功能块图测试模型转换为数据组合表的分层规则,首先选择作为倒序第1层次的输出,然后按照根据用于将功能块图测试模型转换为数据组合表的优先规则,以输出逐层向前推导逆向推导功能块图测试模型中每一层模型元素的输出和输入,从而得到数据组合表的第一组数据组合。
优选地,所述步骤3.2)的详细步骤包括:
3.2.1)将第一组数据组合作为进行数据衍生的基础数据组合,按照从左到右、从上到下的规则选择第1个模型元素;
3.2.2)对第1个模型元素的输入进行变动,输入数据按照从上到下的顺序,每次对基础数据组合变动其中1个输入的数据,形成1个新的数据组合并填入数据组合表;
3.2.3)如果第1个模型元素所有的输入都完成了1次变动,则跳转执行步骤3.2.4)开始对第2个模型元素的输入数据进行变动;否则跳转执行步骤3.2.2)规则继续对第1个模型元素的下一个输入数据进行变动;
3.2.4)对第2模型元素的输入进行变动,输入数据按照从上到下的顺序,每次对基础数据组合变动其中1个输入的数据,形成1个新的数据组合并填入数据组合表;
3.2.5)如果第2个模型元素所有的输入都完成了1次变动,则跳转执行步骤3.2.6)开始对后续的第n个模型元素的输入数据进行变动,其中n为大于等于3的自然数;否则跳转执行步骤3.2.4)规则继续对第2个模型元素的输入数据进行变动;
3.2.6)按照对第1个模型元素和第2个模型元素数据衍生的方法,依次对第n个模型元素的输入进行变动,衍生数据组合,直到完成所有的模型元素的数据衍生;
3.2.7)如果衍生的数据组合满足覆盖准则,则跳转执行步骤3.2.9),否则跳转执行步骤3.2.8);
3.2.8)将基础数据组合的下一组数据作为基础数据,如果基础数据组合是最后一组数据组合,则进入步骤3.2.9),否则进入步骤3.2.2)针对新的基础数据组合进行数据衍生;
3.2.9)根据所述约束规则筛选数据,删除不符合规则的数据;
3.2.10)最终得到由第一组数据组合以及所有后续的数据组合构成的数据组合表。
本发明基于功能块图测试模型自动生成测试用例的方法具有下述优点:本发明针对嵌入软件测试,根据需求提取嵌入式软件的需求规格中的输入与输出、逻辑关系和约束关系,建立基于类功能块图语言的功能块图测试模型后,通过建立用于将功能块图测试模型转换为数据组合表的转换规则,根据所述转换规则将功能块图测试模型转换为数据组合表,根据数据组合表生成测试用例,能够提升测试设计和测试用例编写的效率,提升测试用例的质量,能够弥补基于因果图、有限状态机测试建模的不足,提高测试的效率,同时通过测试算法,保证了测试用例的质量,具有测试效率高、测试用例的质量好、对时序关系敏感、对边界敏感、对运算逻辑敏感、能够识别软件的状态和状态之间的转移关系的优点。
附图说明
图1为现有技术基于模型的测试的一般步骤流程示意图。
图2为现有技术因果图模型中原因与结果之间的关系示意图。
图3为现有技术因果图模型中输入及输出条件之间的关系示意图。
图4为现有技术的基于因果图模型的测试方法的流程示意图。
图5为本发明实施例方法的基本流程示意图。
图6为本发明实施例中方法中功能块图测试模型的实例。
图7为本发明实施例中步骤3.2)的流程示意图。
具体实施方式
如图5所示,本实施例基于功能块图测试模型自动生成测试用例的方法的步骤包括:
1)提取嵌入式软件的需求规格中的输入与输出、逻辑关系和约束关系,根据软件的需求规格中的输入输出、逻辑关系和约束关系建立基于类功能块图语言的功能块图测试模型;
2)建立用于将功能块图测试模型转换为数据组合表的转换规则;
3)从功能块图测试模型中提取基础数据,然后在基础数据的基础上根据转换规则进行数据衍生,从而将功能块图测试模型转换为数据组合表;
4)根据数据组合表生成测试用例。
本实施例中,步骤1)的详细步骤如下:
1.1)提取嵌入式软件的需求规格中的输入与输出;
1.2)定义输入与输出的数据类型、取值范围、默认测试数据;
1.3)分析所有输入与输出之间的逻辑关系,将输入与输出之间的逻辑关系采用模型元素描述出来,画出功能块图测试模型图;
1.4)分析所有输入之间的约束关系,并在功能块图测试模型图上表示出约束关系。
本实施例中,步骤1.1)中嵌入式软件的需求规格中的输入需要满足的要求包括:输入的数据类型确定、输入的数据取值范围确定、输入的数据的精度确定、输入的数据要具备用于生成测试用例时优先取值的默认测试取值。
本实施例中,步骤1.3)中的模型元素包括逻辑关系、逻辑比较、运算逻辑、约束关系、时序关系、触发器或累加器共六种类型的模型元素,逻辑关系包括与、或、非、异或以及同或,逻辑比较包括恒等、不等、大于、大于等于、小于以及小于等于,运算逻辑包括加、减、乘、除、求余、取模、最大值以及最小值,约束关系包括E约束、R约束、M约束、O约束以及I约束,时序关系包括上升沿延时(TON)、下降沿延时(TOF)以及脉冲(TP),触发器或累加器包括RS触发器、SR触发器、递增计数器以及递减计数器;模型元素在满足可编程逻辑控制器标准IEC61131的基础上还包含模型元素的测试属性;模型元素的基本属性在满足可编程逻辑控制器标准IEC61131的基础上,还包括模型元素的名称、输入或输出数量、输入或输出数据类型,输入与输出之间的逻辑关系;模型元素的测试属性包含输入与输入之间的测试组合关系,输入与输出之间的测试分解关系。
数据组合表是判定表的一种拓展和泛化。判定表用于表达对象属性间的逻辑关系,推理不同条件下的决策动作,通用的判定表如表1所示。通用的判定表一般有如下约束:(1)输入或输出的值只能是1(有效)或0(无效)两种状态,无法识别其他数据类型。(2)输入有时不是原始数据,而是需要人工分析得出的逻辑输入条件。(3)无法体现时序关系。
表1:通用的判定表。
数据组合表对于决策表进行了拓展和泛化,表达的是输入数据的不同的组合关系,以及组合关系下对应的输出结果。数据组合表是原始数据的组合,根据建立的规则,自动对原始数据进行逻辑提取,不需要人工进行提取,数据组合表的数据类型可以是任意数据类型,取值可以去任意有效的数据值,并且数据组合表综合了数据组合后的时序关系。为了方便功能块图测试模型向数据组合表进行转换,对数据组合表进行如下设定:(1)数据组合表由输入、时序、直接输出和间接输出四部分组成;(2)直接输出表示只受输入影响,不受其他输出影响的输出,间接输出表示只受直接输出的影响的输出;(3)数据组合表以直接输出为导向,每一个数据组合表只能包含一个直接输出;(4)当时时序不影响结果时,时序部分无效;(5)数据组合表的取值可以是任意合法的值;(6)数据组合表的取值包含两重属性,一个属性是数据的值,另一个属性是该数据值对该数据直接作用的模型元素的输出的影响。本实施例中,数据组合表的格式具体如表2所示。
表2:判定表扩展后的数据组合表。
本实施例中,步骤2)的详细步骤包括:
2.1)针对功能块图测试模型采用以输出为导向、倒序进行层次划分,使得同一个模型元素的输入属于同一个层次的输入,从而建立用于将功能块图测试模型转换为数据组合表的分层规则;功能块图测试模型中,同一模型元素的输入属于同一层次的输入,即作用于同一个模型元素的输入属于同一层次输入,否则属于不同层次的输入。如图6,Data_In1与Param1属于同一输入层次,Data_In1与Data_In2不属于同一层次。Data_In2与Temp21属于同一输入层次。功能块图测试模型采用以输出为导向,倒序进行层次划分。输出作为倒序第1层次,由输出向前推导,每经过一个模型元素,倒序层次加1。如图6所示,Data_Out1为倒序第1层次,Temp41和Temp42作为倒序第2层次,Temp31为倒序第3层次,Data_In1为倒序第5层次,依次类推。
2.2)针对功能块图测试模型中的每一个模型元素,建立用于将功能块图测试模型转换为数据组合表时,用于使同一个模型元素的输入实现软件测试的最优覆盖的测试数据组合覆盖规则及优先规则;作用于同一个模型元素的输入,为了保证软件测试的最优覆盖,功能块图测试模型中每一种模型元素在进行测试模型转换数据组合表时,至少要覆盖以下数据组合情形(覆盖规则)见表3,当模型元素的输出要求确定时,优先进行数据组合规则(优先规则)见表3。
表3:各模型元素的覆盖规则及优先规则表。
2.3)建立用于将功能块图测试模型转换为数据组合表的约束规则,最终得到由分层规则、测试数据组合覆盖规则及优先规则、约束规则构成的转换规则。功能块图测试模型转换为数据组合表时,为了防止出现无效或者冗余的数据组合,对于存在约束条件的输入,要按照约束规则,对于数据组合表中的组合条件进行筛选。本实施例中,各约束条件模型元素的约束规则如表4所示。
表4:各约束条件模型元素的约束规则表。
本实施例中,步骤3)的详细步骤包括:
3.1)以功能块图测试模型的直接输出为导向,根据用于将功能块图测试模型转换为数据组合表的分层规则及优先规则,逆向推导功能块图测试模型的原始数据,建立数据组合表的第一组数据组合;
3.2)将第一组数据组合作为基础数据组合,根据用于将功能块图测试模型转换为数据组合表的覆盖规则,对第一组数据组合进行变型衍生后续的数据组合,直到生成的数据组合能够覆盖功能块图测试模型中所有模型元素的覆盖规则,最终得到由第一组数据组合以及所有后续的数据组合构成的数据组合表。
功能块图测试模型建立后,根据功能块图测试模型转换为数据组合表的优先级规则,优先建立第一组数据组合,第一组数据组合作为整个数据组合表的基础,其他数据组合,皆是根据第一组数据组合直接变型或者间接变型而来。建立第一组数据组合后,根据功能块图测试模型转换为数据组合表的覆盖规则,对第一组数据组合进行变型,衍生后续的数据组合,直到生成的数据组合能够覆盖功能块图测试模型中所有模型元素的覆盖规则。如果以第一组数据组合作为基础数据组合衍生出的所有数据组合无法满足功能块图测试模型中所有模型元素的覆盖要求,则以第二组数据组合作为基础数据组合进行衍生。以此类推,直到生成的数据组合能够覆盖功能块图测试模型中所有模型元素的覆盖规则。
本实施例中,步骤3.1)具体是指:根据用于将功能块图测试模型转换为数据组合表的分层规则,首先选择作为倒序第1层次的输出,然后按照根据用于将功能块图测试模型转换为数据组合表的优先规则,以输出逐层向前推导逆向推导功能块图测试模型中每一层模型元素的输出和输入,从而得到数据组合表的第一组数据组合。
根据功能块图测试模型分层规则,输出作为倒序第1层次,当输出为布尔类型时,优先组合为输出为1的组合,由输出向前推导,经过第一个模型元素,对该模型元素的输出要求为1,按照模型元素的优先规则,当模型的输出要求确定时,模型元素的输入组合随之确定。该模型元素输入的数据组合确定,则每一个输入对于上一个元素的输出要求可以确定,依次类推,直到达到原始输入(倒数最后一层输入),则第一组数据即可确定。以图6为例,建立第一组数据组合的具体步骤如下:(1)根据优先规则,Data_Out1为1,根据表2,如果RS要求输出为1,则优先SET为1,RESET为0,即Temp41为1,Temp42为0。(2)Temp41为1,则要求模型元素TON的输出为1,根据表3数据组合优先规则,Temp31为1,时间Time1+Δt(Δt为时间精度);Temp42为0,要求模型元素OR输出为0,根据表3数据组合优先规则,优先组合为Data_In3为0,Data_In4为0,Data_In5为0。(3)Temp31要求为1,则要求模型元素AND输出为1,根据表3数据组合优先规则,Temp21为1,Data_In2为1;(4)Temp21为1,则要求模型元素GT输出为1,根据表3数据组合优先规则,Data_In1取Parameter1+Δ(Δ表示数据的精度),最终形成的第一组组合数据如表5所示。
如图7所示,步骤3.2)的详细步骤包括:
3.2.1)将第一组数据组合作为进行数据衍生的基础数据组合,按照从左到右、从上到下的规则选择第1个模型元素;
3.2.2)对第1个模型元素的输入进行变动,输入数据按照从上到下的顺序,每次对基础数据组合变动其中1个输入的数据,形成1个新的数据组合并填入数据组合表;
3.2.3)如果第1个模型元素所有的输入都完成了1次变动,则跳转执行步骤3.2.4)开始对第2个模型元素的输入数据进行变动;否则跳转执行步骤3.2.2)规则继续对第1个模型元素的下一个输入数据进行变动;
3.2.4)对第2模型元素的输入进行变动,输入数据按照从上到下的顺序,每次对基础数据组合变动其中1个输入的数据,形成1个新的数据组合并填入数据组合表;
3.2.5)如果第2个模型元素所有的输入都完成了1次变动,则跳转执行步骤3.2.6)开始对后续的第n个模型元素的输入数据进行变动,其中n为大于等于3的自然数;否则跳转执行步骤3.2.4)规则继续对第2个模型元素的输入数据进行变动;
3.2.6)按照对第1个模型元素和第2个模型元素数据衍生的方法,依次对第n个模型元素的输入进行变动,衍生数据组合,直到完成所有的模型元素的数据衍生;
3.2.7)如果衍生的数据组合满足覆盖准则,则跳转执行步骤3.2.9),否则跳转执行步骤3.2.8);
3.2.8)将基础数据组合的下一组数据作为基础数据,如果基础数据组合是最后一组数据组合,则进入步骤3.2.9),否则进入步骤3.2.2)针对新的基础数据组合进行数据衍生;
3.2.9)根据约束规则筛选数据,删除不符合规则的数据;
3.2.10)最终得到由第一组数据组合以及所有后续的数据组合构成的数据组合表。
以图6为例,衍生数据组合的步骤如下:(1)从左到右、从上到下,首先变动模型元素GT的输入,在基础数据组合的基础上,根据表3数据组合的覆盖规则,Data_In1变为Param1,其他数据维持不变,衍生出第二组数据组合;Data_In1变为Param1-Δ,其他数据不变,衍生出3组数据组合,至此,数据组合已经满足模型元素GT的覆盖要求。(2)在基础数据组合的基础上,对模型元素AND的输入进行变动,Data_In2为0,衍生第四组数据组合,前4组数据组合覆盖了表3对AND元素的覆盖要求。(3)在基础数据组合的基础上,对模型元素TON进行时序变动,Time1为Time1-Δt,形成第5组数据组合。(4)依次类推,对基础数据组合完成所有输入的变动后,衍生出7组数据组合,共形成了8组数据组合(见表5),但是数据组合没有满足模型元素RS的覆盖规则。(5)第二组数据组合为基础数据组合,衍生的数据组合无法提高模型元素RS的覆盖,故舍弃(6)以第3组数据组合作为基础数据组合,衍生的数据组合有1组数据组合提高了模型元素RS的覆盖要求,同时数据组合满足了所有模型元素的覆盖要求,故停止衍生。(7)根据约束规则,第7组数据组合删除(表5中以删除线进行标记),最终形成的数据组合表见表5。
表5:本实施例中得到的数据组合表。
数据组合表中的每一组数据表示一个测试用例,根据数据组合表,将数据组合表中的每一种数据组合导出,形成测试用例。通过表5形成测试用例表见表6。
表6:测试用例表。
综上,本实施例吸取了基于因果图模型的测试方法的优点,同时模型对时序(延时、脉冲)、比较逻辑(大于、等于、大于等于、小于、小于等于)、运算逻辑(加、减、乘、除、求模、取余)敏感,能够对这些逻辑自动进行测试分析,将因果图进一步扩展,自动生成数据组合表,并通过数据组合表生成测试用例。本实施例提出的基于功能块图测试模型的测试方法,能够根据需求规格建立功能块图测试模型,直观易懂,并能够自动生成测试用例,减少了人工编写测试用例的工作量,提升软件测试效率。并且测试用例通过测试规则自动生成,降低了对测试人员测试技术水平的要求,提升了测试用例和测试脚本的质量。目前的嵌入式软件开发过程中,PLC编程语言,尤其是软PLC应用十分广泛,在对基于PLC语言开发的软件进行软件测试时,本实施例测试建模方法采用的是PLC语言中的FBD语言(功能块图语言),建立的测试模型与被测软件存在相通之处,可以实现相互印证校对。需要说明的是,PLC还存在ST语言(结构化文本语言)、LD语言(梯形图语言)、SFC语言(顺序功能流程图语言)、IL(指令表语言)四种编程语言,但是PLC的编程语言存在相通之处,因此本实施例的建模方法还可以采用ST语言、LD语言、SFC语言、IL语言替代FBD语言实现。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (8)
1.一种基于功能块图测试模型自动生成测试用例的方法,其特征在于步骤包括:
1)提取嵌入式软件的需求规格中的输入与输出、逻辑关系和约束关系,根据软件的需求规格中的输入输出、逻辑关系和约束关系建立基于类功能块图语言的功能块图测试模型;
2)建立用于将功能块图测试模型转换为数据组合表的转换规则;
3)从功能块图测试模型中提取基础数据,然后在基础数据的基础上根据所述转换规则进行数据衍生,从而将功能块图测试模型转换为数据组合表;
4)根据数据组合表生成测试用例。
2.根据权利要求1所述的基于功能块图测试模型自动生成测试用例的方法,其特征在于,所述步骤1)的详细步骤如下:
1.1)提取嵌入式软件的需求规格中的输入与输出;
1.2)定义输入与输出的数据类型、取值范围、默认测试数据;
1.3)分析所有输入与输出之间的逻辑关系,将输入与输出之间的逻辑关系采用模型元素描述出来,画出功能块图测试模型图;
1.4)分析所有输入之间的约束关系,并在功能块图测试模型图上表示出所述约束关系。
3.根据权利要求2所述的基于功能块图测试模型自动生成测试用例的方法,其特征在于,所述步骤1.1)中嵌入式软件的需求规格中的输入需要满足的要求包括:输入的数据类型确定、输入的数据取值范围确定、输入的数据的精度确定、输入的数据要具备用于生成测试用例时优先取值的默认测试取值。
4.根据权利要求3所述的基于功能块图测试模型自动生成测试用例的方法,其特征在于,所述步骤1.3)中的模型元素包括逻辑关系、逻辑比较、运算逻辑、约束关系、时序关系、触发器或累加器共六种类型的模型元素,所述逻辑关系包括与、或、非、异或以及同或,所述逻辑比较包括恒等、不等、大于、大于等于、小于以及小于等于,所述运算逻辑包括加、减、乘、除、求余、取模、最大值以及最小值,所述约束关系包括E约束、R约束、M约束、O约束以及I约束,所述时序关系包括上升沿延时、下降沿延时以及脉冲,所述触发器或累加器包括RS触发器、SR触发器、递增计数器以及递减计数器;所述模型元素在满足可编程逻辑控制器标准IEC61131的基础上还包含模型元素的测试属性;所述模型元素的基本属性在满足可编程逻辑控制器标准IEC61131的基础上,还包括模型元素的名称、输入或输出数量、输入或输出数据类型,输入与输出之间的逻辑关系;所述模型元素的测试属性包含输入与输入之间的测试组合关系,输入与输出之间的测试分解关系。
5.根据权利要求1~4中任意一项所述的基于功能块图测试模型自动生成测试用例的方法,其特征在于,所述步骤2)的详细步骤包括:
2.1)针对功能块图测试模型采用以输出为导向、倒序进行层次划分,使得同一个模型元素的输入属于同一个层次的输入,从而建立用于将功能块图测试模型转换为数据组合表的分层规则;
2.2)针对功能块图测试模型中的每一个模型元素,建立用于将功能块图测试模型转换为数据组合表时,用于使同一个模型元素的输入实现软件测试的最优覆盖的测试数据组合覆盖规则及优先规则;
2.3)建立用于将功能块图测试模型转换为数据组合表的约束规则,最终得到由分层规则、测试数据组合覆盖规则及优先规则、约束规则构成的转换规则。
6.根据权利要求5所述的基于功能块图测试模型自动生成测试用例的方法,其特征在于,所述步骤3)的详细步骤包括:
3.1)以功能块图测试模型的直接输出为导向,根据用于将功能块图测试模型转换为数据组合表的分层规则及优先规则,逆向推导功能块图测试模型的原始数据,建立数据组合表的第一组数据组合;
3.2)将第一组数据组合作为基础数据组合,根据用于将功能块图测试模型转换为数据组合表的覆盖规则,对第一组数据组合进行变型衍生后续的数据组合,直到生成的数据组合能够覆盖功能块图测试模型中所有模型元素的覆盖规则,最终得到由第一组数据组合以及所有后续的数据组合构成的数据组合表。
7.根据权利要求6所述的基于功能块图测试模型自动生成测试用例的方法,其特征在于,所述步骤3.1)具体是指:根据用于将功能块图测试模型转换为数据组合表的分层规则,首先选择作为倒序第1层次的输出,然后按照根据用于将功能块图测试模型转换为数据组合表的优先规则,以输出逐层向前推导逆向推导功能块图测试模型中每一层模型元素的输出和输入,从而得到数据组合表的第一组数据组合。
8.根据权利要求7所述的基于功能块图测试模型自动生成测试用例的方法,其特征在于,所述步骤3.2)的详细步骤包括:
3.2.1)将第一组数据组合作为进行数据衍生的基础数据组合,按照从左到右、从上到下的规则选择第1个模型元素;
3.2.2)对第1个模型元素的输入进行变动,输入数据按照从上到下的顺序,每次对基础数据组合变动其中1个输入的数据,形成1个新的数据组合并填入数据组合表;
3.2.3)如果第1个模型元素所有的输入都完成了1次变动,则跳转执行步骤3.2.4)开始对第2个模型元素的输入数据进行变动;否则跳转执行步骤3.2.2)规则继续对第1个模型元素的下一个输入数据进行变动;
3.2.4)对第2模型元素的输入进行变动,输入数据按照从上到下的顺序,每次对基础数据组合变动其中1个输入的数据,形成1个新的数据组合并填入数据组合表;
3.2.5)如果第2个模型元素所有的输入都完成了1次变动,则跳转执行步骤3.2.6)开始对后续的第n个模型元素的输入数据进行变动,其中n为大于等于3的自然数;否则跳转执行步骤3.2.4)规则继续对第2个模型元素的输入数据进行变动;
3.2.6)按照对第1个模型元素和第2个模型元素数据衍生的方法,依次对第n个模型元素的输入进行变动,衍生数据组合,直到完成所有的模型元素的数据衍生;
3.2.7)如果衍生的数据组合满足所述覆盖准则,则跳转执行步骤3.2.9),否则跳转执行步骤3.2.8);
3.2.8)将基础数据组合的下一组数据作为基础数据,如果基础数据组合是最后一组数据组合,则进入步骤3.2.9),否则进入步骤3.2.2)针对新的基础数据组合进行数据衍生;
3.2.9)根据所述约束规则筛选数据,删除不符合规则的数据;
3.2.10)最终得到由第一组数据组合以及所有后续的数据组合构成的数据组合表。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510412282.0A CN104991863B (zh) | 2015-07-14 | 2015-07-14 | 一种基于功能块图测试模型自动生成测试用例的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510412282.0A CN104991863B (zh) | 2015-07-14 | 2015-07-14 | 一种基于功能块图测试模型自动生成测试用例的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104991863A true CN104991863A (zh) | 2015-10-21 |
CN104991863B CN104991863B (zh) | 2017-11-03 |
Family
ID=54303679
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510412282.0A Active CN104991863B (zh) | 2015-07-14 | 2015-07-14 | 一种基于功能块图测试模型自动生成测试用例的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104991863B (zh) |
Cited By (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426309A (zh) * | 2015-11-13 | 2016-03-23 | 上海斐讯数据通信技术有限公司 | 测试用例自动生成方法和装置 |
WO2017096990A1 (zh) * | 2015-12-07 | 2017-06-15 | 中兴通讯股份有限公司 | 测试脚本自动生成方法及装置 |
CN107066388A (zh) * | 2017-04-19 | 2017-08-18 | 艾瑞克·李 | 软件行为模型面向对象建模方法 |
CN107066375A (zh) * | 2015-11-20 | 2017-08-18 | 通用电气公司 | 安全关键软件自动化基于需求的测试实例生成系统和方法 |
CN107748713A (zh) * | 2017-09-04 | 2018-03-02 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于仿真测试用例的软件验证方法 |
CN108009082A (zh) * | 2017-11-22 | 2018-05-08 | 中国航空工业集团公司西安飞机设计研究所 | 一种基于飞行管理的组合测试用例生成方法 |
CN108132883A (zh) * | 2017-12-25 | 2018-06-08 | 信利光电股份有限公司 | 一种软件测试数据分析方法、装置、系统及存储介质 |
CN108701074A (zh) * | 2016-02-24 | 2018-10-23 | 三菱电机株式会社 | 测试用例生成装置和测试用例生成程序 |
CN109669861A (zh) * | 2018-11-30 | 2019-04-23 | 北京百卓网络技术有限公司 | 一种基于用户预期管理的测试方法及装置 |
CN110119358A (zh) * | 2019-05-15 | 2019-08-13 | 杭州电子科技大学 | Fbd程序的测试方法及装置 |
CN110515840A (zh) * | 2019-08-05 | 2019-11-29 | 华东师范大学 | 一种面向plc程序的自动化测试用例生成方法 |
CN110532177A (zh) * | 2019-08-05 | 2019-12-03 | 华东师范大学 | 一种面向plc程序的自动化测试用例生成系统 |
CN111190829A (zh) * | 2019-12-31 | 2020-05-22 | 武汉中海庭数据技术有限公司 | 一种路口测试模型数据自动构建方法和装置 |
CN111258911A (zh) * | 2020-02-13 | 2020-06-09 | 深圳航天科技创新研究院 | 一种基于数据驱动及多种覆盖策略的软件测试用例生成方法、系统及存储介质 |
CN111475410A (zh) * | 2020-03-31 | 2020-07-31 | 北京经纬恒润科技有限公司 | 一种测试用例生成方法及装置 |
CN113126516A (zh) * | 2019-12-30 | 2021-07-16 | 比亚迪股份有限公司 | 道岔虚拟测试设备 |
CN113434434A (zh) * | 2021-07-22 | 2021-09-24 | 中国工商银行股份有限公司 | 业务需求案例转化分级方法及装置 |
CN114461521A (zh) * | 2022-01-21 | 2022-05-10 | 中国船舶重工集团公司第七0九研究所 | 一种基于状态机的plc软件测试用例生成方法和系统 |
CN114610622A (zh) * | 2022-03-14 | 2022-06-10 | 浙江中控技术股份有限公司 | 一种系统功能块自动化测试分层设计方法及相关装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089618A1 (en) * | 2007-10-01 | 2009-04-02 | Fujitsu Limited | System and Method for Providing Automatic Test Generation for Web Applications |
US20090178021A1 (en) * | 2007-12-28 | 2009-07-09 | Federal Home Loan Mortgage Corporation (Freddie Mac) | Systems and Methods for Modeling and Generating Test Requirements for Software Applications |
CN104375943A (zh) * | 2014-12-11 | 2015-02-25 | 吴翔虎 | 一种基于静态模型的嵌入式软件黑盒测试用例生成方法 |
CN104615541A (zh) * | 2015-02-10 | 2015-05-13 | 上海创景计算机系统有限公司 | 基于流程图的仿真测试建模系统及方法 |
-
2015
- 2015-07-14 CN CN201510412282.0A patent/CN104991863B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20090089618A1 (en) * | 2007-10-01 | 2009-04-02 | Fujitsu Limited | System and Method for Providing Automatic Test Generation for Web Applications |
US20090178021A1 (en) * | 2007-12-28 | 2009-07-09 | Federal Home Loan Mortgage Corporation (Freddie Mac) | Systems and Methods for Modeling and Generating Test Requirements for Software Applications |
CN104375943A (zh) * | 2014-12-11 | 2015-02-25 | 吴翔虎 | 一种基于静态模型的嵌入式软件黑盒测试用例生成方法 |
CN104615541A (zh) * | 2015-02-10 | 2015-05-13 | 上海创景计算机系统有限公司 | 基于流程图的仿真测试建模系统及方法 |
Non-Patent Citations (2)
Title |
---|
冯秋燕: "基于UML模型的系统级测试用例生成方法", 《计算机应用》 * |
李宁 等: "基于黑盒测试的软件测试策略研究与实践", 《计算机应用研究》 * |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105426309A (zh) * | 2015-11-13 | 2016-03-23 | 上海斐讯数据通信技术有限公司 | 测试用例自动生成方法和装置 |
CN105426309B (zh) * | 2015-11-13 | 2018-04-06 | 上海斐讯数据通信技术有限公司 | 测试用例自动生成方法和装置 |
CN107066375A (zh) * | 2015-11-20 | 2017-08-18 | 通用电气公司 | 安全关键软件自动化基于需求的测试实例生成系统和方法 |
WO2017096990A1 (zh) * | 2015-12-07 | 2017-06-15 | 中兴通讯股份有限公司 | 测试脚本自动生成方法及装置 |
CN108701074A (zh) * | 2016-02-24 | 2018-10-23 | 三菱电机株式会社 | 测试用例生成装置和测试用例生成程序 |
CN107066388A (zh) * | 2017-04-19 | 2017-08-18 | 艾瑞克·李 | 软件行为模型面向对象建模方法 |
CN107748713A (zh) * | 2017-09-04 | 2018-03-02 | 中国航空工业集团公司西安飞行自动控制研究所 | 一种基于仿真测试用例的软件验证方法 |
CN108009082A (zh) * | 2017-11-22 | 2018-05-08 | 中国航空工业集团公司西安飞机设计研究所 | 一种基于飞行管理的组合测试用例生成方法 |
CN108132883A (zh) * | 2017-12-25 | 2018-06-08 | 信利光电股份有限公司 | 一种软件测试数据分析方法、装置、系统及存储介质 |
CN109669861A (zh) * | 2018-11-30 | 2019-04-23 | 北京百卓网络技术有限公司 | 一种基于用户预期管理的测试方法及装置 |
CN110119358A (zh) * | 2019-05-15 | 2019-08-13 | 杭州电子科技大学 | Fbd程序的测试方法及装置 |
CN110119358B (zh) * | 2019-05-15 | 2023-08-08 | 杭州电子科技大学 | Fbd程序的测试方法及装置 |
CN110532177A (zh) * | 2019-08-05 | 2019-12-03 | 华东师范大学 | 一种面向plc程序的自动化测试用例生成系统 |
CN110515840A (zh) * | 2019-08-05 | 2019-11-29 | 华东师范大学 | 一种面向plc程序的自动化测试用例生成方法 |
CN113126516A (zh) * | 2019-12-30 | 2021-07-16 | 比亚迪股份有限公司 | 道岔虚拟测试设备 |
CN111190829A (zh) * | 2019-12-31 | 2020-05-22 | 武汉中海庭数据技术有限公司 | 一种路口测试模型数据自动构建方法和装置 |
CN111190829B (zh) * | 2019-12-31 | 2022-04-29 | 武汉中海庭数据技术有限公司 | 一种路口测试模型数据自动构建方法和装置 |
CN111258911A (zh) * | 2020-02-13 | 2020-06-09 | 深圳航天科技创新研究院 | 一种基于数据驱动及多种覆盖策略的软件测试用例生成方法、系统及存储介质 |
CN111475410A (zh) * | 2020-03-31 | 2020-07-31 | 北京经纬恒润科技有限公司 | 一种测试用例生成方法及装置 |
CN113434434A (zh) * | 2021-07-22 | 2021-09-24 | 中国工商银行股份有限公司 | 业务需求案例转化分级方法及装置 |
CN113434434B (zh) * | 2021-07-22 | 2024-08-02 | 中国工商银行股份有限公司 | 业务需求案例转化分级方法及装置 |
CN114461521A (zh) * | 2022-01-21 | 2022-05-10 | 中国船舶重工集团公司第七0九研究所 | 一种基于状态机的plc软件测试用例生成方法和系统 |
CN114610622A (zh) * | 2022-03-14 | 2022-06-10 | 浙江中控技术股份有限公司 | 一种系统功能块自动化测试分层设计方法及相关装置 |
CN114610622B (zh) * | 2022-03-14 | 2024-05-28 | 浙江中控技术股份有限公司 | 一种系统功能块自动化测试分层设计方法及相关装置 |
Also Published As
Publication number | Publication date |
---|---|
CN104991863B (zh) | 2017-11-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104991863A (zh) | 一种基于功能块图测试模型自动生成测试用例的方法 | |
KR101149828B1 (ko) | 유스케이스 다이어그램을 기반으로 하는 테스트 케이스 생성 프로그램 및 이를 이용하여 테스트 케이스를 생성하는 방법 | |
CN103995781B (zh) | 一种基于模型的构件测试用例生成方法 | |
CN102508654B (zh) | 嵌入式可编程控制器的梯形图编辑器设计方法 | |
JP5005510B2 (ja) | ソフトウェアの設計支援方法、設計支援装置及び設計支援プログラム | |
CN102567201A (zh) | 跨模型的图形用户界面测试脚本自动修复方法 | |
CN108228455B (zh) | 一种软件控制危险分析方法 | |
CN103885942B (zh) | 一种快速翻译装置及方法 | |
CN106682343A (zh) | 一种基于图的邻接矩阵的形式化验证方法 | |
CN110955892B (zh) | 一种基于机器学习和电路行为级特征的硬件木马检测方法 | |
CN105279092A (zh) | 一种软件测试的方法及装置 | |
CN117667702A (zh) | 基于知识图谱的软件测试方法、装置、设备和存储介质 | |
CN115080448A (zh) | 一种软件代码不可达路径自动检测的方法和装置 | |
JP2007011605A (ja) | ソフトウェア動作仕様のモデル検査支援装置およびこれを備えたモデル検査システム並びにモデル検査支援プログラム | |
CN108170466B (zh) | 一种基于程序合成的c/c++程序缺陷自动修复方法 | |
CN104216703A (zh) | 嵌入式软件系统程序的开发方法 | |
JP6719798B1 (ja) | 論理結合型プログラムが実行時に発生する非同期型アルゴリズムの正統性の検証を実施可能にするためのプログラム | |
CN110554860B (zh) | 一种软件项目自然语言编程接口nli的构造方法及代码生成方法 | |
Pollitt et al. | Efficient proof checking with lrat in cadical (work in progress) | |
CN109002284B (zh) | 一种可视化联锁逻辑实现方法 | |
Bernardi et al. | Model checking to improve precision of design pattern instances identification in OO systems | |
US8024684B2 (en) | Apparatus, method, and computer product for estimating power consumption of LSI | |
JP6235945B2 (ja) | ソースコード生成および提供装置、並びにソースコード生成および提供方法 | |
CN115391173A (zh) | 从Simulink-StateFlow模型到NuSMV模型的转换方法 | |
Sun et al. | A hierarchical CPN model automatically generating method aiming at multithreading program algorithm error detection |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: The age of 412001 in Hunan Province, Zhuzhou Shifeng District Road No. 169 Patentee after: ZHUZHOU CRRC TIMES ELECTRIC Co.,Ltd. Address before: The age of 412001 in Hunan Province, Zhuzhou Shifeng District Road No. 169 Patentee before: ZHUZH CSR TIMES ELECTRIC Co.,Ltd. |