CN106547696A - 一种面向工作流系统的测试用例生成方法及装置 - Google Patents
一种面向工作流系统的测试用例生成方法及装置 Download PDFInfo
- Publication number
- CN106547696A CN106547696A CN201610957561.XA CN201610957561A CN106547696A CN 106547696 A CN106547696 A CN 106547696A CN 201610957561 A CN201610957561 A CN 201610957561A CN 106547696 A CN106547696 A CN 106547696A
- Authority
- CN
- China
- Prior art keywords
- node
- son
- type
- workflow
- branch
- 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
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明提供一种面向工作流系统的测试用例生成方法及装置,其中,所述方法包括:基于带输入输出约束的工作流系统,建立Petri网模型;根据分支‑聚合对,将所述Petri网模型划分为多个片段;若划分的片段中存在分支‑聚合对,继续对该片段进行划分,以得到所述Petri网模型对应的模型分解树;遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合;根据所述测试序列集合中每条测试序列包含的输入输出信息,生成测试用例。本发明提供的一种面向工作流系统的测试用例生成方法及装置,能够解决现有技术中测试技术针对性不强、工作流系统测试充分性低的问题,以提高系统的测试效率。
Description
技术领域
本发明涉及计算机技术领域,特别涉及一种面向工作流系统的测试用例生成方法及装置。
背景技术
工作流技术是近年来在国民经济领域广泛应用的一项计算机技术。尽管经过近30年的发展,工作流技术已经由最初的萌芽状态发展成为一个系统、复杂且成体系的研究领域,并取得了相当丰硕的研究成果,但从实际应用和对其测试的经验总结来看,其成熟度距离人们预期的目标还相去甚远,尤其在对其测试方法的研究方面,理论尚不健全,应用尚不广泛。总体来看,目前工作流测试方法研究中主要存在以下几个方面的问题:
(1)系统建模方法针对性不强,模型适用性低。当前对工作流建模技术的研究主要用于任务调度、性能分析、模型验证等方面,面向测试的建模技术研究很不充分,多数研究只给出了一个测试的大概框架,并未对面向测试的工作流建模技术进行具体、深入的研究。理想的工作流模型应当清晰、准确地表达系统中的各类要素。面向测试的工作流系统建模应综合考虑模型描述是否正确完整,能否依靠所建立的模型生成测试用例,甚至自动化执行测试等工作。虽然目前已有一些基于流程图、状态图等直观的建模方法,但由于其语义过于简单,无法表达系统中复杂的逻辑过程。
(2)测试用例设计缺乏理论指导,测试充分性低。自动化测试是所有测试人员的理想目标,工具的支持可大幅度提高测试效率。虽然目前已经有些工具可以对工作流模型进行正确性验证或性能分析,但测试仍然是对其进行质量保证最有效的手段。目前对工作流系统的测试主要以手工测试为主,仅有的一些工具的功能也较为单一,测试用例的设计主要依靠测试人员的经验,这使得测试覆盖面不广,充分性不高,测试不够充分。
发明内容
本发明的目的在于提供一种面向工作流系统的测试用例生成方法及装置,能够解决现有技术中测试技术针对性不强、工作流系统测试充分性低的问题,以提高系统的测试效率。
为实现上述目的,本发明提供一种面向工作流系统的测试用例生成方法,所述方法包括:基于带输入输出约束的工作流系统,建立Petri网模型;其中,所述工作流系统中包括工作流的活动集合、输入元素的集合、输出元素的集合、工作流中的关系集合、活动到输入元素的映射以及活动到输出元素的映射;所述Petri网模型中包括输入类库所和输出类库所的集合、工作流中的活动集合、映射集合以及初始网模型;根据分支-聚合对,将所述Petri网模型划分为多个片段;若划分的片段中存在分支-聚合对,继续对该片段进行划分,以得到所述Petri网模型对应的模型分解树;遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合;根据所述测试序列集合中每条测试序列包含的输入输出信息,生成测试用例。
进一步地,所述Petri网模型对应的模型分解树按照下述方式构建:步骤S11:将所述Petri网模型作为一个节点,并按照分支-聚合对将该节点分割为多个片段,其中,各个片段作为该节点的一个子节点;步骤S12:将各个子节点中类型为分支-聚合对的子节点进行处理,以将类型为分支-聚合对的子节点中各条流程作为该子节点的子节点;步骤S13:将分支-聚合对的每个子节点作为Petri网子模型,并对各个Petri网子模型按照步骤S11进行递归处理。
进一步地,遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合具体包括:步骤S21:将当前节点node表示成其所有子节点node.son的连接形式;步骤S22:如果node.son的类型为or,并且node.son还有n个子节点node.son.son,则将所有包含node.son的测试序列复制n次,并将每个复制后的序列中的node.son替换为node.son.son;步骤S23:如果node.son的类型为and,则将所有包含node.son的测试序列替换成所有node.son.son的并行形式;步骤S24:对node.son.son进行递归遍历,以对node.son.son的子节点按照步骤S21至S23进行处理。
进一步地,所述模型分解树中,分支节点的类型与聚合节点的类型一致。
进一步地,生成测试用例的步骤中具体包括:当所述模型分解树中的节点存在子节点时,判断该节点的类型;当该节点的类型为sequence时,将该节点替换为该节点的所有子节点连接的形式;当该节点的类型为or时,将该节点替换为该节点的子节点中的任一子节点;当该节点的类型为and时,将该节点替换为该节点的所有子节点的并行形式。
为实现上述目的,本申请另一方面还提供一种面向工作流系统的测试用例生成装置,所述装置包括:网模型建立单元,用于基于带输入输出约束的工作流系统,建立Petri网模型;其中,所述工作流系统中包括工作流的活动集合、输入元素的集合、输出元素的集合、工作流中的关系集合、活动到输入元素的映射以及活动到输出元素的映射;所述Petri网模型中包括输入类库所和输出类库所的集合、工作流中的活动集合、映射集合以及初始网模型;模型分解树构建单元,用于根据分支-聚合对,将所述Petri网模型划分为多个片段;若划分的片段中存在分支-聚合对,继续对该片段进行划分,以得到所述Petri网模型对应的模型分解树;测试序列集合生成单元,用于遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合;测试用例生成单元,用于根据所述测试序列集合中每条测试序列包含的输入输出信息,生成测试用例。
进一步地,所述网模型建立单元具体包括:片段分割模块,用于将所述Petri网模型作为一个节点,并按照分支-聚合对将该节点分割为多个片段,其中,各个片段作为该节点的一个子节点;节点处理模块,用于将各个子节点中类型为分支-聚合对的子节点进行处理,以将类型为分支-聚合对的子节点中各条流程作为该子节点的子节点;递归处理模块,用于将分支-聚合对的每个子节点作为Petri网子模型,并对各个Petri网子模型按照所述片段分割模块的执行步骤进行递归处理。
进一步地,所述测试序列集合生成单元具体包括:连接形式表示模块,用于将当前节点node表示成其所有子节点node.son的连接形式;第一类型判断模块,用于如果node.son的类型为or,并且node.son还有n个子节点node.son.son,则将所有包含node.son的测试序列复制n次,并将每个复制后的序列中的node.son替换为node.son.son;第二类型判断模块,用于如果node.son的类型为and,则将所有包含node.son的测试序列替换成所有node.son.son的并行形式;递归遍历模块,用于对node.son.son进行递归遍历,以对node.son.son的子节点按照所述连接形式表示模块、第一类型判断模块以及第二类型判断模块的执行步骤进行处理。
进一步地,所述测试用例生成单元具体包括:类型判断模块,用于当所述模型分解树中的节点存在子节点时,判断该节点的类型;第一处理模块,用于当该节点的类型为sequence时,将该节点替换为该节点的所有子节点连接的形式;第二处理模块,用于当该节点的类型为or时,将该节点替换为该节点的子节点中的任一子节点;第三处理模块,用于当该节点的类型为and时,将该节点替换为该节点的所有子节点的并行形式。
由上可见,本申请针对工作流系统的测试方法不足的问题,将工作流系统中的活动建模为Petri网中的迁移,将各活动的输入输出建模为Petri网的库所,对工作流系统的几种基本结构进行分析,提出一种将带输入输出工作流转化为Petri网模型的算法和模型的简化方法,从而解决了现有技术中测试技术针对性不强、工作流系统测试充分性低的问题,并且提高了系统的测试效率。
附图说明
图1是本申请中模型片段的示意图;
图2是本申请中树状结构的示意图;
图3是本申请中面向工作流系统的测试用例生成方法流程图;
图4是本申请中面向工作流系统的测试用例生成装置的功能模块图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施方式中的附图,对本申请实施方式中的技术方案进行清楚、完整地描述,显然,所描述的实施方式仅仅是本申请一部分实施方式,而不是全部的实施方式。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施方式,都应当属于本申请保护的范围。
请参阅图3,本申请提供一种面向工作流系统的测试用例生成方法,所述方法包括:
S1:基于带输入输出约束的工作流系统,建立Petri网模型;其中,所述工作流系统中包括工作流的活动集合、输入元素的集合、输出元素的集合、工作流中的关系集合、活动到输入元素的映射以及活动到输出元素的映射;所述Petri网模型中包括输入类库所和输出类库所的集合、工作流中的活动集合、映射集合以及初始网模型;
S2:根据分支-聚合对,将所述Petri网模型划分为多个片段;若划分的片段中存在分支-聚合对,继续对该片段进行划分,以得到所述Petri网模型对应的模型分解树;
S3:遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合;
S4:根据所述测试序列集合中每条测试序列包含的输入输出信息,生成测试用例。
具体地,在本实施方式中,六元组<Activity,Input,Output,Relation,fAI,fAO>可以表示带输入输出约束的工作流,其中:
Activity={activity1,activity2,L activityk}(k≥1)表示工作流的活动集合;
Input={input1,input2,L inputm}(m≥1)表示输入元素的集合;
Output={output1,output2,L outputn}(n≥1)表示输出元素的集合;
Relation={(f,Type)|f∈(Activity×Activity)}表示工作流中的关系集合,其中Type∈{sequence,and-join,or-join,and-split,or-split}表示工作流中前后两个活动的关系类型;
fAI:Activity→ρ(Input)表示工作流中某一活动到输入元素的映射,其中ρ(Input)表示输入元素的幂集;
fAO:Activity→ρ(Output)表示工作流中某一活动到输出元素的映射,其中ρ(Output)表示输出元素的幂集;
此外,∑=(P,T,F,M0)是一个带输入输出约束工作流的Petri网模型I/O_WF_Net,当且仅当满足如下条件:
(P,T,F,M0)是一个工作流网;
T表示工作流中的活动集合;
P=Pin∪Pout,其中Pin表示输入类库所,Pout表示输出类库所;
pin∈Pin,活动t的执行需要输入pin当且仅当
pout∈Pout,活动t的执行产生输出pout当且仅当
在上述定义的基础上,以下伪代码给出了将带输入输出约束的工作流网转化为I/O_WF_Net模型的具体方法和过程。
INPUT:Workflow=<Activity,Input,Output,Relation,fAI,fAO>
OUTPUT:∑=(P,T,F,M0)
begin
T←Activity
for i=1 to|T|do//第一步,单个活动建模
end for
tj∈T(1≤i,j≤|T|)if ti,tj∈Relation then//第二步,工作流关系建模
Swich Relation.Type
Case sequence://关系类型为sequence
T←T∪ti;j
Case and-join://关系类型为and-join
T←T∪ti;j
Else
End if
Case or-join://关系类型为or-join
T←T∪tij
Case and-split://关系类型为and-split
T←T∪ti;j
Else
End if
Case or-split//关系类型为or-split
T←T∪ti;j
End Swich
//start节点建模
P←P∪ps,T←T∪ts,F←F∪{(ps,ts)}
for each ti∈Ts do
//end节点建模
P←P∪pe,T←T∪te,F←F∪{(te,pe)}
for each ti∈Te do//初始标记
M0(ps)←1
Output∑=(P,T,F,M0)
end
在本实施方式中,对于I/O_WF_Net模型M中的节点P(或T),如果其后续节点不止一个,则该节点称为分支节点。
对于I/O_WF_Net模型M中的节点P(或T),如果其前置节点不止一个,则该节点称为聚合节点。
对于分支节点p1和聚合节点p2,如果由分支节点p1产生的所有流程分支在聚合节点p2重新聚合为一条流程,则节点p1、p2称为分支-聚合对,它们之间的部分称为由分支-聚点对p1、p2分割出来的工作流片段,工作流片段中的每条路径称为流程片段。模型中的分支-聚合对可能有以下几种情况需要注意:
(a)分支-聚合节点对中的分支节点和聚合节点的节点类型相同:如果分支节点与聚合节点的类型不同,可能有两种情况:一是分支节点为迁移类型,聚合节点为库所类型,此时产生的各流程片段可并行工作,如果其中任意流程运行到聚合节点处,由于聚合节点为库所类型,即or-join类型,则其后的迁移可立即执行,这可能造成整个工作流已经执行到end节点,而其中的某条流程未执行完成的情况,模型的设计不合理;二是分支节点为库所类型(or类型分支-聚合对),聚合节点为迁移类型,则各分支之间的关系为选择执行,即可能只有一条或几条分支执行到聚合节点处,由于聚合节点为迁移类型,即and-join类型,则其使能条件永远不可能被满足,工作流被停滞在聚合节点处无法继续执行,模型的设计不合理。综上分析,分支-聚合节点对中的分支节点和聚合节点的类型一定是相同的。对于由迁移节点引发的分支-聚合对称为and型分支-聚合对,由库所节点引发的称为or型分支-聚合对。
(b)分支-聚合对嵌套:考虑如图1所示的模型片段,其中节点p2、p4均为分支节点,但他们所对应的聚合节点只有一个p10。因此,对于某个节点而言,并不一定只属于同一分支-聚合对。图1所示的情况称为分支-聚合对嵌套,其中p4、p10组成的分支-聚合对为内层分支-聚合对,p2、p10为外层分支-聚合对。
(c)对循环的处理:考虑到工作流中可能出现的循环或某阶段工作不合格产生的返工现象,建模时将形成循环结构。对这种情况处理时,可以将其看成一组分支-聚合节点对,其中分支节点和聚合节点为同一节点,循环体为一条分支,其他分支为空。如果有明确的循环次数n,则生成用例时对该段循环体循环n次;如果没有明确的循环次数只是依条件跳转,则在生成用例时,对该段循环体循环一次。
有了分支-聚合对的概念,可以依照分支-聚合对将I/O_WF_Net模型整体分割成多个片段,如果分支流程中还有分支-聚合对,依照同样的方法递归地对其进行处理,这样将形成一个如图2所示的树状结构(称作I/O_WF_Net模型分解树)。
树中除叶子节点外,各节点均具有相应的类型:sequence表示该节点包含多个模型片段,且其中某个片段为分支-聚合对,需要对这些分支-聚合对进行进一步处理;or/and表示该节点是一个分支-聚合对,并且类型为or/and,其每个子节点均可被视为一个新的模型。生成测试用例时,只需对该生成树进行遍历,如果某节点有子节点,则根据节点类型分别处理:
(a)节点类型为sequence:说明该节点下方仍然有分支-聚合对,该节点可替换为其所有子节点连接的形式;
(b)节点类型为or:说明该分支-聚合对的类型为or,该节点可分别替换为其任意子节点;
(c)节点类型为and;说明该分支-聚合对的类型为and,该节点可替换为其所有子节点的并行形式。
在本实施方式中,I/O_WF_Net模型分解树的构造过程如下:
步骤S11:将所述Petri网模型作为一个节点,并按照分支-聚合对将该节点分割为多个片段,其中,各个片段作为该节点的一个子节点;
步骤S12:将各个子节点中类型为分支-聚合对的子节点进行处理,以将类型为分支-聚合对的子节点中各条流程作为该子节点的子节点;
步骤S13:将分支-聚合对的每个子节点作为Petri网子模型,并对各个Petri网子模型按照步骤S11进行递归处理。
在本实施方式中,模型分解树的构造过程可以通过以下伪代码实现:
在本实施方式中,遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合具体包括:
步骤S21:将当前节点node表示成其所有子节点node.son的连接形式;
步骤S22:如果node.son的类型为or,并且node.son还有n个子节点node.son.son,则将所有包含node.son的测试序列复制n次,并将每个复制后的序列中的node.son替换为node.son.son;
步骤S23:如果node.son的类型为and,则将所有包含node.son的测试序列替换成所有node.son.son的并行形式;
步骤S24:对node.son.son进行递归遍历,以对node.son.son的子节点按照步骤S21至S23进行处理。
相应的测试序列生成算法的伪代码可如下所示:
生成测试序列后,即可根据每条测试序列中包含的输入输出信息产生最终的测试用例,其生成算法的伪代码可以如下所示:
本申请还提供一种面向工作流系统的测试用例生成装置,请参阅图4,所述装置包括:
网模型建立单元100,用于基于带输入输出约束的工作流系统,建立Petri网模型;其中,所述工作流系统中包括工作流的活动集合、输入元素的集合、输出元素的集合、工作流中的关系集合、活动到输入元素的映射以及活动到输出元素的映射;所述Petri网模型中包括输入类库所和输出类库所的集合、工作流中的活动集合、映射集合以及初始网模型;
模型分解树构建单元200,用于根据分支-聚合对,将所述Petri网模型划分为多个片段;若划分的片段中存在分支-聚合对,继续对该片段进行划分,以得到所述Petri网模型对应的模型分解树;
测试序列集合生成单元300,用于遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合;
测试用例生成单元400,用于根据所述测试序列集合中每条测试序列包含的输入输出信息,生成测试用例。
在本申请一个实施方式中,所述网模型建立单元100具体包括:
片段分割模块,用于将所述Petri网模型作为一个节点,并按照分支-聚合对将该节点分割为多个片段,其中,各个片段作为该节点的一个子节点;
节点处理模块,用于将各个子节点中类型为分支-聚合对的子节点进行处理,以将类型为分支-聚合对的子节点中各条流程作为该子节点的子节点;
递归处理模块,用于将分支-聚合对的每个子节点作为Petri网子模型,并对各个Petri网子模型按照所述片段分割模块的执行步骤进行递归处理。
在本申请一个实施方式中,所述测试序列集合生成单元300具体包括:
连接形式表示模块,用于将当前节点node表示成其所有子节点node.son的连接形式;
第一类型判断模块,用于如果node.son的类型为or,并且node.son还有n个子节点node.son.son,则将所有包含node.son的测试序列复制n次,并将每个复制后的序列中的node.son替换为node.son.son;
第二类型判断模块,用于如果node.son的类型为and,则将所有包含node.son的测试序列替换成所有node.son.son的并行形式;
递归遍历模块,用于对node.son.son进行递归遍历,以对node.son.son的子节点按照所述连接形式表示模块、第一类型判断模块以及第二类型判断模块的执行步骤进行处理。
在本申请一个实施方式中,所述测试用例生成单元400具体包括:
类型判断模块,用于当所述模型分解树中的节点存在子节点时,判断该节点的类型;
第一处理模块,用于当该节点的类型为sequence时,将该节点替换为该节点的所有子节点连接的形式;
第二处理模块,用于当该节点的类型为or时,将该节点替换为该节点的子节点中的任一子节点;
第三处理模块,用于当该节点的类型为and时,将该节点替换为该节点的所有子节点的并行形式。
需要说明的是,上述各个功能模块的具体实现方式与步骤S1至S4中的描述一致,这里便不再赘述。
由上可见,本申请针对工作流系统的测试方法不足的问题,将工作流系统中的活动建模为Petri网中的迁移,将各活动的输入输出建模为Petri网的库所,对工作流系统的几种基本结构进行分析,提出一种将带输入输出工作流转化为Petri网模型的算法和模型的简化方法,从而解决了现有技术中测试技术针对性不强、工作流系统测试充分性低的问题,并且提高了系统的测试效率。
上面对本申请的各种实施方式的描述以描述的目的提供给本领域技术人员。其不旨在是穷举的、或者不旨在将本发明限制于单个公开的实施方式。如上所述,本申请的各种替代和变化对于上述技术所属领域技术人员而言将是显而易见的。因此,虽然已经具体讨论了一些另选的实施方式,但是其它实施方式将是显而易见的,或者本领域技术人员相对容易得出。本申请旨在包括在此已经讨论过的本发明的所有替代、修改、和变化,以及落在上述申请的精神和范围内的其它实施方式。
本说明书中的各个实施方式均采用递进的方式描述,各个实施方式之间相同相似的部分互相参见即可,每个实施方式重点说明的都是与其他实施方式的不同之处。
虽然通过实施方式描绘了本申请,本领域普通技术人员知道,本申请有许多变形和变化而不脱离本申请的精神,希望所附的权利要求包括这些变形和变化而不脱离本申请的精神。
Claims (9)
1.一种面向工作流系统的测试用例生成方法,其特征在于,所述方法包括:
基于带输入输出约束的工作流系统,建立Petri网模型;其中,所述工作流系统中包括工作流的活动集合、输入元素的集合、输出元素的集合、工作流中的关系集合、活动到输入元素的映射以及活动到输出元素的映射;所述Petri网模型中包括输入类库所和输出类库所的集合、工作流中的活动集合、映射集合以及初始网模型;
根据分支-聚合对,将所述Petri网模型划分为多个片段;若划分的片段中存在分支-聚合对,继续对该片段进行划分,以得到所述Petri网模型对应的模型分解树;
遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合;
根据所述测试序列集合中每条测试序列包含的输入输出信息,生成测试用例。
2.根据权利要求1所述的方法,其特征在于,所述Petri网模型对应的模型分解树按照下述方式构建:
步骤S11:将所述Petri网模型作为一个节点,并按照分支-聚合对将该节点分割为多个片段,其中,各个片段作为该节点的一个子节点;
步骤S12:将各个子节点中类型为分支-聚合对的子节点进行处理,以将类型为分支-聚合对的子节点中各条流程作为该子节点的子节点;
步骤S13:将分支-聚合对的每个子节点作为Petri网子模型,并对各个Petri网子模型按照步骤S11进行递归处理。
3.根据权利要求1所述的方法,其特征在于,遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合具体包括:
步骤S21:将当前节点node表示成其所有子节点node.son的连接形式;
步骤S22:如果node.son的类型为or,并且node.son还有n个子节点node.son.son,则将所有包含node.son的测试序列复制n次,并将每个复制后的序列中的node.son替换为node.son.son;
步骤S23:如果node.son的类型为and,则将所有包含node.son的测试序列替换成所有node.son.son的并行形式;
步骤S24:对node.son.son进行递归遍历,以对node.son.son的子节点按照步骤S21至S23进行处理。
4.根据权利要求1所述的方法,其特征在于,所述模型分解树中,分支节点的类型与聚合节点的类型一致。
5.根据权利要求1所述的方法,其特征在于,生成测试用例的步骤中具体包括:
当所述模型分解树中的节点存在子节点时,判断该节点的类型;
当该节点的类型为sequence时,将该节点替换为该节点的所有子节点连接的形式;
当该节点的类型为or时,将该节点替换为该节点的子节点中的任一子节点;
当该节点的类型为and时,将该节点替换为该节点的所有子节点的并行形式。
6.一种面向工作流系统的测试用例生成装置,其特征在于,所述装置包括:
网模型建立单元,用于基于带输入输出约束的工作流系统,建立Petri网模型;其中,所述工作流系统中包括工作流的活动集合、输入元素的集合、输出元素的集合、工作流中的关系集合、活动到输入元素的映射以及活动到输出元素的映射;所述Petri网模型中包括输入类库所和输出类库所的集合、工作流中的活动集合、映射集合以及初始网模型;
模型分解树构建单元,用于根据分支-聚合对,将所述Petri网模型划分为多个片段;若划分的片段中存在分支-聚合对,继续对该片段进行划分,以得到所述Petri网模型对应的模型分解树;
测试序列集合生成单元,用于遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合;
测试用例生成单元,用于根据所述测试序列集合中每条测试序列包含的输入输出信息,生成测试用例。
7.根据权利要求6所述的装置,其特征在于,所述网模型建立单元具体包括:
片段分割模块,用于将所述Petri网模型作为一个节点,并按照分支-聚合对将该节点分割为多个片段,其中,各个片段作为该节点的一个子节点;
节点处理模块,用于将各个子节点中类型为分支-聚合对的子节点进行处理,以将类型为分支-聚合对的子节点中各条流程作为该子节点的子节点;
递归处理模块,用于将分支-聚合对的每个子节点作为Petri网子模型,并对各个Petri网子模型按照所述片段分割模块的执行步骤进行递归处理。
8.根据权利要求6所述的装置,其特征在于,所述测试序列集合生成单元具体包括:
连接形式表示模块,用于将当前节点node表示成其所有子节点node.son的连接形式;
第一类型判断模块,用于如果node.son的类型为or,并且node.son还有n个子节点node.son.son,则将所有包含node.son的测试序列复制n次,并将每个复制后的序列中的node.son替换为node.son.son;
第二类型判断模块,用于如果node.son的类型为and,则将所有包含node.son的测试序列替换成所有node.son.son的并行形式;
递归遍历模块,用于对node.son.son进行递归遍历,以对node.son.son的子节点按照所述连接形式表示模块、第一类型判断模块以及第二类型判断模块的执行步骤进行处理。
9.根据权利要求6所述的装置,其特征在于,所述测试用例生成单元具体包括:
类型判断模块,用于当所述模型分解树中的节点存在子节点时,判断该节点的类型;
第一处理模块,用于当该节点的类型为sequence时,将该节点替换为该节点的所有子节点连接的形式;
第二处理模块,用于当该节点的类型为or时,将该节点替换为该节点的子节点中的任一子节点;
第三处理模块,用于当该节点的类型为and时,将该节点替换为该节点的所有子节点的并行形式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610957561.XA CN106547696B (zh) | 2016-10-28 | 2016-10-28 | 一种面向工作流系统的测试用例生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610957561.XA CN106547696B (zh) | 2016-10-28 | 2016-10-28 | 一种面向工作流系统的测试用例生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106547696A true CN106547696A (zh) | 2017-03-29 |
CN106547696B CN106547696B (zh) | 2019-05-28 |
Family
ID=58393394
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610957561.XA Active CN106547696B (zh) | 2016-10-28 | 2016-10-28 | 一种面向工作流系统的测试用例生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106547696B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032931A (zh) * | 2018-07-06 | 2018-12-18 | 中国人民解放军陆军工程大学 | 带时间、资源、输入输出约束的工作流系统建模方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050256818A1 (en) * | 2004-04-30 | 2005-11-17 | Xerox Corporation | Workflow auto generation from user constraints and hierarchical dependence graphs for workflows |
CN101833499A (zh) * | 2010-04-07 | 2010-09-15 | 南京航空航天大学 | 一种基于可达树的软件测试验证方法 |
CN101853201A (zh) * | 2010-05-24 | 2010-10-06 | 南京航空航天大学 | 一种基于着色petri网的软件并行测试方法及工具 |
CN102176200A (zh) * | 2009-09-25 | 2011-09-07 | 南京航空航天大学 | 一种软件测试用例自动生成方法 |
-
2016
- 2016-10-28 CN CN201610957561.XA patent/CN106547696B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050256818A1 (en) * | 2004-04-30 | 2005-11-17 | Xerox Corporation | Workflow auto generation from user constraints and hierarchical dependence graphs for workflows |
CN102176200A (zh) * | 2009-09-25 | 2011-09-07 | 南京航空航天大学 | 一种软件测试用例自动生成方法 |
CN101833499A (zh) * | 2010-04-07 | 2010-09-15 | 南京航空航天大学 | 一种基于可达树的软件测试验证方法 |
CN101853201A (zh) * | 2010-05-24 | 2010-10-06 | 南京航空航天大学 | 一种基于着色petri网的软件并行测试方法及工具 |
Non-Patent Citations (2)
Title |
---|
丁森科: ""基于Petri Net软件测试系统的研究"", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
郑长友 等: ""基于Petri网的面向测试的工作流系统建模方法"", 《电子科技大学学报》 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109032931A (zh) * | 2018-07-06 | 2018-12-18 | 中国人民解放军陆军工程大学 | 带时间、资源、输入输出约束的工作流系统建模方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106547696B (zh) | 2019-05-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3858000B2 (ja) | フィルタリング型アプローチを使用する組合せ回路の検証方法 | |
US10606570B2 (en) | Representing software with an abstract code graph | |
CN106649103B (zh) | 一种安卓应用程序自动化黑盒测试的方法及系统 | |
CN103116540B (zh) | 基于全局超级块支配图的动态符号执行方法 | |
CN107783758B (zh) | 一种智能合约工程方法 | |
CN104050087B (zh) | 一种基于uml模型的软件架构正确性验证方法 | |
WO2021115186A1 (zh) | 基于ann的程序检测方法和检测系统及应用 | |
CN109146081A (zh) | 一种用于机器学习平台中快速创建模型项目的方法及装置 | |
CN101853201A (zh) | 一种基于着色petri网的软件并行测试方法及工具 | |
Hänsel et al. | An evolutionary algorithm for the generation of timed test traces for embedded real-time systems | |
CN107704235A (zh) | 图形化建模中数据流程图的解析方法、系统及存储介质 | |
CN108363660B (zh) | 一种测试程序生成方法和装置 | |
CN110244688A (zh) | 基于LabVIEW的仪表总线面板自动生成方法及其系统 | |
CN109189941A (zh) | 用于更新模型参数的方法、装置、设备和介质 | |
CN109710240A (zh) | 流程图分解方法及系统 | |
Sanchez et al. | Bigraphical modelling of architectural patterns | |
CN103744776B (zh) | 一种基于符号化函数摘要的静态分析方法及系统 | |
Bertolino et al. | An approach to integration testing based on architectural descriptions | |
CN110377492B (zh) | 一种基于方法相似度的单元测试用例生成方法 | |
CN106547696A (zh) | 一种面向工作流系统的测试用例生成方法及装置 | |
CN111176995B (zh) | 一种基于大数据测试用例的测试方法和测试系统 | |
Tsai et al. | Iterative design and testing within the software development life cycle | |
CN1319150C (zh) | 一种寄存器传输级可观测性覆盖分析与激励生成方法 | |
CN102591779B (zh) | 基于工作流的通用软件测试过程模型的建立方法 | |
WO2016151710A1 (ja) | 仕様構成装置および方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |