1、Abstract摘要随着控件技术的不断发展,用户对 WinForm Control 的需求不断增加,使得WinForm Control 逐渐产品化,一批以 WinForm Control 为产品的公司或者部门的建立更加推动了其快速发展。与此同时,也给 WinForm Control 的自动化测试提出了新的要求。目前,现有的用于 WinForm Control 自动化测试的自动化测试框架都是单元测试框架,只能用于测试 WinForm Control 的基本属性、方法和事件,而其他测试只能手动进行,因此,开发一套面向 WinForm Control 的自动化测试框架是非常有必要的。本文深入研究了
2、WinForm Control 的特点,详细分析了 WinForm Control 自动化测试的原理及过程,对现有的单元测试框架做了简单的介绍,通过研究,在单元测试框架 NUnit 的基础上,着重处理鼠标和键盘的交互操作,并将 GUI 测试思想应用到 WinForm Control 的自动化测试中,将 WinForm Control 的各个组成部分抽象成一个 ComponentGUI,让测试人员可以方便地定位控件并进行自动化测试,最终实现了面向 WinForm Control 的自动化测试框架。整个框架在设计上充分考虑了代码的可复用性、可移植性和可维护性。目前,该自动化测试框架已经在日本多家控
3、件公司投入使用,达到实用化水平。关键词:WinForm Control 自动化测试 GUI InputAbstractWith the continuous development of control techniques and the increasing demand for WinForm Control,WinForm Control is gradually commercialized in recent years,and the establishment of a group of corporations or departments taking WinForm Co
4、ntrol as their product further promotes its rapid development. Meanwhile, new requirements of automatic testing of WinForm Control have been arisen. At present,existing automatic testing frameworks for WinForm Control are all unit testing frameworks,which can only be used to test the basic attribute
5、s,methods and events of WinForm Control,that is to say,other tests have to be operated manually. Thus,it is very necessary to develop a automatic testing framework for WinForm Control.In this article,the features of WinForm Control are firstly introduced,then,the principles and procedures of automat
6、ic testing for WinForm Control are discussed in detail and existing unit testing frameworks are also introduced briefly. Finally,a new automatic testing framework for WinForm Control is introduced. The new framework is mainly based on the following ideas:on the basis of the unit testing framework NU
7、nit,focusing on the handling of the interactive operations of keyboard and mouse; and the ideas of GUI based testing are introduced in the automatic testing for WinForm Control:the components of WinForm Control are abstracted to a ComponentGUI,so that the testers can easily locate controls and test
8、them. The proposed framework takes into account the reusability,the portability and the maintainability of codes. At present,this automatic testing framework has been put into practical use in many Japanese control corporations.KeyWords: WinForm Control Automatic Testing GUI InputAbstract目录目录第一章 绪论
9、.11.1 研究背景 .11.2 国内外现状 .21.3 课题的意义 .21.4 论文的工作和结构 .3第二章 WinForm Control 及常用单元测试框架 .52.1 WinForm Control 的定义及分类 .52.1.1 WinForm Control 的定义 .52.1.2 WinForm Control 的分类 .62.2 常用单元测试框架 .92.2.1 JUnit 测试框架原理 .92.2.2 CppUnit 测试框架原理 .122.2.3 NUnit 测试框架原理 .132.2.4 XU 测试框架原理 .152.3 小结 .16第三章 WinForm Control
10、自动化测试研究与分析 .173.1 WinForm Control 自动化测试原理分析 .173.1.1 基本属性、方法和事件的测试 .173.1.2 鼠标和键盘相关事件的测试 .203.1.3 GUI 测试 .243.2 WinForm Control 自动化测试的流程 .263.3 WinForm Control 自动化测试的优点 .263.4 小结 .27第四章 面向 WinForm Control 的自动化测试框架的设计 .294.1 GUI 测试框架的设计 .294.2 Input 测试框架的设计 .354.2.1 鼠标输入测试框架的设计 .354.2.2 键盘输入测试框架的设计 .
11、384.3 结果比较方法的设计 .404.4 面向 WinForm Control 的自动化测试框架的优点 .414.5 小结 .42第五章 面向 WinForm Control 的自动化测试框架的验证 .455.1 制定测试用例 .455.2 编写测试脚本 .465.3 运行测试脚本 .515.4 生成测试报告 .535.5 小结 .54第六章 结束语 .55致谢 .57参考文献 .59第一章 绪论 1第一章 绪论随着计算机技术的发展,人们对软件产品的质量有了更高的要求,因此软件测试工作在整个软件开发的过程中也越发重要。从繁杂的手工测试到实用性强的自动化测试,从最初只提供简单的捕捉/回放功能
12、的测试工具到功能和灵活性更强的测试脚本工具,自动化测试已经取得了很大的进步 2。但随着软件规模的不断扩大,软件类型的不断增多,人们希望自动化测试能够更加高效和简便。自动化测试框架的出现,加速了自动化脚本的生成,提高脚本的可维护性,加速脚本执行效率等,目的是减少实现和维护的成本,使测试人员可以把精力集中在应用程序的测试用例设计上,而不是开发测试。1.1 研究背景2001年后,.NET Framework2.0的诞生,人们将它看作是多年来最重要的新技术。.NET Framework以多种方式对面向组件的开发模式做了强而有力的支持。.NET Framework为开发人员提供了两种控件支持:一种是 W
13、eb Control,一种是WinForm Control15。其中WinForm Control是目前发展最快,应用最广泛的。.NET Framework使得开发人员可以通过将多个标准 WinForm Control组合,而定制出符合用户需求的应用程序。开发人员还可以通过继承某个标准WinForm Control,附加新的功能与业务逻辑满足自己的需要。更高级的开发人员可以直接从.NET Framework提供的Control基类派生出自定义的 WinForm Control(Custom Control) 20。尽管面向组件的开发模式和.NET Framework的支持,使得WinForm
14、Control的开发人员以及厂商获取了更多的好处,但却给WinForm Control的测试工作带来了很多困难,因为目前市场上并不存在面向WinForm Control的自动化测试框架,因此,对于WinForm Control的测试,除了最基本的属性、方法和事件的测试可以利用目前常用的单元测试框架实现自动化测试以外,其他大部分对于WinForm Control的测试都必须依靠测试人员手动完成。但随着WinForm Control的不断发展,最终用户对WinForm Control的种类、质量、功能以及用户界面的要求也在不断增加,这就推动了市场的壮大,同时促进了一批以WinForm Contro
15、l为产品的公司或者部门的建立,最终将推动WinForm Control从产品向产业进一步发展,因此,自动化测试WinForm Control也成为一种必然,那么开发一套面向WinForm Control的自动化测试框架是非常有必要的。面向 WinForm Control 的自动化测试框架的设计与实现21.2 国内外现状目前,可用于对 WinForm Control 的基本属性、方法和事件进行自动化测试的单元测试框架很多,常用的单元测试框架根据开发语言不同,可分为 13:1 JUnit:JUnit 就是为 Java 程序开发者实现单元测试提供一种框架,使得Java 单元测试更规范有效,并且更有利
16、于测试的集成。此框架是由 Alan Ray 和Erich Gamma 开发的。2 CppUnit:CppUnit 是从著名的 JUnit 框架为 C+移植过来的。是由 Michael Feathers 开发的。3 Microsoft.NET Framework 提供的单元测试框架,包括:NUnit、CsUnit 、MbUnit 和 XU。许多.NET 开发人员都或多或少有一些使用 NUnit 的经验,它是.NET 的一个最主要的单元测试框架,是由 James Newkirk所开发的。虽然 NUnit 涵盖了.NET 应用程序单元测试的大多数必要情景,但MbUnit 可以让单元测试更进一步。Mb
17、Unit 是由 Jonathan “Peli” de Halleux 首先编写的一个开源单元测试框架。最新推出的单元测试框架为 XU,此框架从现有框架中脱颖而出的因素有很多。最重要的一点是,它是由 James Newkirk 和Brad Wilson 构建的。Newkirk 是 Microsoft 负责 CodePlex 项目的产品经理,曾帮助构建 NUnit,他撰写了大量有关于单元测试的书籍。Brad Wilson 是 thedotguy上的一位资深博客作者,模式和实施方案小组的前成员,还是 Microsoft 的特别员工。这一全新框架的目标是利用在过去五年内积累的有关单元测试的最佳实践,构
18、建一种能体现并鼓励这些实践的全新框架 23。1.3 课题的意义目前,单元测试框架技术一直在不断发展,现有的单元测试框架也一直在被更新和改进,但随着 WinForm Control 的类型和复杂度不断增加,现有的单元测试框架无法准确定位 WinForm Control,尤其是无法获取 WinForm Control 的各个组成部分信息并进行测试,而且现有的单元测试框架也无法模拟鼠标和键盘的操作,因此无法测试用鼠标和键盘对 WinForm Control 操作后的结果是否正确,也无法监听鼠标或键盘触发的事件是否正确,验证数据和脚本代码维护也有诸多不便,由此可见,现有的单元测试框架已经无法满足现有
19、WinForm Control 的自动化测试需求。本人通过在西安某控件开发公司一年的实习,在 NUnit 单元测试框架的基础上,设计并实现了 GUI 测试框架和 Input 测试框架,最终成功开发了这套面向 WinForm Control 的自动化测试框架,此框架不仅基本解决了现有第一章 绪论 3WinForm Control 自动化测试存在的问题,而且对于面向控件的自动化测试框架的研究具有长远的现实意义。目前,该框架已被很多日本控件公司投入使用,取得了良好的市场反映。1.4 论文的工作和结构本论文选题来自西安某控件开发公司基于面向 WinForm Control 的自动化测试系统研发项目。本
20、人在 WinForm Control 自动化测试的研究与设计自动化测试框架的工作经历了四个主要阶段:第一阶段:学习阶段。在原有单元测试框架的理论基础上,进一步对 NUnit单元测试框架进行了深入学习,阅读了大量自动化测试及 WinForm Control 开发技术的书籍,为后续的工作奠定了良好的专业理论基础。同时,为了更好地进行自动化测试框架的设计,学习了 C#语言和相关开发工具。第二阶段:研究阶段。对 WinForm Control 的测试特点进行分析和研究,总结了 WinForm Control 自动化测试的特点和原理,并给出了 WinForm Control 自动化测试的流程,为 Win
21、Form Control 自动化测试框架的设计提供了明确方案。第三阶段:设计阶段。根据目前 WinForm Control 自动化测试存在的问题,在之前研究方案的基础上,设计了 GUI 测试框架和 Input 测试框架,最终实现了面向 WinForm Control 的自动化测试框架。第四阶段:验证阶段。通过几个典型的测试用例,证明了面向 WinForm Control 的自动化测试框架的实用性。根据所完成的工作,将论文结构安排如下:第一章 绪论本章首先分析了课题的研究背景,然后通过介绍国内外现有的单元测试框架,分析了现有的单元测试框架无法满足 WinForm Control 自动化测试需求的
22、原因,阐明了开发一套面向 WinForm Control 的自动化测试框架的意义,最后对论文的工作进行了总结以及对各章节内容进行了安排。第二章 WinForm Control 及常用单元测试框架本章介绍了 WinForm Control 的定义及分类,并分析了几个常用的单元测试框架的原理。第三章 WinForm Control 自动化测试研究与分析本章根据 WinForm Control 的特点,研究总结了 WinForm Control 自动化测试的原理,着重研究了鼠标和键盘的事件处理,提出了 WinForm Control 的 GUI 测试思想,并给出了 WinForm Control 自
23、动化测试的流程及分析了 WinForm Control面向 WinForm Control 的自动化测试框架的设计与实现4自动化测试的优点。第四章 面向 WinForm Control 的自动化测试框架的设计本章详细描述了如何对 GUI 测试框架和 Input 测试框架进行设计实现,以及对结果比较方法的设计实现,并分析了面向 WinForm Control 的自动化测试框架的优点。第五章 面向 WinForm Control 的自动化测试框架的验证本章将此框架运用于 WinForm Control 的自动化测试工作中,根据具体的测试用例,运用此框架编写测试脚本,根据脚本运行的情况及测试结果报告,验证了框架的正确性和实用性。第六章 结束语本章一方面对本文所研究的项目加以总结,另一方面提出进一步改进和完善该项目的方法。希望能有更多更好的面向控件领域的自动化测试框架推出,并投入实际生产当中。