论文部分内容阅读
覆盖率分析技术是评价软件测试充分性的一项重要技术,它通过对程序的执行情况进行分析统计,对已有测试用例的测试充分性给出评价,并对进一步的测试提供指导。测试驱动开发是经过长期实践演化而成的一种新的开发方法学。它倡导先写测试用例再写实现代码,由程序员书写测试用例而不是专职的测试人员。而传统的覆盖率分析工具并不能有效地支持这种新型的开发方法学,所以我们对传统的覆盖率分析工具进行重新设计,给出了一个新型的覆盖率分析工具CodeCoverage。
论文对覆盖率分析系统及相关技术做了深入的研究,主要可以总结为以下三个方面:在本文的先导部分,笔者首先概述了软件测试技术及其最新进展;其次讨论了在软件测试领域里覆盖率分析技术的意义和重要性;接着介绍了软件开发与测试技术的新方法:测试驱动开发(TestDrivenDevelopment,TDD)。
在本文的主体部分,介绍了笔者近一年以来的研究设计课题:综合性软件测试工具CodeCoverage,这是一个自行设计的JAVA程序覆盖率分析工具,它能够支持测试驱动开发(TDD)。
笔者详细剖析了设计CodeCoverage所需要的关键技术与方法,包括覆盖率分析技术、语法分析与智能工具技术、测试驱动开发方法学。在覆盖率分析技术讨论中,详细分析介绍了常见的实用覆盖率分析方法:语句覆盖、分支覆盖、条件组合覆盖、弱变化覆盖等方法。在语法分析部分讨论了语法分析所用的两类方法(自顶向下、自底向上)及与之对应的工具,并重点介绍的用于JAVA的几个常用工具。在测试驱动方法学部分,则详细分析了这种方法学的优势所在及实施它需要用到的常用模式。
CodeCoverage包括十个模块:语法分析、检测代码植入、源代码生成、编译执行、覆盖率分析、XML报表生成、即时覆盖率分析与运行信息显示、记录与文件管理、IDE/JUnit集成、Ant集成。笔者对主要模块做了详细的功能设计和结构设计描述。其中重点分析了检测代码植入、IDE/JUnit集成两个核心模块。
对检测代码植入模块,本文讨论了它的植入引擎框架,各个覆盖率分析方法的代码植入设计。对于IDE/JUnit集成则分别介绍了Eclipse与JUnit的结构,并分析了将CodeCoverage与它们进行集成所采用的方法。
在本文的结尾部分,对于综合性软件测试工具CodeCoverage的研究和设计,笔者做了总结,并且对实现该软件测试工具的下一步工作做出了规划。