CN111897739B - 一种基于优化后深度优先算法的测试用例生成方法 - Google Patents
一种基于优化后深度优先算法的测试用例生成方法 Download PDFInfo
- Publication number
- CN111897739B CN111897739B CN202010850253.3A CN202010850253A CN111897739B CN 111897739 B CN111897739 B CN 111897739B CN 202010850253 A CN202010850253 A CN 202010850253A CN 111897739 B CN111897739 B CN 111897739B
- Authority
- CN
- China
- Prior art keywords
- data flow
- test case
- tree structure
- business
- data
- 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
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
- 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/3676—Test management for coverage analysis
-
- 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)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种基于优化后深度优先算法的测试用例生成方法,属于软件测试技术领域。本发明包括以下步骤:输入产品需求规格说明书,从中得到当前产品的各个功能要点的业务流程图;基于业务流程图,自顶向下逐层扩展,生成多层数据流图;基于已生成的数据流图,根据数据流向递归遍历所有节点,生成树形结构图;将生成的树形结构图的每个节点增加加权参数,得到加权树形结构图;使用优化后DFS遍历加权树形结构图,得到多条路径集合,将集合中路径添加相应的关联语句,得到最终的测试用例集。本发明能快速生成测试用例,提高测试效率,降低测试成本,保证产品质量。
Description
技术领域
本发明涉及软件测试技术领域,尤其是一种基于优化后深度优先算法的测试用例生成方法。
背景技术
功能测试是一种常用的测试方法,主要目的在于验证软件的功能是否满足用户的需求。使用功能测试时,将被测系统当做一个封闭的黑盒子,不考虑内部逻辑,只考虑程序输入与输出之间的关系,由此推断测试结果是否正确。程序运行的输入数据以及期望输出结果共同构成了测试用例,测试用例的生成是功能测试的关键点。
目前软件系统的设计规模和复杂度快速增长,为了保证软件质量,对测试人员的要求也越来越高。其中测试用例的设计是软件测试过程中的关键。如何设计有效且高质量的测试用例直接关系到软件测试的效率及软件系统的质量,但是传统的手工编写测试用例需要花费大量的时间和精力,测试人员良莠不齐的水平使得测试用例的需求和逻辑覆盖率差异性较大,无法有效地保证软件系统的质量。
发明内容
为了克服现有的手工编写测试用例导致的低效且覆盖率不高问题,提出了一种基于优化后深度优先算法的测试用例生成方法,本方法针对需求规格说明书构造业务控制流进行研究,结合优化后的深度搜索算法和实际业务要求,能够快速搜索并生成有效测试用例,尽量大的覆盖测试需求,进一步保障软件质量。
为了实现上述目的,本发明采用以下技术方案:
一种基于优化后深度优先算法的测试用例生成方法,包括以下步骤:
输入产品需求规格说明书,从中得到当前产品的各个功能要点的业务流程图;
基于业务流程图,自顶向下逐层扩展,生成多层数据流图;
基于已生成的数据流图,根据数据流向递归遍历所有节点,生成树形结构图;
将生成的树形结构图的每个节点增加加权参数,得到加权树形结构图;
使用优化后DFS遍历加权树形结构图,得到多条路径集合,将集合中路径添加相应的关联语句,得到最终的测试用例集。
进一步的,所述输入产品需求规格说明书,从中得到当前产品的各个功能要点的业务流程图,包括:
若需求规格说明书中自带业务流程图则直接提取使用,若需求规格说明书中没有业务流程图,则提取每个功能模块的关键字,自动生成业务流程图,并人工核对该业务流程图的正确性。
进一步的,所述基于业务流程图,自顶向下逐层扩展,生成多层数据流图,包括:
分析顶层数据流图,再将整体划分为多个独立且相互关联的模块,分别绘制顶层互通模块的数据流图和各个子模块相关的数据流图。
进一步的,所述数据流图的生成方法包括:
确定产品的业务模块;
分析业务模块间业务交互数据;
分析业务模块输入输出,确定各个业务模块的出入度;
根据数据处理过程确定数据流向,每个处理至少有一个输入数据流和一个输出数据流;
根据存储数据和分支流向,确定相关约束条件。
进一步的,所述基于已生成的数据流图,根据数据流向递归遍历所有节点,生成树形结构图,包括:
确定节点个数并根据先后顺序确定层次关系;
确定每个节点的出度数和入度数;
根据数据流确定节点分支。
进一步的,所述使用优化后DFS遍历加权树形结构图的方法包括:从一个顶点x出发,首先将x标记为已遍历的顶点且记录其入度数为0,然后选择一个邻接于x的尚未遍历的顶点y且记录其入度数,如果y不存在,本次搜索终止;如果y存在,那么从y再次开始遍历同事入度数减1;如此循环直到不存在未被遍历的顶点且所有节点入度数均为0。
本发明与现有技术相比具有的有益效果是:
针对手工编写测试用例的低效缓慢,以及基于代码生成测试用例时可能代码本身逻辑并不符合需求设计的问题,提出了一种基于优化后深度优先算法的测试用例生成方法,能快速生成测试用例,提高测试效率,降低测试成本,保证产品质量。
附图说明
图1.根据本发明的一个实施例的一种基于业务流程并结合深度优先搜索算法的自动生成测试用例的方法的主要流程示意图
图2.根据本发明的一个实施例的业务流程示意图
图3.根据本发明的一个实施例的数据流图
图4.根据本发明的一个实施例的加权树
具体实施方式
下面结合实施例对本发明作进一步的描述,所描述的实施例仅仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例,本领域的普通技术人员在没有做出创造性劳动前提下所获得的其他所用实施例,都属于本发明的保护范围。
实施例1:
针对手工编写测试用例的低效缓慢,以及基于代码生成测试用例时可能代码本身逻辑并不符合需求设计,因此,采用结合需求业务流程和优化后的深度搜索算法,有效、快速地生成测试用例,提高测试效率。
如图1所示,本实施例提供一种基于优化后深度优先算法的测试用例生成方法,包括以下步骤:
步骤101:输入产品需求规格说明书,从中得到当前产品的各个功能要点的业务流程图;
在本实施例的一些可选实现方式中,若需求规格说明书自带业务流程图则直接提取使用,若需求规格说明书没有流程图,则提取每个功能模块的关键字,自动生成业务流程图,并人工核对流程图的正确性。
其中每个页面或功能点对应一个或多个流程图,每个流程图尽可能全面的包含各个业务流程。
在本实施例中,参考图2,其展示了系统的登录功能模块的业务流程图,流程为用户输入账号密码,登录成功则跳转成功界面,登录失败则跳转提示界面。
步骤102:基于业务流程图,自顶向下逐层扩展,生成多层数据流图;
结合系统业务流程图,自顶向下,先分析顶层数据流图,再将整体划分为多个独立且相互关联的模块,再将系统详细设计说明书作为辅助,分别绘制顶层互通模块的数据流图和各个子模块相关的数据流图,在本实施例中,数据流图生成方法如下所示:
1)确定该产品的业务模块;
2)分析模块间业务交互数据;
3)分析模块输入输出,确定各个模块的出入度;
4)根据数据处理过程确定数据流向,每个处理至少有一个输入数据流(数据来源)和一个输出数据流(处理结果);
5)根据存储数据和分支流向,确定相关约束条件。
在本实施例中,参考图3,其展示了根据系统的登录功能模块的业务流程图生成的数据流图,图中包含数据的输入输出,存储表,处理过程。
步骤103:基于已生成的数据流图,根据数据流向递归遍历所有节点,生成树形结构图;
步骤104:将生成的树形结构图的每个节点增加加权参数,得到加权树形结构图;
在本实施例中,参考图4,其展示了由数据流图转换生成的树形结构图并增加加权参数后的样子(简化具体功能项)。
步骤105:使用优化后DFS遍历加权树形结构图,得到多条路径集合,将集合中路径添加相应的关联语句,得到最终的测试用例集。
在本实施例中,参考图4,该树形图的深度搜索算法遍历过程如下:
1)从顶点1开始,将1标记为已遍历且记录入度数x1为0,然后选择未被遍历的邻接1的顶点2,记录x2为1;
2)标记顶点2,执行x2减1操作,x2为0,然后选择4且记录x4为1,标记4并执行x4减1操作,x4为0,然后选择顶点4邻接的顶点3,记录x3为2;
3)顶点3标记后x3为1,没有与它邻接的未标记的点,所以返回4选择另一个邻接4并且未被标记的顶点5,记录x5为1;
4)标记5且x5为0,顶点5没有更多的符合条件的点,因此搜索终止,返回到4,4没有更多的点,搜索终止返回到2,最后返回到1,顶点1仍有入度数不为0的点,选择邻接点3,执行x3减1操作,x3为0,没有与它邻接的未标记的点,再次返回到1,搜索终止。
得到搜索集合{1→2,2→4,4→3,4→5,1→3},最后将搜索集合中每一条加上模块信息和关键字词,形成语句通顺的测试用例集。所述测试用例包含,测试所属模块,测试输入,前置条件,期望输出等。
本发明提出了一种基于优化后深度优先算法的测试用例生成方法,以某软件为典型代表和应用对象,根据产品的需求规格说明书或原型图,得到业务流程图,在业务流程图的辅助下根据业务数据的流向和变化得到相应的数据流图,再将数据流图转换为加权的树形图。其中数据流技术作为一种白盒测试技术,能提供充分的代码覆盖,对应的树形结构图可以清晰地描述系统整体结构和业务逻辑关系,通过深度优先搜索算法可遍历加权后的每个分支,生成覆盖所有流向及约束条件的用例集。
业务流程图是一种按业务的实际处理步骤和过程绘制的,用来反映实际业务处理过程的“流水账”。其中详细设计说明书对各业务模块进行深入分析,对各模块组合进行分析,这一阶段要求达到伪代码级别,已经把程序的具体实现的功能,现象等描述出来。系统详细设计说明书也叫作程序设计说明书,就是将系统分解为若干子系统,确定各子系统的目标、功能及其相互关系,再决定各子系统的实现算法和局部结构,还有对各子系统进行技术设计和评价,以及对全系统进行技术设计和评价等。包含数据库设计说明。数据流图从数据流动和处理的角度出发,将系统比作一个整体,确定信息的输入与输出,以图形的方式刻画数据流从输入到输出的移动变换过程。其中数据流图包含四个元素:外部实体、处理过程、数据流、数据存储。因此,结合业务流程图和详细设计说明书,能够比较完备的生成规范的数据流图。
树形结构图是n个节点的集合,且可清晰明了的表明节点间的层次关系和数据分支。深度优先搜索算法在覆盖数据分支时存在漏洞,若某个节点入度数大于1时就会丢失相应的路径用例,不能完全覆盖测试需求。现结合实际使用场景进行改进,对每个树形图的节点增加加权参数,这样就避免节点存在多条路径时而丢失其他节点到该节点的路径覆盖数据,以便可以遍历到所有数据分支,覆盖所有业务需求。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (5)
1.一种基于优化后深度优先算法的测试用例生成方法,其特征在于,包括以下步骤:
输入产品需求规格说明书,从中得到当前产品的各个功能要点的业务流程图;
基于业务流程图,自顶向下逐层扩展,生成多层数据流图;
基于已生成的数据流图,根据数据流向递归遍历所有节点,生成树形结构图;
包括:
分析顶层数据流图,再将整体划分为多个独立且相互关联的模块,分别绘制顶层互通模块的数据流图和各个子模块相关的数据流图;
将生成的树形结构图的每个节点增加加权参数,避免节点存在多条路径时而丢失其他节点到该节点的路径覆盖数据,以便遍历到所有数据分支,覆盖所有业务需求;得到加权树形结构图;
使用优化后DFS遍历加权树形结构图,得到多条路径集合,将集合中路径添加相应的关联语句,得到最终的测试用例集。
2.根据权利要求1所述的一种基于优化后深度优先算法的测试用例生成方法,其特征在于,所述输入产品需求规格说明书,从中得到当前产品的各个功能要点的业务流程图,包括:
若需求规格说明书中自带业务流程图则直接提取使用,若需求规格说明书中没有业务流程图,则提取每个功能模块的关键字,自动生成业务流程图,并人工核对该业务流程图的正确性。
3.根据权利要求1所述的一种基于优化后深度优先算法的测试用例生成方法,其特征在于,所述数据流图的生成方法包括:
确定产品的业务模块;
分析业务模块间业务交互数据;
分析业务模块输入输出,确定各个业务模块的出入度;
根据数据处理过程确定数据流向,每个处理至少有一个输入数据流和一个输出数据流;
根据存储数据和分支流向,确定相关约束条件。
4.根据权利要求1所述的一种基于优化后深度优先算法的测试用例生成方法,其特征在于,所述基于已生成的数据流图,根据数据流向递归遍历所有节点,生成树形结构图,包括:
确定节点个数并根据先后顺序确定层次关系;
确定每个节点的出度数和入度数;
根据数据流确定节点分支。
5.根据权利要求1所述的一种基于优化后深度优先算法的测试用例生成方法,其特征在于,所述使用优化后DFS遍历加权树形结构图的方法包括:从一个顶点x出发,首先将 x标记为已遍历的顶点且记录其入度数为0,然后选择一个邻接于x的尚未遍历的顶点y且记录其入度数,如果y不存在,本次搜索终止;如果y存在,那么从y再次开始遍历同时入度数减1;如此循环直到不存在未被遍历的顶点且所有节点入度数均为0。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010850253.3A CN111897739B (zh) | 2020-08-21 | 2020-08-21 | 一种基于优化后深度优先算法的测试用例生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010850253.3A CN111897739B (zh) | 2020-08-21 | 2020-08-21 | 一种基于优化后深度优先算法的测试用例生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111897739A CN111897739A (zh) | 2020-11-06 |
CN111897739B true CN111897739B (zh) | 2022-04-05 |
Family
ID=73229808
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010850253.3A Active CN111897739B (zh) | 2020-08-21 | 2020-08-21 | 一种基于优化后深度优先算法的测试用例生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111897739B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416761B (zh) * | 2020-11-11 | 2023-07-07 | 北京京航计算通讯研究所 | 一种基于广度优先搜索的测试用例生成方法及装置 |
CN112486073B (zh) * | 2020-12-03 | 2022-04-19 | 用友网络科技股份有限公司 | 机器人控制方法、控制系统和可读存储介质 |
CN112559343B (zh) * | 2020-12-11 | 2022-11-15 | 腾讯科技(深圳)有限公司 | 测试路径生成方法及相关设备 |
CN114721932B (zh) * | 2021-01-06 | 2024-04-09 | 腾讯科技(深圳)有限公司 | 一种数据处理方法、装置、设备及存储介质 |
CN113011484B (zh) * | 2021-03-12 | 2023-12-26 | 大商所飞泰测试技术有限公司 | 基于分类树和判定树的图形化的需求分析及测试用例生成方法 |
CN113238932B (zh) * | 2021-04-30 | 2024-03-19 | 西南电子技术研究所(中国电子科技集团公司第十研究所) | 测试用例自动生成方法 |
CN118445213B (zh) * | 2024-07-08 | 2024-10-08 | 江苏华库数据技术有限公司 | 一种软件系统新功能的测试方法、系统、设备及产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662644B (zh) * | 2012-02-29 | 2015-03-18 | 浙江大学 | 一种使用流程图生成测试案例的方法 |
CN108121788A (zh) * | 2017-12-19 | 2018-06-05 | 北京大学 | 子图查询方法 |
CN108459967A (zh) * | 2018-03-21 | 2018-08-28 | 东南大学 | 基于用户接口状态流图的Web应用测试用例生成方法 |
CN110502447A (zh) * | 2019-08-30 | 2019-11-26 | 西安邮电大学 | 一种基于图的回归测试用例优先排序方法 |
WO2020155778A1 (zh) * | 2019-02-03 | 2020-08-06 | 苏州市龙测智能科技有限公司 | 接口自动化测试方法、测试装置、测试设备及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8972928B2 (en) * | 2011-08-30 | 2015-03-03 | Uniquesoft, Llc | System and method for generating application code |
US10866885B2 (en) * | 2019-03-29 | 2020-12-15 | Intel Corporation | Programmatically generating software test libraries for functional safety |
-
2020
- 2020-08-21 CN CN202010850253.3A patent/CN111897739B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102662644B (zh) * | 2012-02-29 | 2015-03-18 | 浙江大学 | 一种使用流程图生成测试案例的方法 |
CN108121788A (zh) * | 2017-12-19 | 2018-06-05 | 北京大学 | 子图查询方法 |
CN108459967A (zh) * | 2018-03-21 | 2018-08-28 | 东南大学 | 基于用户接口状态流图的Web应用测试用例生成方法 |
WO2020155778A1 (zh) * | 2019-02-03 | 2020-08-06 | 苏州市龙测智能科技有限公司 | 接口自动化测试方法、测试装置、测试设备及存储介质 |
CN110502447A (zh) * | 2019-08-30 | 2019-11-26 | 西安邮电大学 | 一种基于图的回归测试用例优先排序方法 |
Non-Patent Citations (2)
Title |
---|
"Neural Network Based Test Case Generation for Data-Flow Oriented Testing";Ji Shunhui等;《2019 IEEE International Conference On Artificial Intelligence Testing》;20190520;第35-36页 * |
"基于数据流的测试用例自动生成研究";戴翔等;《计算机技术与发展》;20140717;第24卷(第9期);第1-5页 * |
Also Published As
Publication number | Publication date |
---|---|
CN111897739A (zh) | 2020-11-06 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111897739B (zh) | 一种基于优化后深度优先算法的测试用例生成方法 | |
US6804634B1 (en) | Automatic generation and regeneration of a covering test case set from a model | |
CN103473171B (zh) | 一种基于函数调用路径的覆盖率动态跟踪方法及装置 | |
US7530036B2 (en) | Random test generation using an optimization solver | |
Frederickson | Ambivalent data structures for dynamic 2-edge-connectivity and k smallest spanning trees | |
KR0145003B1 (ko) | Lsi 자동설계 시스템 | |
CN106227668A (zh) | 数据处理方法和装置 | |
US20060136864A1 (en) | Apparatus and method for product-line architecture description and verification | |
CN109144882A (zh) | 一种基于程序不变量的软件故障定位方法及装置 | |
CN110287104A (zh) | 测试用例生成方法、装置、终端及计算机可读存储介质 | |
CN104077232A (zh) | 一种基于用例与源码双向追溯的测试装置及方法 | |
Bolelli et al. | Connected components labeling on DRAGs | |
CN101772043A (zh) | 局数据核查方法和装置 | |
CN113805871A (zh) | 前端代码的生成方法、装置及计算机设备 | |
CN113934631A (zh) | 一种基于蜕变关系匹配的组合测试方法 | |
CN117633813A (zh) | 一种安全漏洞检测方法、装置、电子设备及存储介质 | |
CN117369521A (zh) | 用于无人机决策的行为树模型路径生成方法、装置及设备 | |
CN102707938A (zh) | 表形式软件规格制作支援方法及装置 | |
CN116089275A (zh) | 数据库测试方法、数据库系统、电子设备和存储介质 | |
CN106776284A (zh) | 一种软件测试方法以及系统 | |
Van Oirschot et al. | Using trace clustering for configurable process discovery explained by event log data | |
Srivastava et al. | Cause effect graph to decision table generation | |
CN113485940B (zh) | 一种基于参数抽象建模的组合测试用例生成方法 | |
CN114357984A (zh) | 一种基于拼音的同音字变体处理方法 | |
Zündorf | A heuristic for the subgraph isomorphism problem in executing PROGRES |
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 |