基于流程图分析的测试用例自动生成研究
Research on the Test Case Automatic Generation Based on Flow Chart Analysis
作者姓名
学位类型 工程硕士
学科、专业
(工程领域) 软 件 工 程
研究方向 软 件 测 试
导师及职称 田 卫 东 副 教 授
2014年11月26日合 肥 工 业 大 学
本论文经答辩委员会全体委员审查,确认符合合肥工业大学硕士学位论文质量要求。
答辩委员会签名:
主席:
委员:
导师:
独 创 性 声 明
本人声明所呈交的学位论文是本人在导师指导下进行的研究工作及取得的研究成果。据我所知,除了文中特别加以标注和致谢的地方之外,论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得 合肥工业大学 或其他教育机构的学位或证书而使用过的材料。与我一同工作的同志对本研究所做的任何贡献均已在论文中作了明确的说明并表示谢意。
学位论文作者签名: 签字日期: 年 月 日
学位论文版权使用授权书
本学位论文作者完全了解 合肥工业大学 有关保留、使用学位论文的规定,有权保留并向国家有关部门或机构送交论文的复印件和磁盘,允许论文被查阅和借阅。本人授权 合肥工业大学 可以将学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存、汇编学位论文。
(保密的学位论文在解密后适用本授权书)
学位论文作者签名: 指导教师签名:
签名日期: 年 月 日 签名日期: 年 月 日
论文作者毕业去向
工作单位:
联系电话: E-mail:
通讯地址: 邮政编码:
基于流程图分析的测试用例自动生成研究
摘 要
随着信息技术的不断发展,软件产品的应用日益广泛,软件的规模及其复杂
度不断增长,软件系统存在的潜在错误也越来越多。因此,如何提高软件质量和
可靠性已成为当前软件技术领域的重要任务,软件测试无疑是一种重要手段。而如何高效准确的生成测试用例是软件测试的关键问题,传统方法是测试人员根据经验去设计和生成,经验色彩浓厚。
[]在这种背景下,本文通过广泛调研和深入研究,提出了利用流程图模型和改进DFS等算法生成测试用例的方法,本文主要工作如下:[]
(1)对Visio流程图进行了研究,并给出了流程图的形式化定义,消除了流程图的模糊性和一致性,使得流程图模型更加容易分析。根据流程图的特点,定义了流程图图元和表示其关系的数据结构。
(2)研究深度优先搜索算法并对其进行改进,给出了相应的改进算法,[
改进了?]对于存在循环结构的路径,利用环消除算法进行处理,使得应用改进的DFS算法遍历流程图时,将得到所有可能存在的路径。
(3)对得到的全路径进行研究,筛选出有效路径并结合测试用例生成算法,应用在了基于流程图模型来生成测试用例的过程,并且应用该方法设计并实现了一个工具,来自动生成测试用,并且以Excel格式的标准测试用例格式给出[
不通]。
(4)通过对售票系统和人事管理系统进行分析和验证,结果表明利用流程图模型和上述算法来生成测试用例,不仅可以对冗余测试用例进行有效的控制,是生成的测试用例数量合理,而且生成的测试用例有效,能够满足测试的需求。达到了路径覆盖的测试覆盖标准。[
简化,有这么神奇?!]
关键词:流程图;测试用例;自动生成;测试覆盖
Flow Chart Analysis Based Test Case Automatic Generation
Abstract
With the continuous development of information technology and increasingly utilized software applications, software size and complexity keeps growing with more and more potential bugs in the system. Therefore, how to improve software quality and reliability has become an important task in the field of software technology, where software testing is undoubtedly an important tool. How to efficiently and accurately generate test cases is a key issue in software testing, and the traditional approach is to design and build cases based on personal experience only.
Under this background, this paper went through extensive research to bring up a method utilizing flow chart model and improved DFS algorithms to generate test cases. The main points of this paper are:
(1) Through the studying and formally defining of flow chart, eliminated flow chart’s ambiguity and inconsistency, made it easier to analyze the flow chart model. According to the characteristics of the flow chart, defined flow chart elements and its data structure relationships.
(2) Study and improve the depth-first search algorithm, output improved algorithm to for the path of existing loop structure to loop eliminate and process applications when improved DFS traversal algorithm flowchart will get all possible paths.
(3) Study the full path generated, select the effective path and combined with test case generation algorithm to apply the process of flowchart-based case generation. Designed and implement a tool to automatically generate test cases and output case in standard Excel format.
(4) Through analysis and verification of ticketing system and personnel management system, the results showed that the use of flowcharts and algorithms to generate test cases not only on effectively controlled redundancy test case for a reasonable amount of generated test cases, but also generated valid cases meeting test needs. Test coverage achieved path coverage.
KEYWORDS: Flow chart; Test case automatic generation; Testing Coverag
目 录
摘 要 IV
Abstract V
致 谢 VI
目 录 VII
插图清单 XI
表格清单 XII
第一章 绪论 14
1.1 研究背景和意义 14
1.2 国内外研究现状 14
1.3 论文的研究内容 17
1.4 内容安排 17
1.5 本章小节 18
第二章 相关技术和方法 19
2.1 软件测试 19
2.1.1 定义及原则 19
2.1.2 软件测试方法简介 20
2.1.3 软件测试工具 20
2.2 软件测试用例 21
2.2.1 测试用例简介 21
2.2.2 测试覆盖级别 22
2.2.3 测试用例的设计步骤 27
2.3 本章小节 28
第三章 流程图解析和主要算法 29
3.1 流程图定义 29
3.2 流程图规范 29
3.2.1 图元规则说明 29
3.3 流程图解析 30
3.3.1 常见流程图结构分析 30
3.3.2 流程图遍历和测试用例生成算法 33
3.3.3 异常流程图分析 36
3.4 本文的测试覆盖级别 38
3.5 本章小节 41
第四章 系统设计和实现 42
4.1 总体框架 42
4.2 各模块的详细设计 42
4.2.1 数据抽取模块的设计 42
4.2.2 数据转换和处理模块设计 47
4.2.3 结果生成模块的设计 50
4.3 图元解析 51
4.3.1 Visio文件结构分析 51
4.3.2 vdx文件的Java操作 52
4.3.3 Visio流程图图元的读取 52
4.4 本章小节 53
第五章 系统应用及结果分析 54
5.1 系统在售票管理系统中的应用 54
5.1.1 售票系统简介 54
5.1.2 售票模块流程图 54
5.1.3 系统重要界面截图 55
5.1.4 手工编写的测试用例 56
5.1.5 处理后的流程图 57
5.1.6 测试用例生成 58
5.1.7手工测试用例和自动生成测试用例的对比 63
5.2 系统在人事管理系统中的应用 64
5.2.1 人事管理系统简介 64
5.2.2人事管理系统中人才引进流程图 65
5.2.3 系统重要界面截图 65
5.2.4 手工编写的测试用例 66
5.2.5 处理后的流程图 69
5.2.6 测试用例生成 70
5.2.7手工测试用例和自动生成测试用例的对比 76
5.3 本章小节 77
第六章 结束语 78
6.1 总结 78
6.2 展望 78
6.3 本章小节 79
参考文献 80
[]插图清单
图2. 1 示例程序流程图 25
图2. 2 测试覆盖之间的关系 29
图2. 3 测试用例设计步骤 29
图3. 1 顺序结构 33
图3. 2判定分支结构 33
图3. 3判定分支结构特例 33
图3. 4两种循环结构 33
图3. 5并行程序结构 34
图3. 6子流程结构 35
图3. 7带环状结构的流程图 38
图3. 8带环状结构的流程图解析示例 39
图3. 9带环状结构的流程图最终解析结果 40
图3. 13顺序结构流程图修改过程 41
图3. 14 顺序结构流程图生成的测试用例 42
图3. 15 分支结构的流程图修改过程 42
图3. 16分支结构流程图生成的测试用例 42
图4. 1整体功能结构图 44
图4. 3 Visio XML文件结构 45
图4. 4 Visio文件解析 46
图4. 5 数据转换和处理模块结构图 49
图4. 8 Visio的XML文件架构图 54
图4.9图元范围判定示意图 54
图5. 1售票流程图 57
图5. 2 线路录入模块 57
图5. 3 用于测试的售票流程图 60
图5. 4 自动化测试用例生成 61
图5. 5 人才引进流程图 67
图5. 6 申请人信息填写 68
图5. 7 用于测试的人才引进流程图 72
图5. 8 自动化测试用例生成 73
[
4.6,4.7?]
表格清单
表2. 1 判断覆盖(分支覆盖)测试用例 26
表2. 2 条件覆盖测试用例1 26
表2. 3条件覆盖测试用例2 27
表2. 4 判定-条件覆盖(分支-条件覆盖)测试用例 27
表2. 5 条件组合覆盖测试用例 28
表2. 6 路径覆盖测试用例 28
表3. 1流程图图元说明表 31
表3. 2 流程图关键字前缀解释 41
表4. 1 数据转换和处理模块主要函数 49
表4. 2 模糊判断函数列表 51
表5. 1 手工高层用户测试用例-查询 58
表5. 2 手工高层用户测试用例-售票 58
表5. 3 手工基本测试用例-查询 58
表5. 4 手工基本测试用例-售票 59
表5. 5 自动高层用户测试用例-查询车辆 61
表5. 6 自动高层用户测试用例-查询座位 61
表5. 7 自动高层用户测试用例-售票 61
表5. 8 自动基本测试用例-查询车辆 62
表5. 9 自动基本测试用例-查询座位 62
表5. 10 自动基本测试用例-售票 62
表5. 11 自动扩展基本测试用例-正常预售时间 63
表5. 12 自动扩展基本测试用例-超预售时间 63
表5. 13 自动扩展基本测试用例-线路查询 64
表5. 14 自动扩展基本测试用例-售票成功 64
表5. 15 自动扩展基本测试用例-余票不足 65
表5. 16 自动扩展基本测试用例-售票失败 65
表5. 17 手工与自动生成测试用例比较 65
表5. 18 手工高层用户测试用例-接收人才简历 68
表5. 19 手工高层用户测试用例-人才简历提交 68
表5. 20 手工高层用户测试用例-人才简历返回 69
表5. 21 手工高层用户测试用例-人才简历发送 69
表5. 22 手工高层用户测试用例-人才简历反馈 69
表5. 23 手工高层用户测试用例-人才简历上会、反馈 69
表5. 24 手工基本测试用例-接收人才简历 69
表5. 25 手工基本测试用例-人才简历提交 70
表5. 26 手工基本测试用例-人才简历返回 70
表5. 27 手工基本测试用例-人才简历发送 70
表5. 28 手工基本测试用例-人才简历反馈 71
表5. 29 手工基本测试用例-人才简历上会、反馈 71
表5. 30 自动高级用户测试用例-学院审核申请人简历 73
表5. 31自动高级用户测试用例-领导审核申请人简历 73
表5. 32自动高级用户测试用例-申请人总数审核 73
表5. 33自动高级用户测试用例-委员会讨论申请人简历 74
表5. 34 自动基本测试用例-学院审核简历 74
表5. 35 自动基本测试用例-系领导审核简历 74
表5. 36 自动基本测试用例-申请人总数审核 74
表5. 37自动基本测试用例-委员会讨论简历 75
表5. 38自动扩展基本测试用例-学院审核简历 75
表5. 39自动扩展基本测试用例-学院审核简历 76
表5. 40自动扩展基本测试用例-各系领导审核简历 76
表5. 41自动扩展基本测试用例-各系领导审核简历 76
表5. 42自动扩展基本测试用例-申请人总数审核 77
表5. 43自动扩展基本测试用例-申请人总数审核 77
表5. 44自动扩展基本测试用例-委员会讨论简历 77
表5. 45自动扩展基本测试用例-委员会讨论简历 78
表5. 46手工与自动生成测试用例比较 78