CN112416761B - 一种基于广度优先搜索的测试用例生成方法及装置 - Google Patents
一种基于广度优先搜索的测试用例生成方法及装置 Download PDFInfo
- Publication number
- CN112416761B CN112416761B CN202011255307.8A CN202011255307A CN112416761B CN 112416761 B CN112416761 B CN 112416761B CN 202011255307 A CN202011255307 A CN 202011255307A CN 112416761 B CN112416761 B CN 112416761B
- Authority
- CN
- China
- Prior art keywords
- data
- node
- flow
- nodes
- layer
- 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
Links
- 238000012360 testing method Methods 0.000 title claims abstract description 106
- 238000000034 method Methods 0.000 title claims abstract description 86
- 230000008569 process Effects 0.000 claims description 54
- 238000010586 diagram Methods 0.000 claims description 36
- 238000012545 processing Methods 0.000 claims description 36
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000010276 construction Methods 0.000 claims description 6
- 230000003993 interaction Effects 0.000 claims description 6
- 230000009466 transformation Effects 0.000 claims description 3
- 230000002159 abnormal effect Effects 0.000 description 4
- 230000005856 abnormality Effects 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 230000008859 change Effects 0.000 description 3
- 230000007547 defect Effects 0.000 description 3
- 238000013522 software testing Methods 0.000 description 3
- 230000007704 transition Effects 0.000 description 2
- 201000004569 Blindness Diseases 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000010845 search algorithm Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012795 verification Methods 0.000 description 1
Images
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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9027—Trees
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明涉及一种基于广度优先搜索的测试用例生成方法及装置,包括:建立对节点入度和出度进行加权的有向树形结构;对所述有向树形结构逐层进行正向搜索和逆向搜索,获得并记录系统的所有测试用例;每层的正向搜索沿父节点向子节点的方向搜索,对搜索到测试用例的父节点出度和子节点入度均减1;正向搜索之后,若该层中还存在入度不为0的子节点,则进行逆向搜索;从子节点向父节点方向搜索,对搜索到测试用例的父节点出度和子节点入度均减1,直至所有子节点的入度均为0,停止该层的逆向搜索;通过逐层的正向搜索和逆向搜索,直至所有节点的入度和出度均为0,得到所有的测试用例。本发明避免测试用例的遗漏,提高对系统测试的充分性。
Description
技术领域
本发明涉及软件测试领域技术领域,尤其是一种基于广度优先搜索的测试用例生成方法及装置。
背景技术
软件测试是用来促进鉴定软件的正确性、完整性、安全性和质量的过程。好的测试方案是极可能发现迄今为止尚未发现的错误的测试方案,测试并不仅仅是为了找出错误,通过分析错误产生的原因和错误的发生趋势,可以帮助项目管理者发现当前软件开发过程中的缺陷,以便及时改进。
目前的专业软件系统大部分功能的实现是通过复杂的人机交互完成的,因而测试用例的生成也就成为软件测试的关键任务和难点,而且测试用例生成方法也常常只考虑软件的界面信息,而忽略了软件的具体需求和逻辑实现流程。据统计设计测试用例的花费占到所有软件测试开销的40%左右,长期以来,大部分测试用例的生成仍通过手工完成,对参与测试的人员经验和专业水平都有着较高的要求。因此,实际情况中的测试用例生成带有很高的盲目性和随意性,导致生成的测试用例不能很好地覆盖需求结果,测试用例不仅数量多,而且测试效果不佳,测试成本偏高。
发明内容
鉴于上述的分析,本发明旨在公开了一种基于广度优先搜索的测试用例生成方法及装置,解决测试用例生成效率和准确性低问题,实现降低测试成本,完全覆盖测试需求。
本发明公开了一种基于广度优先搜索的测试用例生成方法,包括:
按照系统业务数据流的层级关系,建立对节点入度和出度进行加权的有向树形结构;
对所述有向树形结构逐层进行正向搜索和逆向搜索,获得并记录系统的所有测试用例;其中,
每层的正向搜索,沿父节点向子节点的方向,搜索父节点到子节点的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1;每个子节点只访问一次,直至访问到该层所有的子节点后停止正向搜索;
正向搜索之后,若该层中还存在入度不为0的子节点,则进行逆向搜索;从子节点向父节点方向,遍历入度不为0子节点到与之连接的出度不为0父节点之间的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1,直至所有子节点的入度均为0,停止该层的逆向搜索;
通过逐层的正向搜索和逆向搜索,直至所有节点的入度和出度均为0,得到所有的测试用例。
进一步地,所述有向树形结构的建立过程包括以下步骤:
步骤S301、获取系统的业务流;
步骤S302、根据业务流以及约束条件得到业务控制流;
步骤S303、根据业务控制流结合业务数据的流向以及转变得到业务数据流;
步骤S304、根据业务数据流建立所述有向树形结构。
进一步地,所述根据业务数据流建立有向树形结构,包括:
1)根据业务数据流节点个数,以及节点输入输出的有效数据和无效数据,确定节点不同流向的分支;
2)按照节点分支结构,以直接输入输出连接的两个节点作为上下层,确定所有节点的层次关系;
3)根据节点有效数据和无效数据的输入输出分支,得到节点作为接收者和发送者次数,分别为该节点的入度和出度数;
4)依据数据流向,使用有向线段将所有节点连接起来,构成有向树形结构。
进一步地,所述根据业务控制流结合业务数据的流向以及转变得到业务数据流,包括:
1)确定系统包含的应用实体;
2)根据实体间业务交互数据;解析实体输入输出,确定各个实体的出度和入度;
4)根据实体之间数据处理过程确定数据流向,每个处理至少有一个输入数据流和一个输出数据流;
5)根据加工结果分析数据的有效性,确认数据是否存储,并依据控制流图的业务逻辑,分析相关约束条件、有效数据和无效数据,并确定业务执行的先后顺序,形成业务数据流。
进一步地,系统业务控制流生成步骤:
1)根据用户提供的相关测试需求文档,结合软件源程序划分事件处理流程;
2)定义事件处理节点对象;
3)组织事件处理节点对象的执行次序。
本发明还公开了一种基于上述的测试用例生成方法的测试用例生成装置,其特征在于,包括:
有向树形结构构造模块,用于按照系统业务数据流的层级关系,建立对节点入度和出度进行加权的有向树形结构;
测试用例搜索模块,用于对有向树形结构逐层进行正向搜索和逆向搜索,记录系统的所有测试用例;
在测试用例搜索模块中,对每层的正向搜索为从父节点向子节点方向,搜索父节点到子节点的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1;每个子节点只访问一次,直至访问到该层所有的子节点后停止正向搜索;正向搜索之后,若该层中还存在入度不为0子节点,则进行逆向搜索;从子节点向父节点方向,遍历入度不为0子节点到与之连接的出度不为0父节点之间的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1,直至所有子节点的入度均为0,停止该层的逆向搜索;通过逐层的正向搜索和逆向搜索,直至所有节点的入度和出度均为0,得到所有的测试用例。
进一步地,还包括系统业务流获取模块、业务控制流获取模块、业务数据流转变模块;
所述系统业务流获取模块,用于依据提供的相关测试需求文档,结合软件源程序,进行分析总结得到的系统的业务流;
业务控制流获取模块,用于根据业务流以及约束条件得到业务控制流;
所述业务数据流转变模块,用于根据业务控制流结合业务数据的流向以及转变得到业务数据流。
进一步地,在所述有向树形结构构造模块中,有向树形结构建立方法包括:
1)根据业务数据流节点个数,以及节点输入输出的有效数据和无效数据,确定节点不同流向的分支;
2)按照节点分支结构,以直接输入输出连接的两个节点作为上下层,依此类推,确定所有节点层次关系;
3)根据节点有效数据和无效数据的输入输出分支,统计作为接收者和发送者次数,分别定义为节点的入度和出度数;
4)依据数据流向,使用有向线段将所有节点连接起来,构成有向树形结构。
进一步地,所述业务数据流转变模块中的数据流生成方法包括:
1)确定系统包含的应用实体;
2)根据实体间业务交互数据;解析实体输入输出,确定各个实体的出度和入度;
4)根据实体之间数据处理过程确定数据流向,每个处理至少有一个输入数据流和一个输出数据流;
5)根据加工结果分析数据的有效性,确认数据是否存储,并依据控制流图的业务逻辑,分析相关约束条件、有效数据和无效数据,并确定业务执行的先后顺序,形成业务数据流。
进一步地,业务控制流获取模块中系统业务控制流产生方法的步骤:
1)根据用户提供的相关测试需求文档,结合软件源程序划分事件处理流程;
2)定义事件处理节点对象;
3)组织事件处理节点对象的执行次序。
本发明至少可实现以下有益效果之一:
本发明可以快速准确的整理出软件业务实现流程,为软件测试人员提供可靠指导和有效建议,提高了测试用例生成的准确性和完整性,缩短了软件测试周期。通过对广度优先搜索算法的改进,避免测试用例的遗漏,提高对系统测试的充分性,节约了时间成本和人力成本,同时也为开发人员提供了有价值的参考信息,使其在软件研发过程中减少设计缺陷,保证软件高质量。
附图说明
附图仅用于示出具体实施例的目的,而并不认为是对本发明的限制,在整个附图中,相同的参考符号表示相同的部件。
图1为本实施例一中的测试用例生成方法流程图;
图2为本实施例一中的PBFS示例图;
图3为本实施例一中的有向树结构图构造方法流程图;
图4为本实施例一中的数据流图模型;
图5为本实施例二中的某软件某功能模块控制流程图;
图6为本实施例二中的某软件某功能数据流图;
图7为本实施例二中的某软件某功能模块有向树形结构图;
图8为本实施例二中的某软件某功能模块加权有向树形结构图。
具体实施方式
下面结合附图来具体描述本发明的优选实施例,其中,附图构成本申请一部分,并与本发明的实施例一起用于阐释本发明的原理。
实施例一
本实施例公开了一种基于广度优先搜索的测试用例生成方法,如图1所示,包括以下步骤:
步骤S101、按照系统数据流的层级关系,建立对节点入度和出度进行标记的有向树;
有向树标记后的节点Pn(i,j);Pn为节点编号,从1到系统节点的最大数,i为节点的入度数,j为节点的出度数。
步骤S102、对有向树逐层进行正向搜索和逆向搜索,记录有向树中的所有测试用例。
具体的,每层的正向搜索为从父节点向子节点方向,搜索父节点到子节点的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1;每个子节点只访问一次,直至访问到该层所有的子节点后停止正向搜索;
正向搜索之后,如果还存在入度不为0子节点,则进行逆向搜索;从子节点向父节点方向,遍历入度不为0子节点到与之连接的出度不为0父节点之间的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1,直至所有子节点的入度均为0,停止该层的逆向搜索,进入下一层。直至将有向树的所有层都搜索完毕,使所有子节点的入度、出度均为0,记录有向树中的所有测试用例。
本实施例的搜索方法是对传统的广度优先搜索(BFS)方法的改进,传统的广度优先搜索(BFS)属于图算法的一种,其过程简要来说是对每一个节点同一深度的分支节点进行全部访问,直至无节点为止,而且每个节点只能访问一次,但传统的广度优先搜索算法在覆盖数据分支时存在漏洞,它主要关注节点是否访问到,只要已被访问则不会再次访问,使用其搜索测试用例来说,某个节点可能会存在出度和入度均大于1,这样就在很大程度上会丢失部分测试用例,不能完全覆盖测试需求。
以图2的有向树为例,如采用传统的BFS搜索过程,对每一个节点同一深度的分支节点进行全部访问,每个节点能访问一次,直至无节点为止,得到相应的测试用例集U’{P0→P1,P0→P2,P1→P3,P2→P3,P3→P4}。可见,传统的BFS搜索丢失了测试用例{P2→P3},功能项覆盖不全面。
采用本实施例的搜索方法进行搜索的过程如下:
1)从顶点P0开始,将P0标记为已遍历且记录入度数P0(i)为0,出度数P0(j)为2,然后选择未被遍历的子节点P1,记录P1(i)为1,出度数P1(j)为1;
2)记录P0→P1之间的测试用例到用例集U,执行P0(j)减1操作,P0(j)为1,P1(i)减1操作,P1(i)为0;然后选择P2且记录P2(i)为1,出度数P2(j)为1,记录P0→P2之间的测试用例到用例集U,执行P0(j)减1操作,P0(j)为0,P2(i)减1操作,P2(i)为0。
3)继续访问P0的子节点(即P1、P2的兄弟节点),没有未标记的节点,即访问到该层所有的子节点,则停止正向搜索;由于该层不存在入度不为0子节点,不进行逆向搜索,直接进入下一层,访问P1子节点P3,记录入度数P3(i)为2,出度数P3(j)为1;
4)记录P1→P3之间的测试用例到用例集U,执行P1(j)减1操作,P1(j)为0,P3(i)减1操作,P3(i)为1,继续访问,无兄弟节点;则停止正向搜索,由于该层子节点不的入度P3(i)为1,存在入度不为0子节点,进行逆向搜索;
5)访问该深度的所有节点,发现与子节点P3连接的出度不为0父节点P2之间的分支,则记录P2→P3之间的测试用例到用例集U,执行P2(j)减1操作,P2(j)为0,P3(i)减1操作,P3(i)为0,子节点P3的入度为0,停止该层的逆向搜索,进入下一层;
6)继续访问P3的子节点P4,记录入度数P4(i)为1,出度数P4(j)为0,记录P3→P4之间的测试用例到用例集U,执行P3(j)减1操作,P3(j)为0,P4(i)减1操作,P4(i)为0,继续访问,无兄弟节点,则停止正向搜索;由于该层不存在入度不为0子节点,不进行逆向搜索,直接进入下一层;
7)最终有向树所有节点出度数和入度数均为0,搜索终止。
在本实施例的方法得到的测试用例集,记为U’{P0→P1,P0→P2,P1→P3,P2→P3,P3→P4}。通过与传统的BFS搜索过程比对可发现,本实施例解决了传统的BFS搜索功能项覆盖不全面,造成测试用例的丢失的问题。
具体的,本实施例以某产品类软件为典型代表和应用对象对测试用例生成技术进行研究,根据业务逻辑分析业务处理中数据的状态转变,并针对状态转变过程中生成的业务控制流、数据流和有向树结构图的构造方法,如图3所示,具体包括以下步骤:
步骤S301、获取系统的业务流;
具体的,所述系统的业务流是依据提供的相关测试需求文档,结合软件源程序,进行分析总结得到的。
步骤S302、根据业务流以及约束条件得到业务控制流;
所述控制流构造是数据流融入控制层之后形成的逻辑处理和程序跳转的结果,其控制对象是数据,数据在逻辑处理过程中的形式和状态的变化,通过一个过程或程序的抽象表现,呈现所遍历到的路径,用图的形式表示一个过程内所有基本块执行的可能流向,反映一个过程的实时执行过程;所述约束条件为程序逻辑执行的先后顺序。具体的控制流生成步骤:
1)根据系统具体业务流划分功能操作流程(即事件),并确定层次关系;
2)根据功能操作流程,确定处理数据形式或状态变化的实体对象,并定义为事件处理节点;
3)根据功能操作流程和确认的事件处理节点,按照事件的执行顺序,由有向线段连接起来,构成业务控制流。
步骤S303、根据业务控制流结合业务数据的流向以及转变得到业务数据流;
所述业务数据流是一组有序、有起点和终点的字节的数据序列,是一串连续不断的数据的集合,包括输入流和输出流,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。把一个系统看成一个整体功能,明确信息的输入与输出,以图形的方式刻画数据流从输入到输出的移动变换过程。其中数据流图包含四个元素:外部实体、处理过程、数据流、数据存储,其模型如图4所示。
结合系统业务逻辑,由上到下,先分析顶层数据流图,再将整体划分为多个独立且互通的模块,再由系统控制流图作为辅助,分别描述顶层互通模块和各个子模块相关数据流图,其生成步骤如下所示:
1)根据业务数据的流向和转换,分析操作数据的实际应用者,并定义为系统软件的应用实体;
2)分析业务逻辑,根据相应业务控制流图识别出实体之间的输入输出数据;
3)根据实体的输入输出数据,分析数据流向和状态变化,由有向线段进行表示,并将输出次数定义为实体的出度,输入次数定义为入度;
4)根据数据流向和状态变化确定需对数据处理的节点,每个节点至少有一个输入数据流和一个输出数据流,反映此节点处理数据的来源与加工的结果;
5)根据加工结果分析数据的有效性,确认数据是否存储,并依据控制流图的业务逻辑,分析相关约束条件、有效数据和无效数据,并确定业务执行的先后顺序,形成业务数据流。
步骤S304、根据业务数据流建立有向树;
根据业务数据流,分析结构图元素的层次关系,研究树形结构图的生成方法,结合业务数据流分析数据节点的出度和入度,将业务数据流转换为有向的树形结构图;树形结构图是多个节点的集合,且可清晰明了的表明节点间的层次关系和数据分支,根据数据流向可递归遍历所有节点,有向树形结构图生成步骤如下所示:
1)根据业务数据流节点个数,以及节点输入输出的有效数据和无效数据,确定节点不同流向的分支;
2)按照节点分支结构,以直接输入输出连接的两个节点作为上下层,依此类推,确定所有节点层次关系;
3)根据节点有效数据和无效数据的输入输出分支,统计作为接收者和发送者次数,分别定义为节点的入度和出度数;
4)依据数据流向,使用有向线段将所有节点连接起来,构成有向树形结构。
对有向树形结构逐层进行上述的正向搜索和逆向搜索,即可生成系统的所有测试用例。
实施例二
本实施例以指控软件为具体实施对象,描述本发明技术方案的实施过程,验证本发明的有效性。
具体的,基于广度优先搜索的测试用例生成方法包括以下步骤:
步骤1、依据提供的指控软件相关测试需求文档,结合软件源程序获取系统的业务流;
步骤2、根据系统业务流得到实际业务控制流;
如图5所示模块功能描述为:设备管理软件向用户提供北斗数据采集转发功能、获取各类设备状态信息、获取天文时间和定位信息并同步设备等。
步骤3、根据业务控制流结合业务数据的流向以及转变得到业务数据流;
如图6所示,根据业务控制流完成数据流图的设计。
步骤4、根据业务数据流建立有向树。
如图7所示根据业务数据流图完成树形结构图的设计;如图8所示将功能模块树形图转化为加权树形结构图。
步骤5、根据加权树形结构图,采用改进的PBFS算法,得到所有的用例集;
作为对比,首先根据传统的BFS得到所有的用例集如下所示:
{P1→P2:设置正确的车型;
P1→P3:设置错误的车型;
P2→P4:配置设备参数;
P4→P5:配置参数异常(含多种异常情况,可重复执行);
P4→P6:配置参数正常(含多种参数配置,可重复执行);
P6→P7:采集北斗数据;
P6→P8:获取天文时间;
P6→P9:获取定位信息;
P6→P10:获取设备状态;
P7→P11:采集数据异常(含多种采集异常情况,可重复执行);
P7→P12:采集数据正常;
P8→P13:时间信息异常(含多种信息异常情况,可重复执行);
P8→P14:时间信息正常;
P9→P15:定位信息异常(含多种信息异常情况,可重复执行);
P9→P16:定位信息正常;
P10→P17:显示设备运行状态;
P12→P18:验证数据正确性;
P14→P19:转发时统信息;
P16→P20:定位信息转发;
P17→23:设备处理采集的数据
P18→P21:采集数据无效(构造错误数据,可重复执行);
P18→P22:采集数据有效。
}
根据本实施例的改进的PBFS得到所有的用例集如下所示:
由树形结构图可知P1节点的入度i值为0,P2~P22的入度值均为1,P23的入度值为5;用例集U为
{P1→P2:设置正确的车型;P1(0,1),P2(0,1)
P1→P3:设置错误的车型;P1(0,0),P3(0,0)
P2→P4:配置设备参数;P2(0,0),P4(0,2)
P4→P5:配置参数异常(含多种异常情况,可重复执行);P4(0,1),P5(0,1)
P4→P6:配置参数正常(含多种参数配置,可重复执行);P4(0,0),P6(0,4)
P6→P7:采集北斗数据;P6(0,3),P7(0,2)
P6→P8:获取天文时间;P6(0,2),P8(0,2)
P6→P9:获取定位信息;P6(0,1),P9(0,2)
P6→P10:获取设备状态;P6(0,0),P10(0,1)
P7→P11:采集数据异常(含多种采集异常情况,可重复执行);P7(0,1),P11(0,0)
P7→P12:采集数据正常;P7(0,0),P12(0,1)
P8→P13:时间信息异常(含多种信息异常情况,可重复执行);P8(0,2),P13(0,0)
P8→P14:时间信息正常;P8(0,0),P14(0,1)
P9→P15:定位信息异常(含多种信息异常情况,可重复执行);P9(0,1),P15(0,0)
P9→P16:定位信息正常;P9(0,0),P16(0,1)
P10→P17:显示设备运行状态;P10(0,1),P17(0,1)
P12→P18:验证数据正确性;P12(0,0),P18(0,2)
P14→P19:转发时统信息;P14(0,0),P19(0,1)
P16→P20:定位信息转发;P16(0,1),P20(0,1)
P17→P23:设备处理采集的无效数据;P17(0,0),P23(4,0)
P18→P21:采集数据无效(构造错误数据,可重复执行);P18(0,0),P21(0,1)
P18→P22:采集数据有效;P18(0,0),P22(0,1)
P19→P23:设备处理采集的无效数据;P19(0,0),P23(3,0)
P20→P23:设备处理采集的无效数据;P20(0,0),P23(2,0)
P21→P23:设备处理采集的无效数据;P21(0,0),P23(1,0)
P22→P23:设备处理采集的无效数据;P22(0,0),P23(0,0)
}
比对算法PBFS得到的用例集和算法BFS得到的用例集,算法PBFS多覆盖到的用例为U{P19→P23,P20→P23,P21→P23,P22→P23}。
综上所述,本发明技术方案通过采取上述技术措施,可有效解决软件测试过程中分析用例不准确,耗费人力成本,测试不充分等问题,通过比对结果可发现,优化算法实施有效,可清晰展示测试用例分析过程,为软件测试人员提供可靠指导和有效建议,快速且准确的得到测试用例,避免测试用例的遗漏,提高了对系统测试的充分性,达到了覆盖所有业务需求,保障软件质量的目的。
实施例三
本实施例公开了一种基于广度优先搜索的测试用例生成装置,包括:
有向树形结构构造模块,用于按照系统业务数据流的层级关系,建立对节点入度和出度进行加权的有向树形结构;
根据业务数据流,分析结构图元素的层次关系,研究树形结构图的生成方法,结合业务数据流分析数据节点的出度和入度,将业务数据流转换为有向的树形结构图;树形结构图是多个节点的集合,且可清晰明了的表明节点间的层次关系和数据分支,根据数据流向可递归遍历所有节点,有向树形结构图生成步骤如下所示:
1)确定节点个数并根据软件实现先后顺序确定层次关系;
2)确定每个节点的出度和入度数;
3)根据数据流确定节点分支;
4)依据数据流向标注流向箭头,形成有向树。
测试用例搜索模块,用于对有向树形结构逐层进行正向搜索和逆向搜索,记录系统的所有测试用例;
具体的,在测试用例搜索模块中,对每层的正向搜索为从父节点向子节点方向,搜索父节点到子节点的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1;每个子节点只访问一次,直至访问到该层所有的子节点后停止正向搜索;
正向搜索之后,该层中还存在入度不为0子节点,则进行逆向搜索;从子节点向父节点方向,遍历入度不为0子节点到与之连接的出度不为0父节点之间的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1,直至所有子节点的入度均为0,停止该层的逆向搜索,进入下一层搜索,直至所有节点的入度和出度为0。
具体的,本实施例的测试用例生成装置还包括系统业务流获取模块、业务控制流获取模块、业务数据流转变模块;
所述系统业务流获取模块,用于依据提供的相关测试需求文档,结合软件源程序,进行分析总结得到的系统的业务流。
业务控制流获取模块,用于根据业务流以及约束条件得到业务控制流;
所述控制流构造是数据流融入控制层之后形成的逻辑处理和程序跳转的结果,其控制对象是数据,数据在逻辑处理过程中的形式和状态的变化,通过一个过程或程序的抽象表现,呈现所遍历到的路径,用图的形式表示一个过程内所有基本块执行的可能流向,反映一个过程的实时执行过程,控制流生成步骤:
1)划分事件处理流程步骤;
2)定义事件处理节点对象;
3)组织事件处理节点对象的执行次序。
所述业务数据流转变模块,用于根据业务控制流结合业务数据的流向以及转变得到业务数据流;
所述业务数据流是一组有序、有起点和终点的字节的数据序列,是一串连续不断的数据的集合,包括输入流和输出流,以图形方式来表达系统的逻辑功能、数据在系统内部的逻辑流向和逻辑变换过程。把一个系统看成一个整体功能,明确信息的输入与输出,以图形的方式刻画数据流从输入到输出的移动变换过程。其中数据流图包含四个元素:外部实体、处理过程、数据流、数据存储。
结合系统业务逻辑,由上到下,先分析顶层数据流图,再将整体划分为多个独立且互通的模块,再由系统控制流图作为辅助,分别描述顶层互通模块和各个子模块相关数据流图,其生成步骤如下所示:
1)确定系统软件的应用实体;
2)分析实体间业务交互数据;
3)解析实体输入输出,确定各个实体的出度和入度;
4)根据数据处理过程确定数据流向,每个处理至少有一个输入数据流和一个输出数据流,反映此处理数据的来源与加工的结果;
5)根据加工结果分析数据的有效性,确认数据是否存储,并依据控制流图的业务逻辑,分析相关约束条件、有效数据和无效数据,并确定业务执行的先后顺序,形成业务数据流。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。
Claims (8)
1.一种基于广度优先搜索的测试用例生成方法,其特征在于,包括:
按照系统业务数据流的层级关系,建立对节点入度和出度进行加权的有向树形结构;
对所述有向树形结构逐层进行正向搜索和逆向搜索,获得并记录系统的所有测试用例;其中,
每层的正向搜索,沿父节点向子节点的方向,搜索父节点到子节点的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1;每个子节点只访问一次,直至访问到该层所有的子节点后停止正向搜索;
正向搜索之后,若该层中还存在入度不为0的子节点,则进行逆向搜索;从子节点向父节点方向,遍历入度不为0子节点到与之连接的出度不为0父节点之间的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1,直至所有子节点的入度均为0,停止该层的逆向搜索;
通过逐层的正向搜索和逆向搜索,直至所有节点的入度和出度均为0,得到所有的测试用例;
所述有向树形结构的建立过程包括以下步骤:
步骤S301、获取系统的业务流;
步骤S302、根据业务流以及约束条件得到业务控制流;
所述控制流构造是数据流融入控制层之后形成的逻辑处理和程序跳转的结果,其控制对象是数据,数据在逻辑处理过程中的形式和状态的变化,通过一个过程或程序的抽象表现,呈现所遍历到的路径,用图的形式表示一个过程内所有基本块执行的可能流向,反映一个过程的实时执行过程;所述约束条件为程序逻辑执行的先后顺序;
步骤S303、根据业务控制流结合业务数据的流向以及转变得到业务数据流;
结合系统业务逻辑,由上到下,先分析顶层数据流图,再将整体划分为多个独立且互通的模块,再由系统控制流图作为辅助,分别描述顶层互通模块和各个子模块相关数据流图;
步骤S304、根据业务数据流建立所述有向树形结构。
2.根据权利要求1所述的测试用例生成方法,其特征在于,所述根据业务数据流建立有向树形结构,包括:
1)根据业务数据流节点个数,以及节点输入输出的有效数据和无效数据,确定节点不同流向的分支;
2)按照节点分支结构,以直接输入输出连接的两个节点作为上下层,确定所有节点的层次关系;
3)根据节点有效数据和无效数据的输入输出分支,得到节点作为接收者和发送者次数,分别为该节点的入度和出度数;
4)依据数据流向,使用有向线段将所有节点连接起来,构成有向树形结构。
3.根据权利要求1所述的测试用例生成方法,其特征在于,所述根据业务控制流结合业务数据的流向以及转变得到业务数据流,包括:
1)确定系统包含的应用实体;
2)根据实体间业务交互数据;解析实体输入输出,确定各个实体的出度和入度;
4)根据实体之间数据处理过程确定数据流向,每个处理至少有一个输入数据流和一个输出数据流;
5)根据加工结果分析数据的有效性,确认数据是否存储,并依据控制流图的业务逻辑,分析相关约束条件、有效数据和无效数据,并确定业务执行的先后顺序,形成业务数据流。
4.根据权利要求1所述的测试用例生成方法,其特征在于,系统业务控制流生成步骤:
1)根据用户提供的相关测试需求文档,结合软件源程序划分事件处理流程;
2)定义事件处理节点对象;
3)组织事件处理节点对象的执行次序。
5.一种基于广度优先搜索的测试用例生成装置,其特征在于,包括:
有向树形结构构造模块,用于按照系统业务数据流的层级关系,建立对节点入度和出度进行加权的有向树形结构;
测试用例搜索模块,用于对有向树形结构逐层进行正向搜索和逆向搜索,记录系统的所有测试用例;
在测试用例搜索模块中,对每层的正向搜索为从父节点向子节点方向,搜索父节点到子节点的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1;每个子节点只访问一次,直至访问到该层所有的子节点后停止正向搜索;正向搜索之后,若该层中还存在入度不为0子节点,则进行逆向搜索;从子节点向父节点方向,遍历入度不为0子节点到与之连接的出度不为0父节点之间的分支,记录下测试用例,将其对应的父节点出度减1,子节点入度减1,直至所有子节点的入度均为0,停止该层的逆向搜索;通过逐层的正向搜索和逆向搜索,直至所有节点的入度和出度均为0,得到所有的测试用例;
还包括:系统业务流获取模块、业务控制流获取模块和业务数据流转变模块;
所述系统业务流获取模块,用于依据提供的相关测试需求文档,结合软件源程序,进行分析总结得到的系统的业务流;
业务控制流获取模块,用于根据业务流以及约束条件得到业务控制流;
所述控制流构造是数据流融入控制层之后形成的逻辑处理和程序跳转的结果,其控制对象是数据,数据在逻辑处理过程中的形式和状态的变化,通过一个过程或程序的抽象表现,呈现所遍历到的路径,用图的形式表示一个过程内所有基本块执行的可能流向,反映一个过程的实时执行过程;所述约束条件为程序逻辑执行的先后顺序;
所述业务数据流转变模块,用于根据业务控制流结合业务数据的流向以及转变得到业务数据流;
结合系统业务逻辑,由上到下,先分析顶层数据流图,再将整体划分为多个独立且互通的模块,再由系统控制流图作为辅助,分别描述顶层互通模块和各个子模块相关数据流图。
6.根据权利要求5所述的测试用例生成装置,其特征在于,在所述有向树形结构构造模块中,有向树形结构建立方法包括:
1)根据业务数据流节点个数,以及节点输入输出的有效数据和无效数据,确定节点不同流向的分支;
2)按照节点分支结构,以直接输入输出连接的两个节点作为上下层,依此类推,确定所有节点层次关系;
3)根据节点有效数据和无效数据的输入输出分支,统计作为接收者和发送者次数,分别定义为节点的入度和出度数;
4)依据数据流向,使用有向线段将所有节点连接起来,构成有向树形结构。
7.根据权利要求5所述的测试用例生成装置,其特征在于,所述业务数据流转变模块中的数据流生成方法包括:
1)确定系统包含的应用实体;
2)根据实体间业务交互数据;解析实体输入输出,确定各个实体的出度和入度;
4)根据实体之间数据处理过程确定数据流向,每个处理至少有一个输入数据流和一个输出数据流;
5)根据加工结果分析数据的有效性,确认数据是否存储,并依据控制流图的业务逻辑,分析相关约束条件、有效数据和无效数据,并确定业务执行的先后顺序,形成业务数据流。
8.根据权利要求5所述的测试用例生成装置,其特征在于,业务控制流获取模块中系统业务控制流产生方法的步骤:
1)根据用户提供的相关测试需求文档,结合软件源程序划分事件处理流程;
2)定义事件处理节点对象;
3)组织事件处理节点对象的执行次序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011255307.8A CN112416761B (zh) | 2020-11-11 | 2020-11-11 | 一种基于广度优先搜索的测试用例生成方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011255307.8A CN112416761B (zh) | 2020-11-11 | 2020-11-11 | 一种基于广度优先搜索的测试用例生成方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416761A CN112416761A (zh) | 2021-02-26 |
CN112416761B true CN112416761B (zh) | 2023-07-07 |
Family
ID=74781096
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011255307.8A Active CN112416761B (zh) | 2020-11-11 | 2020-11-11 | 一种基于广度优先搜索的测试用例生成方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416761B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116094974B (zh) * | 2023-01-28 | 2024-06-25 | 北京京航计算通讯研究所 | 网络通信参数配置测试用例生成方法、装置及测试方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049374A (zh) * | 2012-12-03 | 2013-04-17 | 瑞斯康达科技发展股份有限公司 | 一种自动化测试的方法及装置 |
CN105446881A (zh) * | 2015-11-26 | 2016-03-30 | 福建工程学院 | 一种程序不可达路径的自动检测方法 |
CN106874172A (zh) * | 2015-12-10 | 2017-06-20 | 富士通株式会社 | 测试用例生成装置及方法 |
CN108459967A (zh) * | 2018-03-21 | 2018-08-28 | 东南大学 | 基于用户接口状态流图的Web应用测试用例生成方法 |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6804634B1 (en) * | 2000-02-17 | 2004-10-12 | Lucent Technologies Inc. | Automatic generation and regeneration of a covering test case set from a model |
KR101396274B1 (ko) * | 2006-08-21 | 2014-05-19 | 에스케이커뮤니케이션즈 주식회사 | 네트워크에서 최단 경로를 검색하는 방법 및 이를 실행하기위한 프로그램이 수록된 컴퓨터로 읽을 수 있는 기록매체 |
CN101751332B (zh) * | 2009-12-30 | 2012-02-22 | 山东中创软件工程股份有限公司 | 工作流中间件的流程仿真方法、装置及系统 |
US9471468B2 (en) * | 2014-12-02 | 2016-10-18 | International Business Machines Corporation | System, method, and computer program to improve the productivity of unit testing |
CN104536814B (zh) * | 2015-01-16 | 2019-01-22 | 北京京东尚科信息技术有限公司 | 一种处理工作流的方法和系统 |
CN105677563B (zh) * | 2016-01-05 | 2018-08-14 | 南昌航空大学 | 一种基于SysML模块图的集成测试序列生成方法 |
CN107622057A (zh) * | 2016-07-13 | 2018-01-23 | 阿里巴巴集团控股有限公司 | 一种查找任务的方法和装置 |
CN109656568B (zh) * | 2018-12-28 | 2022-04-05 | 黑龙江省工业技术研究院 | 按需的可约程序控制流图图可达性索引方法 |
CN110046089B (zh) * | 2019-03-01 | 2022-05-17 | 华南师范大学 | 一种基于路径覆盖充分性准则的智能合约测试方法 |
CN111814002B (zh) * | 2019-04-12 | 2024-06-04 | 阿里巴巴集团控股有限公司 | 一种有向图识别方法及系统和服务器 |
CN110750954B (zh) * | 2019-10-29 | 2020-12-25 | 上海安路信息科技有限公司 | 电路原理图生成方法及生成系统 |
CN111694741B (zh) * | 2020-06-05 | 2023-09-29 | 中国工程物理研究院计算机应用研究所 | 一种基于路径深度覆盖的测试用例设计方法 |
CN111897739B (zh) * | 2020-08-21 | 2022-04-05 | 四川长虹电器股份有限公司 | 一种基于优化后深度优先算法的测试用例生成方法 |
-
2020
- 2020-11-11 CN CN202011255307.8A patent/CN112416761B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103049374A (zh) * | 2012-12-03 | 2013-04-17 | 瑞斯康达科技发展股份有限公司 | 一种自动化测试的方法及装置 |
CN105446881A (zh) * | 2015-11-26 | 2016-03-30 | 福建工程学院 | 一种程序不可达路径的自动检测方法 |
CN106874172A (zh) * | 2015-12-10 | 2017-06-20 | 富士通株式会社 | 测试用例生成装置及方法 |
CN108459967A (zh) * | 2018-03-21 | 2018-08-28 | 东南大学 | 基于用户接口状态流图的Web应用测试用例生成方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112416761A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104391190B (zh) | 一种用于测量仪器的远程诊断系统及诊断方法 | |
CN105759784B (zh) | 一种基于数据包络分析的故障诊断方法 | |
CN109204389B (zh) | 一种地铁设备故障诊断和自愈方法、系统 | |
US20100179951A1 (en) | Systems and methods for mapping enterprise data | |
CN103116540A (zh) | 基于全局超级块支配图的动态符号执行方法及其装置 | |
CN107544462A (zh) | 用于诊断风力发电机组的故障的方法及系统 | |
CN108170727A (zh) | 一种联锁数据的自动化处理方法及装置 | |
US20210117051A1 (en) | Object-centric user system and graphical user interface | |
KR102543064B1 (ko) | Rpa 기반 제조환경 모니터링 서비스 제공 시스템 | |
CN108897686A (zh) | 全分录自动化测试方法和装置 | |
Zhang et al. | A survey on quality assurance techniques for big data applications | |
CN114880379B (zh) | 基于Petri网保性化简规则的精简流程模型挖掘方法与系统 | |
CN109936479A (zh) | 基于差分检测的控制平面故障诊断系统及其实现方法 | |
CN112416761B (zh) | 一种基于广度优先搜索的测试用例生成方法及装置 | |
KR100910336B1 (ko) | 논리 프로세스 및 물리 프로세스 모델을 맵핑한 비즈니스 프로세스 모델을 관리하기 위한 시스템 및 방법 | |
Rudnitckaia et al. | Screening process mining and value stream techniques on industrial manufacturing processes: process modelling and bottleneck analysis | |
CN111444106B (zh) | 一种对软件可测试需求的分析方法及系统 | |
CN114281877A (zh) | 一种数据管理系统及方法 | |
Leemans et al. | Software process analysis methodology–a methodology based on lessons learned in embracing legacy software | |
Sosnowski et al. | Analysing problem handling schemes in software projects | |
Koliadis et al. | Towards an enterprise business process architecture standard | |
Kropatschek et al. | Towards the representation of cross-domain quality knowledge for efficient data analytics | |
US20200327125A1 (en) | Systems and methods for hierarchical process mining | |
Grambau et al. | Reference Architecture framework for enhanced social media data analytics for Predictive Maintenance models | |
CN110008245B (zh) | 一个适用于设备故障预警模型时间段查找的方法 |
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 |