CN104375943A - 一种基于静态模型的嵌入式软件黑盒测试用例生成方法 - Google Patents
一种基于静态模型的嵌入式软件黑盒测试用例生成方法 Download PDFInfo
- Publication number
- CN104375943A CN104375943A CN201410765285.8A CN201410765285A CN104375943A CN 104375943 A CN104375943 A CN 104375943A CN 201410765285 A CN201410765285 A CN 201410765285A CN 104375943 A CN104375943 A CN 104375943A
- Authority
- CN
- China
- Prior art keywords
- test
- item
- test item
- black
- testing
- 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.)
- Pending
Links
Landscapes
- Debugging And Monitoring (AREA)
Abstract
一种基于静态模型的嵌入式软件黑盒测试用例生成方法,属于软件工程中的基于模型的测试自动化技术领域。本发明解决了现有的基于需求规格说明文档的黑盒测试存在测试滞后且难以理解、测试效率低、无法保证测试用例的质量的问题。本发明的技术方案为:(1)采用数据流图、故障树、因果图和判定表以及图形间的嵌套机制和图形的扩充语义构建嵌入式软件的静态模型,以描述嵌入式软件的静态测试需求;(2)基于静态模型,规划测试项,并根据测试覆盖准则和测试用例生成算法自动生成测试项对应的黑盒测试用例集合。本发明适用于嵌入式软件的静态测试需求描述和黑盒测试用例生成。
Description
技术领域
本发明涉及一种嵌入式软件黑盒测试用例生成方法,特别涉及一种基于静态模型的嵌入式软件黑盒测试用例生成方法,属于软件工程中的基于模型的测试自动化技术领域。
背景技术
当前,嵌入式软件的复杂度越来越高,可靠性和实时性要求也越来越严格,但嵌入式产品上市的时间要求却越来越短。为满足这些严苛的要求,高效的软件测试是必要的,包括测试用例的自动规划、生成、优化、执行与评估等。高效的软件测试需要解决如何在尽量弱的测试假设下,尽量快地生成尽量小但查错能力尽量强的测试用例集。
基于模型的测试(Model-Based Testing,MBT)是一种根据被测***(System UnderTest,SUT)需求和功能说明的模型及其派生的模型(一般称为测试模型)产生测试用例和评估测试结果的产品质量保证技术。基于模型的测试是一种高效的软件测试。
一般认为,MBT起始于1956年,最初主要用于电路、通信协议等与硬件设备相关的测试,到70年代末才开始用于与软件相关的测试。经过多年的研究,MBT已经形成了比较经典的三种理论——自动机理论、UML统一建模理论和概率统计与自动机相结合的理论。这三种理论又分别对应三类模型——FSM/EFSM/LTS/ASM模型、UML模型和Markov模型。近年来,关于MBT的研究热点主要包括将模型融入到软件生产线中、用例优化、用例评估、将MBT用于不同领域(如嵌入式***、大规模分布式***和数据采集***等)、根据UML模型及其他模型(如Uppaal模型、Simulink/Stateflow模型等)生成测试用例等。
在传统的软件测试中,经典的黑盒测试用例设计方法有等价类划分、边界值分析、因果图、判定表、错误推测等。等价类划分法是把程序的输入域划分成若干部分(类),然后从每个部分中选取少数代表性数据作为测试用例,每一类的代表性数据在测试中的作用等价于这一类中的其他数据。边界值分析法是在某个输入或输出变量范围的边界上,验证***功能是否正常运行的方法,通常选取刚刚小于、等于或刚刚大于边界值的取值作为测试数据。因果图法是一种形式化的图形语言,借助图形着重分析输入条件的各种组合,每种组合条件就是“因”,它必然产生一个输出的结果,这就是“果”。判定表方法是一种组合分析方法,描述多种条件的组合,相应地产生多个动作。错误推测法是测试人员根据工作经验和直觉推测出程序可能存在的错误,从而有针对性地进行测试。
目前,黑盒测试主要依据需求文档进行,但基于需求规格说明文档的黑盒测试存在如下问题:(1)以手工测试为主,测试滞后且难以理解,(2)测试用例很难实现重用,导致重复劳动,测试效率低下;(3)对测试人员的依赖性很大,而测试人员很难设计出较为复杂的测试用例,无法保证测试用例的质量;
发明内容
本发明的目的是提出一种基于静态模型的嵌入式软件黑盒测试用例生成方法,以解决针对现有的基于需求规格说明文档的黑盒测试存在测试滞后且难以理解、测试效率低、无法保证测试用例的质量的问题。
本发明为解决上述技术问题所采用的技术方案是:
本发明所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,是按照以下步骤实现的:
步骤一、采用数据流图、故障树、因果图、判定表、图形间的嵌套机制和图形的扩充语义构建嵌入式软件的静态模型;
步骤二、对步骤一构建的嵌入式软件的静态模型进行校验,并根据测试目的人工规划测试项,然后自动对测试项进行补全和合法性判定,最后填写测试项的名称;
所述的测试项的补全采用图的经典遍历算法实现,以实现测试项的内部连通;
所述的测试项的合法性判定为:数据流图的无意义图元包括“与关系节点”、“或关系节点”和“异或关系节点”,故障树的无意义图元包括“连线”、“与门”和“或门”,因果图的无意义图元包括“连线”。若测试项全由上述无意义的图元组成,则将被判定为非法;
步骤三、根据测试覆盖准则和测试用例生成算法自动生成测试项对应的黑盒测试用例集合,并将测试项和测试用例集合入库保存,其中每种测试项都有相应的测试用例生成算法;
所述的测试项分为数据流图测试项、故障树测试项、因果图测试项、判定表测试项、时间域测试项和接口测试项;
所述的测试覆盖准则包括数据流图的测试路径覆盖准则、故障树的最小割集覆盖准则、判定表的条件元动作元组合覆盖准则、时间域覆盖准则、时间耦合区间覆盖准则、接口的属性覆盖准则。
步骤四、对测试项和测试用例集合进行管理,包括添加、删除、修改和查看操作,以完善测试用例集合的生成。
本发明的有益效果如下:
(1)本发明能在嵌入式软件生命周期的早期介入并发现更多的错误,不存在测试滞后的问题,因为在创建嵌入式软件的静态测试模型时,测试设计者会发现原始软件需求或***模型中的一些不一致或不完备信息;
(2)本发明模型可以重用,根据模型生成的测试用例也可以重用,这样可以减少重复劳动,并提高测试效率;
(3)本发明能很容易地实现静态的测试需求追踪,因为静态的测试需求存在于静态模型之中,而静态模型具有很强的可溯性,这有利于提高测试的效率;
(4)本发明能够及时响应嵌入式软件的需求变化,更好地对测试用例进行维护,因为测试模型变化后可以重新生成测试用例,提高了测试效率;
(5)本发明能自动地从形式化模型中根据覆盖准则生成较为复杂的测试用例集合,比传统的测试用例更能发现代码缺陷,保证了测试用例的质量;
(6)本发明能方便地完成不同粒度的测试,因为模型可以具有不同的抽象层次,这使得测试更具有针对性,有利于提高测试的质量;
(7)本发明的测试设计和测试用例的生成比较形象直观,不仅保证了测试用例设计的有效性,也保证了再现性和可理解性;
(8)与基于需求规格说明文档的黑盒测试相比,本发明提出的基于静态模型的嵌入式软件黑盒测试用例生成方法能自动生成更高测试需求覆盖率的测试用例,而且测试效率提高了30%左右。
附图说明
图1为本发明的基于模型的测试的自动化测试框架图;
图2为本发明的流程图;
图3为本发明的静态图形间的关系图;
图4为本发明实施例的数据流图使用示例——自动售货机***的第一层数据流图;
图5为本发明实施例的故障树使用示例——“检查硬币”数据加工节点嵌套的故障树;
图6为本发明实施例的判定表使用示例——“检查硬币”数据加工节点嵌套的判定表。
具体实施方式
以下结合附图对本发明作进一步的详细说明:
如图1所示,本发明处于MBT的自动化测试框架之下,过程从构建SUT测试模型到生成测试用例集合为止,主要侧重嵌入式软件静态特性的描述。MBT自动化测试框架分为“三个层次、一个过程”——测试模型层、测试用例层、物理存储层和测试跟踪与管理过程。测试模型层的核心任务是构建SUT测试模型。测试用例层的核心任务是产生测试项集合、测试用例集合和测试脚本集合。物理存储层的核心任务是为测试模型层和测试用例层的元素提供物理存储服务,包括SUT测试模型、测试项集合、测试用例集合和测试文档集合的物理存储。测试跟踪与管理过程的核心任务是跟踪和管理测试过程,包括测试项与测试用例的追踪、测试模型的变更对测试项和测试用例的影响、测试项的变更对测试用例的影响等。
具体实施方式一:结合图2、图3说明本实施方式,本实施方式包括以下步骤:
步骤一、熟悉被测软件后,使用结构化分析方法,采用数据流图、故障树、因果图、判定表、图形间的嵌套机制和图形的扩充语义构建嵌入式软件的静态模型,以描述嵌入式软件的静态测试需求;
步骤二、对步骤一构建的嵌入式软件的静态模型进行校验,并根据测试目的人工规划测试项,然后自动对测试项进行补全和合法性判定,最后填写测试项的名称;
所述的测试项的补全以达到“测试项的内部连通”为目标,采用图的经典遍历算法实现,最终生成完整的测试项。
所述的测试项的合法性判定为要求完整的测试项中必须存在有意义的图元。数据流图的无意义图元包括“与关系节点”、“或关系节点”和“异或关系节点”,故障树的无意义图元包括“连线”、“与门”和“或门”,因果图的无意义图元包括“连线”。若测试项全由上述无意义的图元组成,则将被判定为非法。例如,在数据流图中,虽然测试项中包含若干节点和数据流,并且是连通的,但如果这些节点全部都是像与、或、异或等与具体功能无关的节点,那么这个测试项将被判定为不合法,测试项规划失败。
步骤三、根据测试覆盖准则和测试用例生成算法自动生成测试项对应的黑盒测试用例集合,并将测试项和测试用例集合入库保存,其中每种测试项都有相应的测试用例生成算法;
所述的测试项解决的是“测什么”的问题,是测试点的体现,在静态图形模型中具体表现为由一个或多个图形元素组成的图元集合,分为数据流图测试项、故障树测试项、因果图测试项、判定表测试项、时间域测试项和接口测试项。每种测试项都有相应的测试用例生成算法。
所述的测试覆盖准则包括数据流图的测试路径覆盖准则、故障树的最小割集覆盖准则、判定表的条件元动作元组合覆盖准则、时间域覆盖准则、时间耦合区间覆盖准则、接口的属性覆盖准则。
步骤四、对测试项和测试用例集合进行管理,包括添加、删除、修改和查看操作,以完善测试用例集合的生成。
本实施方式的有益效果如下:
(1)本发明能在嵌入式软件生命周期的早期介入并发现更多的错误,不存在测试滞后的问题,因为在创建嵌入式软件的静态测试模型时,测试设计者会发现原始软件需求或***模型中的一些不一致或不完备信息;
(2)本发明模型可以重用,根据模型生成的测试用例也可以重用,这样可以减少重复劳动,并提高测试效率;
(3)本发明能很容易地实现静态的测试需求追踪,因为静态的测试需求存在于静态模型之中,而静态模型具有很强的可溯性,这有利于提高测试的效率;
(4)本发明能够及时响应嵌入式软件的需求变化,更好地对测试用例进行维护,因为测试模型变化后可以重新生成测试用例,提高了测试效率;
(5)本发明能自动地从形式化模型中根据覆盖准则生成较为复杂的测试用例集合,比传统的测试用例更能发现代码缺陷,保证了测试用例的质量;
(6)本发明能方便地完成不同粒度的测试,因为模型可以具有不同的抽象层次,这使得测试更具有针对性,有利于提高测试的质量;
(7)本发明的测试设计和测试用例的生成比较形象直观,不仅保证了测试用例设计的有效性,也保证了再现性和可理解性;
(8)与基于需求规格说明文档的黑盒测试相比,本发明提出的基于静态模型的嵌入式软件黑盒测试用例生成方法能自动生成更高测试需求覆盖率的测试用例,而且测试效率提高了30%左右。
具体实施方式二:结合图2、图3说明本实施方式,本实施方式与具体实施方式一不同的是:
步骤一所述的结构化方法是嵌入式软件进行需求分析和设计的常用方法,数据流图是嵌入式软件需求分析与总体设计阶段的产物,故障树、因果图和判定表是传统黑盒测试设计的常用手段。
图形间的嵌套机制如图3所示,带箭头的连接线表示图形间的嵌套关系(起点是父图,终点是子图),包括:
(1)数据流图分层构建,具体为数据流图的数据加工嵌套子数据流图;
(2)数据流图的数据加工嵌套故障树、因果图和判定表;
(3)故障树的底事件嵌套子故障树。
具体实施方式三:结合图2、图3说明本实施方式,本实施方式与具体实施方式一或二不同的是:步骤一所述的图形的扩充语义包括:
(1)为数据流图的图元添加了测试语义,包括数据加工添加了反算程序、时间域、硬件和中断属性;
(2)为故障树的图元添加了测试语义,包括底事件添加了CMP属性(该属性量化地描述了底事件的发生);
(3)为判定表添加了测试语义,包括根据逻辑表达式自动生成判定表、添加判定表的前置条件。
具体实施方式四:结合图2、图3说明本实施方式,本实施方式与具体实施方式一至三之一不同的是:步骤二所述的校验需要满足的条件如下:
(1)针对数据加工,数据流图要求数据守恒;
(2)针对数据流图的分层机制,数据流图要求父子图平衡;
(3)故障树的事件约束,包括一棵故障树只有一个顶事件,底事件必须使用CMP属性量化描述;
(4)因果图的要因约束,包括一个因果图只有一个主要因;
(5)判定表的条件元动作元组合约束,包括一个规则项的条件元和动作元均非空。
具体实施方式五:结合图2、图3说明本实施方式,本实施方式与具体实施方式一至四之一不同的是:步骤三中根据测试覆盖准则和测试用例生成算法自动生成数据流图测试项对应的黑盒测试用例集合具体为:
嵌入式软件的静态图形模型采用XML文档的形式进行存储,测试项和测试用例集合采用数据库的形式进行存储。
数据流图测试项生成测试用例的过程是:先求出合法完整测试项的所有测试路径集合,再按测试路径集合化简规则对每个测试路径集合进行化简以求得所有简单测试路径,最后依据每条简单测试路径生成测试用例集合。其中,测试路径集合指的是从一个节点到另一个节点的所有可达路径,简单测试路径指的是从一个节点到另一个节点的一条可达路径。数据流图的使用示例如图4所示。
设m、n是数据流图中的两个节点,测试路径集合化简规则如下:(1)若从m到n存在一个数据流t=(m,n),则数据流t是一条路径;(2)若a,b都是一条路径,且tail(a)=head(b),则(a,b)也是一条路径,(a,b)路径的执行需要依次执行a和b;(3)若a,b都是一条路径,且tail(a)=tail(b)或head(a)=head(b),则(a and b)也是一条路径,(a and b)路径的执行需要同时执行a和b;(4)若a,b都是一条路径,且tail(a)=tail(b)或head(a)=head(b),则(a or b)代表两条路径,(a or b)路径的执行需要分别执行a和b;(5)若a,b都是一条路径,且tail(a)=tail(b)或head(a)=head(b),则(a xor b)代表两条路径,(a xor b)路径的执行需要执行a和b之一。
输入:数据流图DFD,合法完整的数据流图测试项I1
输出:数据流图测试项的测试用例集合T1
算法过程:
1)在合法完整的测试项I1中基于测试路径覆盖准则遍历求出所有测试路径集合W1;
2)令简单测试路径集合U1为空集,数据流图测试项的测试用例集合T1为空集;
3)逐个遍历所有测试路径集合W1,设当前的测试路径集合为W1[i];
4)按测试路径集合化简规则对当前的测试路径集合W1[i]进行化简,得到该测试路径集合中的所有简单测试路径S1;
5)将S1加入简单测试路径集合U1中,回到步骤3)继续遍历直到所有测试路径集合W1都已经被化简过为止;
6)逐个遍历简单测试路径集合U1,设当前的简单测试路径为U1[j];
7)根据当前的简单测试路径U1[j]的考核点(数据流的有效等价类和无效等价类、数据加工功能的正确性)生成U1[j]的测试用例集合M1;
8)将M1加入测试用例集合T1中,回到步骤6)继续遍历直到简单测试路径集合U1中的简单测试路径都生成过测试用例集合为止;
9)返回数据流图测试项的测试用例集合T1。
具体实施方式六:结合图2、图3说明本实施方式,本实施方式与具体实施方式一至五之一不同的是:步骤三中根据测试覆盖准则和测试用例生成算法自动生成故障树测试项对应的黑盒测试用例集合具体为:
步骤三所述的故障树测试项生成测试用例的过程是:先根据求最小割集算法求出故障树的最小割集,然后依据最小割集构造测试用例集合,最后考虑根据底事件的CMP属性生成测试用例。故障树的使用示例如图5所示。
输入:故障树FTA,合法完整的故障树测试项I2
输出:故障树测试项的测试用例集合T2
算法过程:
1)在合法完整的测试项I2中,采用最小割集算法求出故障树的所有最小割集W2,以便基于最小割集覆盖准则生成测试用例集合;
2)令故障树测试项的测试用例集合T2为空集;
3)逐个遍历所有最小割集W2,设当前的最小割集为W2[i];
4)根据当前的最小割集W2[i]的考核点(W2[i]中的故障事件是否发生)生成W2[i]的测试用例集合M2;
5)将M2加入故障树测试项的测试用例集合T2中,回到步骤3)直到所有最小割集W2都生成过测试用例集合为止;
6)逐个遍历合法完整的故障树测试项I2中的图元,设当前的图元为I2[j];
7)如果I2[j]是底事件,那么根据底事件I2[j]的CMP属性生成I2[j]的测试用例集合M3;8)将M3加入故障树测试项的测试用例集合T2中,回到步骤6)直到合法完整的故障树测试项I2中的图元都被遍历过为止;
9)返回故障树测试项的测试用例集合T2。
具体实施方式七:结合图2、图3说明本实施方式,本实施方式与具体实施方式一至六之一不同的是:步骤三中根据测试覆盖准则和测试用例生成算法自动生成因果图测试项对应的黑盒测试用例集合具体为:
步骤三所述的因果图测试项生成测试用例的过程与故障树测试项生成测试用例的过程类似,即逐一考虑底层要因的逻辑组合,然后生成相应的测试用例集合。
输入:因果图CD,合法完整的因果图测试项I3
输出:因果图测试项的测试用例集合T3
算法过程:
1)在合法完整的测试项I3中,遍历求出I3的所有底层要因W3;
2)令因果图测试项的测试用例集合T3为空集;
3)逐个遍历所有底层要因W3,设当前的底层要因为W3[i];
4)根据底层要因W3[i]的考核点(底层要因是否发生)生成W3[i]的测试用例集合M4;
5)将M4加入因果图测试项的测试用例集合T3,回到步骤3)直到所有底层要因W3都生成过测试用例集合为止;
6)返回因果图测试项的测试用例集合T3。
具体实施方式八:结合图2、图3说明本实施方式,本实施方式与具体实施方式一至七之一不同的是:步骤三中根据测试覆盖准则和测试用例生成算法自动生成判定表测试项对应的黑盒测试用例集合具体为:
步骤三所述的判定表测试项生成测试用例的过程比较直接,即将判定表的条件元组合作为测试用例的输入,将判定表的动作元作为测试用例的预期输出。判定表的使用示例如图6所示。
输入:判定表DT
输出:判定表测试项的测试用例集合T4
算法过程:
1)求出判定表DT的所有条件元动作元组合W4,以便基于条件元动作元覆盖准则生成测试用例集合;
2)令判定表测试项的测试用例集合T4为空集;
3)逐个遍历所有条件元动作元组合W4,设当前的条件元动作元组合为W4[i];
4)将W4[i]组织为一个测试用例M5,条件元组合作为测试输入,动作元为测试预期输出;
5)将M5加入判定表测试项的测试用例集合T4,返回步骤3)直到所有条件元动作元组合W4都生成过测试用例为止;
6)返回判定表测试项的测试用例集合T4。
具体实施方式九:结合图2、图3说明本实施方式,本实施方式与具体实施方式一至八之一不同的是:步骤三中根据测试覆盖准则和测试用例生成算法自动生成时间域测试项对应的黑盒测试用例集合具体为:
步骤三所述的时间域测试项分为“数据加工时间域测试项”和“时间耦合区间功能测试项”。
数据加工时间域测试项生成对应的黑盒测试用例集合具体为:先获取数据加工的时间域(可能存在一个或多个),然后依据边界测试方法生成测试用例集合。
输入:数据流图DFD,合法完整的数据流图测试项I4
输出:数据加工时间域测试项的测试用例集合T5
算法过程:
1)在合法完整的测试项I4中遍历求出所有时间域属性非空的数据加工W5;
2)令数据加工时间域测试项的测试用例集合T5为空集;
3)逐个遍历所有时间域属性非空的数据加工W5,设当前的数据加工为W5[i];
4)逐个遍历当前的数据加工W5[i]的时间域列表TDL,设当前的时间域为TDL[j];
5)基于时间域覆盖准则,根据当前的数据加工W5[i]的时间域TDL[j]生成W[i]的测试用例集合M6;
6)将M6加入数据加工时间域测试项的测试用例集合T5中,回到步骤4)直到W5[i]的时间域列表都生成过测试用例集合为止;
7)回到步骤3)直到W5中的数据加工都被遍历过为止;
8)返回数据加工时间域测试项的测试用例集合T5;
时间耦合区间功能测试项生成对应的黑盒测试用例集合具体为:
先求出所有重合时间域(每个重合时间域对应一个测试项),然后根据“数据加工的时间域真包含重合时间域”的规则找出应该在重合时间域内进行集体测试的数据加工,最后依据边界测试方法生成测试用例集合。
输入:数据流图DFD,合法完整的数据流图测试项I5
输出:时间耦合区间功能测试项的测试用例集合T6
算法过程:
1)在合法完整的测试项I5中遍历求出所有时间域属性非空的数据加工W6;
2)在W6中求出所有重叠的时间域S2并记录包含重叠时间域的数据加工;
3)令时间耦合区间功能测试项的测试用例集合T6为空集;
4)逐个遍历所有重叠的时间域S2,设当前的重叠时间域为S2[i];
5)基于时间耦合区间覆盖准则,根据重叠时间域S2[i]生成多数据加工在S2[i]的测试用例集合M7;
6)将M7加入时间耦合区间功能测试项的测试用例集合T6中,回到步骤4)直到所有重叠的时间域S2都生成过测试用例集合为止;
7)返回时间耦合区间功能测试项的测试用例集合T6。
具体实施方式十:结合图2、图3说明本实施方式,本实施方式与具体实施方式一至九之一不同的是:所述步骤三中根据测试覆盖准则和测试用例生成算法自动生成接口测试项对应的黑盒测试用例集合具体为:
步骤三所述的接口测试项生成测试用例生成的过程是:主要采用等价类划分和边界值分析考虑接口的属性,至少包括有效等价类和无效等价类两种。
输入:接口属性集合H
输出:接口测试项的测试用例集合T7
算法过程:
1)令接口测试项的测试用例集合T7为空集;
2)基于接口属性覆盖准则,生成正常测试用例M8,即H属性全部采用正常值;
3)将M8加入接口测试项的测试用例集合T7中;
4)逐个遍历接口属性集合H,设当前的接口属性为H[i];
5)基于接口属性覆盖准则,将属性H[i]设为失效,其余接口属性设为正常,生成测试用例M8;
6)将M8加入接口测试项的测试用例集合T7中,回到步骤4)直到接口属性集合H中的属性都被设为失效生成过测试用例为止;
7)返回接口测试项的测试用例集合T7。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,根据本发明的技术方案及其发明构思加以等同替换或改变,都应涵盖在本发明的保护范围之内。
针对基于需求规格说明文档的黑盒测试存在的问题,本发明采用形式化方法对嵌入式软件的静态测试需求进行形式化描述,构建由数据流图、故障树、因果图和判定表组成的嵌入式软件静态模型,手动规划测试项,根据测试覆盖准则和测试项的测试用例生成算法自动生成相应的测试用例集合,从而帮助嵌入式软件的黑盒测试快速高效地完成。
本发明在深入了解被测软件后,使用结构化分析方法,采用数据流图、故障树、因果图和判定表以及图形间的嵌套机制和图形的扩充语义构建嵌入式软件的静态模型来描述嵌入式软件的静态测试需求,然后手动规划测试项,最后根据测试覆盖准则和测试用例生成算法自动生成测试用例集合。
实施例:
为便于理解各种测试项的测试用例生成过程,下面以自动售货机***为例绘制各种静态图形。
自动售货机***是一种无人售货***。售货时,顾客把硬币投入机器的投币口中,机器检查硬币的大小、重量、厚度及边缘类型。有效的硬币是硬币的大小、重量、厚度及边缘类型均符合要求的硬币,其他硬币被认为是***。机器拒绝接受***,并将其从退币孔退出。当机器接受了有效的硬币之后,把硬币送入硬币储藏器中,顾客支付的货币根据硬币的面值进行累加。自动售货机装有货物分配器,每个货物分配器中包含零个或多个价格相同的货物,顾客通过选择货物分配器来选择货物及其数量。如果货物分配器中有足够的货物,而且顾客支付的货币值不小于所需货物的价格,货物将被分配到货物传送孔送给顾客,并将适当的零钱返还到退币孔。如果分配器没有足够的货物,则和顾客支付的货币值相等的硬币将被送回到退币孔。如果顾客支付的货币值少于所需货物的价格,机器将等待顾客投进更多的货币。如果顾客决定不买所选择的货物,他投放进的货币将从退币孔中退出。自动售货机***要求退***和退币操作必须在5s内完成。数据流图使用示例如图4所示,故障树使用示例如图5所示,判定表使用示例如图6所示。
Claims (10)
1.一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于所述方法包括以下步骤:
步骤一、采用数据流图、故障树、因果图、判定表、图形间的嵌套机制和图形的扩充语义构建嵌入式软件的静态模型;
步骤二、对步骤一构建的嵌入式软件的静态模型进行校验,并根据测试目的人工规划测试项,然后自动对测试项进行补全和合法性判定,最后填写测试项的名称;
所述的测试项的补全采用图的经典遍历算法实现;
所述的测试项的合法性判定为:数据流图的无意义图元包括“与关系节点”、“或关系节点”和“异或关系节点”,故障树的无意义图元包括“连线”、“与门”和“或门”,因果图的无意义图元包括“连线”,若测试项全由上述无意义的图元组成,则将被判定为非法;
步骤三、根据测试覆盖准则和测试用例生成算法自动生成测试项对应的黑盒测试用例集合,并将测试项和测试用例集合入库保存,其中每种测试项都有相应的测试用例生成算法;
所述的测试项分为数据流图测试项、故障树测试项、因果图测试项、判定表测试项、时间域测试项和接口测试项;
所述的测试覆盖准则包括数据流图的测试路径覆盖准则、故障树的最小割集覆盖准则、判定表的条件元动作元组合覆盖准则、时间域覆盖准则、时间耦合区间覆盖准则、接口的属性覆盖准则;
步骤四、对测试项和测试用例集合进行管理,包括添加、删除、修改和查看操作,以完善测试用例集合的生成。
2.根据权利要求1所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于步骤一所述的图形间的嵌套机制包括:
(1)数据流图分层构建,具体为数据流图的数据加工嵌套子数据流图;
(2)数据流图的数据加工嵌套故障树、因果图和判定表;
(3)故障树的底事件嵌套子故障树。
3.根据权利要求2所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于步骤一所述的图形的扩充语义包括:
(1)为数据流图的图元添加了测试语义,包括数据加工添加了反算程序、时间域、硬件和中断属性;
(2)为故障树的图元添加了测试语义,包括底事件添加了CMP属性;
(3)为判定表添加了测试语义,包括根据逻辑表达式自动生成判定表、添加判定表的前置条件。
4.根据权利要求3所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于步骤二所述的校验需要满足的条件如下:
(1)针对数据加工,数据流图要求数据守恒;
(2)针对数据流图的分层机制,数据流图要求父子图平衡;
(3)故障树的事件约束,包括一棵故障树只有一个顶事件,底事件必须使用CMP属性量化描述;
(4)因果图的要因约束,包括一个因果图只有一个主要因;
(5)判定表的条件元动作元组合约束,包括一个规则项的条件元和动作元均非空。
5.根据权利要求4所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于所述步骤三中根据测试覆盖准则和测试用例生成算法自动生成数据流图测试项对应的黑盒测试用例集合具体为:
算法过程:
1)在合法完整的测试项I1中基于测试路径覆盖准则遍历求出所有测试路径集合W1;
2)令简单测试路径集合U1为空集,数据流图测试项的测试用例集合T1为空集;
3)逐个遍历所有测试路径集合W1,设当前的测试路径集合为W1[i];
4)按测试路径集合化简规则对当前的测试路径集合W1[i]进行化简,得到该测试路径集合中的所有简单测试路径S1;
5)将S1加入简单测试路径集合U1中,回到步骤3)继续遍历直到所有测试路径集合W1都已经被化简过为止;
6)逐个遍历简单测试路径集合U1,设当前的简单测试路径为U1[j];
7)根据当前的简单测试路径U1[j]的考核点生成U1[j]的测试用例集合M1;
8)将M1加入测试用例集合T1中,回到步骤6)继续遍历直到简单测试路径集合U1中的简单测试路径都生成过测试用例集合为止;
9)返回数据流图测试项的测试用例集合T1。
6.根据权利要求5所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于所述步骤三中根据测试覆盖准则和测试用例生成算法自动生成故障树测试项对应的黑盒测试用例集合具体为:
算法过程:
1)在合法完整的测试项I2中,采用最小割集算法求出故障树的所有最小割集W2,以便基于最小割集覆盖准则生成测试用例集合;
2)令故障树测试项的测试用例集合T2为空集;
3)逐个遍历所有最小割集W2,设当前的最小割集为W2[i];
4)根据当前的最小割集W2[i]的考核点生成W2[i]的测试用例集合M2;
5)将M2加入故障树测试项的测试用例集合T2中,回到步骤3)直到所有最小割集W2都生成过测试用例集合为止;
6)逐个遍历合法完整的故障树测试项I2中的图元,设当前的图元为I2[j];
7)如果I2[j]是底事件,那么根据底事件I2[j]的CMP属性生成I2[j]的测试用例集合M3;
8)将M3加入故障树测试项的测试用例集合T2中,回到步骤6)直到合法完整的故障树测试项I2中的图元都被遍历过为止;
9)返回故障树测试项的测试用例集合T2。
7.根据权利要求6所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于所述步骤三中根据测试覆盖准则和测试用例生成算法自动生成因果图测试项对应的黑盒测试用例集合具体为:
算法过程:
1)在合法完整的测试项I3中,遍历求出I3的所有底层要因W3;
2)令因果图测试项的测试用例集合T3为空集;
3)逐个遍历所有底层要因W3,设当前的底层要因为W3[i];
4)根据底层要因W3[i]的考核点生成W3[i]的测试用例集合M4;
5)将M4加入因果图测试项的测试用例集合T3,回到步骤3)直到所有底层要因W3都生成过测试用例集合为止;
6)返回因果图测试项的测试用例集合T3。
8.根据权利要求7所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于所述步骤三中根据测试覆盖准则和测试用例生成算法自动生成判定表测试项对应的黑盒测试用例集合具体为:
算法过程:
1)求出判定表DT的所有条件元动作元组合W4,以便基于条件元动作元覆盖准则生成测试用例集合;
2)令判定表测试项的测试用例集合T4为空集;
3)逐个遍历所有条件元动作元组合W4,设当前的条件元动作元组合为W4[i];
4)将W4[i]组织为一个测试用例M5,条件元组合作为测试输入,动作元为测试预期输出;
5)将M5加入判定表测试项的测试用例集合T4,返回步骤3)直到所有条件元动作元组合W4都生成过测试用例为止;
6)返回判定表测试项的测试用例集合T4。
9.根据权利要求8所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于所述步骤三中根据测试覆盖准则和测试用例生成算法自动生成时间域测试项对应的黑盒测试用例集合具体为:
步骤三所述的时间域测试项分为“数据加工时间域测试项”和“时间耦合区间功能测试项”,数据加工时间域测试项生成对应的黑盒测试用例集合具体为:
算法过程:
1)在合法完整的测试项I4中遍历求出所有时间域属性非空的数据加工W5;
2)令数据加工时间域测试项的测试用例集合T5为空集;
3)逐个遍历所有时间域属性非空的数据加工W5,设当前的数据加工为W5[i];
4)逐个遍历当前的数据加工W5[i]的时间域列表TDL,设当前的时间域为TDL[j];
5)基于时间域覆盖准则,根据当前的数据加工W5[i]的时间域TDL[j]生成W[i]的测试用例集合M6;
6)将M6加入数据加工时间域测试项的测试用例集合T5中,回到步骤4)直到W5[i]的时间域列表都生成过测试用例集合为止;
7)回到步骤3)直到W5中的数据加工都被遍历过为止;
8)返回数据加工时间域测试项的测试用例集合T5;
时间耦合区间功能测试项生成对应的黑盒测试用例集合具体为:
算法过程:
1)在合法完整的测试项I5中遍历求出所有时间域属性非空的数据加工W6;
2)在W6中求出所有重叠的时间域S2并记录包含重叠时间域的数据加工;
3)令时间耦合区间功能测试项的测试用例集合T6为空集;
4)逐个遍历所有重叠的时间域S2,设当前的重叠时间域为S2[i];
5)基于时间耦合区间覆盖准则,根据重叠时间域S2[i]生成多数据加工在S2[i]的测试用例集合M7;
6)将M7加入时间耦合区间功能测试项的测试用例集合T6中,回到步骤4)直到所有重叠的时间域S2都生成过测试用例集合为止;
7)返回时间耦合区间功能测试项的测试用例集合T6。
10.根据权利要求9所述的一种基于静态模型的嵌入式软件黑盒测试用例生成方法,其特征在于所述步骤三中根据测试覆盖准则和测试用例生成算法自动生成接口测试项对应的黑盒测试用例集合具体为:
算法过程:
1)令接口测试项的测试用例集合T7为空集;
2)基于接口属性覆盖准则,生成正常测试用例M8,即H属性全部采用正常值;
3)将M8加入接口测试项的测试用例集合T7中;
4)逐个遍历接口属性集合H,设当前的接口属性为H[i];
5)基于接口属性覆盖准则,将属性H[i]设为失效,其余接口属性设为正常,生成测试用例M8;
6)将M8加入接口测试项的测试用例集合T7中,回到步骤4)直到接口属性集合H中的属性都被设为失效生成过测试用例为止;
7)返回接口测试项的测试用例集合T7。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410765285.8A CN104375943A (zh) | 2014-12-11 | 2014-12-11 | 一种基于静态模型的嵌入式软件黑盒测试用例生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410765285.8A CN104375943A (zh) | 2014-12-11 | 2014-12-11 | 一种基于静态模型的嵌入式软件黑盒测试用例生成方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104375943A true CN104375943A (zh) | 2015-02-25 |
Family
ID=52554878
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410765285.8A Pending CN104375943A (zh) | 2014-12-11 | 2014-12-11 | 一种基于静态模型的嵌入式软件黑盒测试用例生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104375943A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104835239A (zh) * | 2015-05-13 | 2015-08-12 | 昆山古鳌电子机械有限公司 | 一种硬币识别装置及其识别方法 |
CN104991863A (zh) * | 2015-07-14 | 2015-10-21 | 株洲南车时代电气股份有限公司 | 一种基于功能块图测试模型自动生成测试用例的方法 |
CN105718372A (zh) * | 2016-01-22 | 2016-06-29 | 珠海市精实测控技术有限公司 | 一种电控板黑盒测试用例生成及自动测试方法 |
CN107608895A (zh) * | 2017-09-22 | 2018-01-19 | 深圳航天科技创新研究院 | 基于静态模型的软件测试文档生成方法、***及存储介质 |
CN107783901A (zh) * | 2017-09-26 | 2018-03-09 | 深圳市牛鼎丰科技有限公司 | 测试用例生成方法、装置、计算机设备及存储介质 |
CN107832225A (zh) * | 2017-11-22 | 2018-03-23 | 中国航空工业集团公司西安飞机设计研究所 | 一种飞行管理软件测试用例设计方法 |
CN107844417A (zh) * | 2017-10-20 | 2018-03-27 | 东软集团股份有限公司 | 测试用例生成方法和装置 |
CN107885487A (zh) * | 2017-11-20 | 2018-04-06 | 广西师范大学 | 一种信息物理融合***的测试及需求满足性检验的方法 |
CN113238932A (zh) * | 2021-04-30 | 2021-08-10 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 测试用例自动生成方法 |
CN113419964A (zh) * | 2021-07-14 | 2021-09-21 | 上海浦东发展银行股份有限公司 | 一种测试案例生成方法、装置、计算机设备及存储介质 |
CN113419970A (zh) * | 2021-08-24 | 2021-09-21 | 卡斯柯信号(北京)有限公司 | 一种接口故障测试方法及装置 |
CN113806232A (zh) * | 2021-10-08 | 2021-12-17 | 中国航空综合技术研究所 | 基于模型的嵌入式软件测试用例生成模型 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101331A1 (en) * | 2004-11-05 | 2006-05-11 | Institute For Information Industry | Methods and systems for automated test-case generation |
CN101521899A (zh) * | 2009-03-31 | 2009-09-02 | 大连海事大学 | 用于移动应用程序的机上测试***和方法 |
CN102087630A (zh) * | 2011-01-27 | 2011-06-08 | 中国人民解放军63928部队 | 一种从uml行为设计模型生成u2tp测试模型的方法 |
CN102419728A (zh) * | 2011-11-01 | 2012-04-18 | 北京邮电大学 | 基于覆盖率量化指标确定软件测试过程充分性的方法 |
CN102968368A (zh) * | 2012-08-30 | 2013-03-13 | 中国人民解放军63928部队 | 一种遍历场景状态图的嵌入式测试用例设计与生成方法 |
US20130159774A1 (en) * | 2011-12-19 | 2013-06-20 | Siemens Corporation | Dynamic reprioritization of test cases during test execution |
CN103530228A (zh) * | 2013-09-27 | 2014-01-22 | 西安电子科技大学 | 一种基于模型的软件测试方法 |
CN103729293A (zh) * | 2013-12-30 | 2014-04-16 | 华东师范大学 | 一种基于uml活动图的gui测试方法 |
-
2014
- 2014-12-11 CN CN201410765285.8A patent/CN104375943A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060101331A1 (en) * | 2004-11-05 | 2006-05-11 | Institute For Information Industry | Methods and systems for automated test-case generation |
CN101521899A (zh) * | 2009-03-31 | 2009-09-02 | 大连海事大学 | 用于移动应用程序的机上测试***和方法 |
CN102087630A (zh) * | 2011-01-27 | 2011-06-08 | 中国人民解放军63928部队 | 一种从uml行为设计模型生成u2tp测试模型的方法 |
CN102419728A (zh) * | 2011-11-01 | 2012-04-18 | 北京邮电大学 | 基于覆盖率量化指标确定软件测试过程充分性的方法 |
US20130159774A1 (en) * | 2011-12-19 | 2013-06-20 | Siemens Corporation | Dynamic reprioritization of test cases during test execution |
CN102968368A (zh) * | 2012-08-30 | 2013-03-13 | 中国人民解放军63928部队 | 一种遍历场景状态图的嵌入式测试用例设计与生成方法 |
CN103530228A (zh) * | 2013-09-27 | 2014-01-22 | 西安电子科技大学 | 一种基于模型的软件测试方法 |
CN103729293A (zh) * | 2013-12-30 | 2014-04-16 | 华东师范大学 | 一种基于uml活动图的gui测试方法 |
Non-Patent Citations (1)
Title |
---|
周景才: "基于模型驱动的测试用例自动生成技术研究", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104835239A (zh) * | 2015-05-13 | 2015-08-12 | 昆山古鳌电子机械有限公司 | 一种硬币识别装置及其识别方法 |
CN104991863A (zh) * | 2015-07-14 | 2015-10-21 | 株洲南车时代电气股份有限公司 | 一种基于功能块图测试模型自动生成测试用例的方法 |
CN105718372B (zh) * | 2016-01-22 | 2018-05-18 | 珠海市精实测控技术有限公司 | 一种电控板黑盒测试用例生成及自动测试方法 |
CN105718372A (zh) * | 2016-01-22 | 2016-06-29 | 珠海市精实测控技术有限公司 | 一种电控板黑盒测试用例生成及自动测试方法 |
CN107608895A (zh) * | 2017-09-22 | 2018-01-19 | 深圳航天科技创新研究院 | 基于静态模型的软件测试文档生成方法、***及存储介质 |
CN107783901A (zh) * | 2017-09-26 | 2018-03-09 | 深圳市牛鼎丰科技有限公司 | 测试用例生成方法、装置、计算机设备及存储介质 |
CN107783901B (zh) * | 2017-09-26 | 2020-05-12 | 深圳市牛鼎丰科技有限公司 | 测试用例生成方法、装置、计算机设备及存储介质 |
CN107844417A (zh) * | 2017-10-20 | 2018-03-27 | 东软集团股份有限公司 | 测试用例生成方法和装置 |
CN107844417B (zh) * | 2017-10-20 | 2020-06-16 | 东软集团股份有限公司 | 测试用例生成方法和装置 |
CN107885487A (zh) * | 2017-11-20 | 2018-04-06 | 广西师范大学 | 一种信息物理融合***的测试及需求满足性检验的方法 |
CN107832225A (zh) * | 2017-11-22 | 2018-03-23 | 中国航空工业集团公司西安飞机设计研究所 | 一种飞行管理软件测试用例设计方法 |
CN113238932A (zh) * | 2021-04-30 | 2021-08-10 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 测试用例自动生成方法 |
CN113238932B (zh) * | 2021-04-30 | 2024-03-19 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 测试用例自动生成方法 |
CN113419964A (zh) * | 2021-07-14 | 2021-09-21 | 上海浦东发展银行股份有限公司 | 一种测试案例生成方法、装置、计算机设备及存储介质 |
CN113419970A (zh) * | 2021-08-24 | 2021-09-21 | 卡斯柯信号(北京)有限公司 | 一种接口故障测试方法及装置 |
CN113806232A (zh) * | 2021-10-08 | 2021-12-17 | 中国航空综合技术研究所 | 基于模型的嵌入式软件测试用例生成模型 |
CN113806232B (zh) * | 2021-10-08 | 2023-05-09 | 中国航空综合技术研究所 | 基于模型的嵌入式软件测试用例生成模型 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104375943A (zh) | 一种基于静态模型的嵌入式软件黑盒测试用例生成方法 | |
CN104461887A (zh) | 一种基于动态模型的嵌入式软件黑盒测试用例生成方法 | |
CN102341781B (zh) | 软件测试台生成 | |
CN106991183B (zh) | 一种商业智能etl的封装方法及*** | |
CN107844424B (zh) | 基于模型的测试***及方法 | |
CN102236672B (zh) | 一种数据导入方法及装置 | |
Măruşter et al. | Redesigning business processes: a methodology based on simulation and process mining techniques | |
CN108108297A (zh) | 自动化测试的方法和装置 | |
CN104866426A (zh) | 软件测试综合控制方法及*** | |
van der Aalst | Distributed process discovery and conformance checking | |
CN103646104A (zh) | 一种强实时故障诊断方法及*** | |
CN110362562A (zh) | 大数据抽取样本数据的方法及*** | |
CN109408360A (zh) | 一种软件可靠性评估方法和*** | |
CN105912461A (zh) | 一种软件敏捷测试方法及*** | |
CN105446952B (zh) | 用于处理语义片段的方法和*** | |
CN110083814A (zh) | 一种报表生成方法和装置、计算机可读存储介质 | |
CN107133020A (zh) | 一种数据处理方法、***、接口端及服务器 | |
CN106802797A (zh) | 一种应用程序编程接口的生成方法及装置 | |
CN111813739A (zh) | 数据迁移方法、装置、计算机设备及存储介质 | |
US20100161676A1 (en) | Lifecycle management and consistency checking of object models using application platform tools | |
CN114817022A (zh) | 铁路电子支付平台测试方法及***、设备和存储介质 | |
Ereth et al. | A Capability Approach for Designing Business Intelligence and Analytics Architectures. | |
Kolchin et al. | An approach to creating concretized test scenarios within test automation technology for industrial software projects | |
CN104239212B (zh) | 测试用例的查询方法及装置、测试用例的建立方法及装置 | |
Wieczorek et al. | Test data provision for ERP systems |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20150225 |