CN106547696B - 一种面向工作流系统的测试用例生成方法及装置 - Google Patents

一种面向工作流系统的测试用例生成方法及装置 Download PDF

Info

Publication number
CN106547696B
CN106547696B CN201610957561.XA CN201610957561A CN106547696B CN 106547696 B CN106547696 B CN 106547696B CN 201610957561 A CN201610957561 A CN 201610957561A CN 106547696 B CN106547696 B CN 106547696B
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.)
Active
Application number
CN201610957561.XA
Other languages
English (en)
Other versions
CN106547696A (zh
Inventor
郑长友
黄松
姚奕
胡斌
任正平
洪宇
史涯晴
惠战伟
饶丽萍
蒋圆圆
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
PLA University of Science and Technology
Original Assignee
PLA University of Science and Technology
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by PLA University of Science and Technology filed Critical PLA University of Science and Technology
Priority to CN201610957561.XA priority Critical patent/CN106547696B/zh
Publication of CN106547696A publication Critical patent/CN106547696A/zh
Application granted granted Critical
Publication of CN106547696B publication Critical patent/CN106547696B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test 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 (7)

1.一种面向工作流系统的测试用例生成方法,其特征在于,所述方法包括:
基于带输入输出约束的工作流系统,建立Petri网模型;其中,所述工作流系统中包括工作流的活动集合、输入元素的集合、输出元素的集合、工作流中的关系集合、活动到输入元素的映射以及活动到输出元素的映射;所述Petri网模型中包括输入类库所和输出类库所的集合、工作流中的活动集合、映射集合以及初始网模型;
根据分支-聚合对,将所述Petri网模型划分为多个片段;若划分的片段中存在分支-聚合对,继续对该片段进行划分,以得到所述Petri网模型对应的模型分解树;
遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合;
根据所述测试序列集合中每条测试序列包含的输入输出信息,生成测试用例;
遍历所述模型分解树,生成与所述模型分解树相对应的测试序列集合具体包括:
步骤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进行处理。
2.根据权利要求1所述的方法,其特征在于,所述Petri网模型对应的模型分解树按照下述方式构建:
步骤S11:将所述Petri网模型作为一个节点,并按照分支-聚合对将该节点分割为多个片段,其中,各个片段作为该节点的一个子节点;
步骤S12:将各个子节点中类型为分支-聚合对的子节点进行处理,以将类型为分支-聚合对的子节点中各条流程作为该子节点的子节点;
步骤S13:将分支-聚合对的每个子节点作为Petri网子模型,并对各个Petri网子模型按照步骤S11进行递归处理。
3.根据权利要求1所述的方法,其特征在于,所述模型分解树中,分支节点的类型与聚合节点的类型一致。
4.根据权利要求1所述的方法,其特征在于,生成测试用例的步骤中具体包括:
当所述模型分解树中的节点存在子节点时,判断该节点的类型;
当该节点的类型为sequence时,将该节点替换为该节点的所有子节点连接的形式;
当该节点的类型为or时,将该节点替换为该节点的子节点中的任一子节点;
当该节点的类型为and时,将该节点替换为该节点的所有子节点的并行形式。
5.一种面向工作流系统的测试用例生成装置,其特征在于,所述装置包括:
网模型建立单元,用于基于带输入输出约束的工作流系统,建立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的子节点按照所述连接形式表示模块、第一类型判断模块以及第二类型判断模块的执行步骤进行处理。
6.根据权利要求5所述的装置,其特征在于,所述网模型建立单元具体包括:
片段分割模块,用于将所述Petri网模型作为一个节点,并按照分支-聚合对将该节点分割为多个片段,其中,各个片段作为该节点的一个子节点;
节点处理模块,用于将各个子节点中类型为分支-聚合对的子节点进行处理,以将类型为分支-聚合对的子节点中各条流程作为该子节点的子节点;
递归处理模块,用于将分支-聚合对的每个子节点作为Petri网子模型,并对各个Petri网子模型按照所述片段分割模块的执行步骤进行递归处理。
7.根据权利要求5所述的装置,其特征在于,所述测试用例生成单元具体包括:
类型判断模块,用于当所述模型分解树中的节点存在子节点时,判断该节点的类型;
第一处理模块,用于当该节点的类型为sequence时,将该节点替换为该节点的所有子节点连接的形式;
第二处理模块,用于当该节点的类型为or时,将该节点替换为该节点的子节点中的任一子节点;
第三处理模块,用于当该节点的类型为and时,将该节点替换为该节点的所有子节点的并行形式。
CN201610957561.XA 2016-10-28 2016-10-28 一种面向工作流系统的测试用例生成方法及装置 Active CN106547696B (zh)

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 CN106547696A (zh) 2017-03-29
CN106547696B true 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)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109032931A (zh) * 2018-07-06 2018-12-18 中国人民解放军陆军工程大学 带时间、资源、输入输出约束的工作流系统建模方法

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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 南京航空航天大学 一种软件测试用例自动生成方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
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

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
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)

* Cited by examiner, † Cited by third party
Title
"基于Petri Net软件测试系统的研究";丁森科;《中国优秀硕士学位论文全文数据库 信息科技辑》;20160815;第I138-464页,正文第29页
"基于Petri网的面向测试的工作流系统建模方法";郑长友 等;《电子科技大学学报》;20140131;第43卷(第1期);第120页第1节,第122页第2.4节

Also Published As

Publication number Publication date
CN106547696A (zh) 2017-03-29

Similar Documents

Publication Publication Date Title
CN106708719B (zh) 业务功能的测试方法和装置
US10606570B2 (en) Representing software with an abstract code graph
CN101788907B (zh) 组合服务精简测试用例的自动生成方法及装置
CN109344056B (zh) 一种测试方法以及测试装置
CN106599230A (zh) 一种分布式数据挖掘模型评估的方法与系统
CN109146081A (zh) 一种用于机器学习平台中快速创建模型项目的方法及装置
CN105630797B (zh) 数据处理方法及系统
CN108363660B (zh) 一种测试程序生成方法和装置
Tamzalit et al. Guiding architectural restructuring through architectural styles
Sanchez et al. Bigraphical modelling of architectural patterns
CN106569870B (zh) 一种基于扩展控制流图的程序转换方法
CN106547696B (zh) 一种面向工作流系统的测试用例生成方法及装置
Bertolino et al. Formal methods in testing software architectures
CN103425795A (zh) 一种基于云计算的雷达数据分析方法
CN111176995B (zh) 一种基于大数据测试用例的测试方法和测试系统
CN102591779B (zh) 基于工作流的通用软件测试过程模型的建立方法
Dittrich et al. Network analysis of software repositories: identifying subject matter experts
CN111897725A (zh) 中台服务自动化测试方法、介质、设备及系统
Morozov et al. Development of optimization models of complex infocommunication projects based on data mining
CN110597728A (zh) 构建测试数据的方法、装置及系统
CN107122849B (zh) 基于SparkR的产品检测总完工时间极小化方法
CN113206712B (zh) 一种软件无线电符合性测试方法及系统
Andersson et al. Extracting simulation models from complex embedded real-time systems
Krinner et al. Managing complexity in lean construction design–using the MDM methodology to create organizational modularity
Jakhar et al. Measuring complexity, development time and understandability of a program: A cognitive approach

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