【毕业学位论文】(Word原稿)面向WinForm_Control的自动化测试框架的设计与实现_第1页
【毕业学位论文】(Word原稿)面向WinForm_Control的自动化测试框架的设计与实现_第2页
【毕业学位论文】(Word原稿)面向WinForm_Control的自动化测试框架的设计与实现_第3页
【毕业学位论文】(Word原稿)面向WinForm_Control的自动化测试框架的设计与实现_第4页
【毕业学位论文】(Word原稿)面向WinForm_Control的自动化测试框架的设计与实现_第5页
已阅读5页,还剩61页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 摘要 随着控件技术的不断发展,用户对 需求不断增加,使得渐产品化,一批以 产品的公司或者部门 的建立 更加推动了其快速发展。与此同时,也给 自动化测试提出了新的要求。目前,现有的用于 动化测试的自动化测试框架都是单元测试框架,只 能用于 测试 基本属性 、 方法和事件 ,而 其他测试只能手动进行, 因此 ,开发一套面向 自动化测试框架是非常有必要的。 本文深入研究了 特点,详细分析了 动化测试的原理及过程,对现有的单元测试框架做了简单 的 介绍,通过研究,在单元测试框架 基础上, 着重处理鼠标和键盘的交互操作,并将 试思想应用到 自动化 测试中,将 各个组成部分抽象成一个 测试人员可以方便地定位控件并进行 自动化 测试,最终实现了面向 自动化测 试框架。整个框架在设计上充分考虑了代码的可复用性 、 可移植性和可维护性。目前,该自动化测试框架已经在日本多家控件公司投入使用, 达到实用化水平。 关键词 : 自动化测试 of is in of a of or as of At be to is to to be it is to a In of in a is is on on of on of of UI in to a so of At in 目录 目录 第一章 绪论 . 1 究背景 . 1 内外现状 . 2 题的意义 . 2 文的工作和结构 . 3 第二章 常用单元测试框架 . 5 定义及分类 . 5 定义 . 5 分类 . 6 用单元测试 框架 . 9 试框架原理 . 9 试框架原理 . 12 试框架原 理 . 13 试框架原理 . 15 结 . 16 第三章 动化测试 研究与分析 . 17 动化测试原理分析 . 17 本属性、方法和事件的测试 . 17 标和键盘相关事件的测试 . 20 试 . 24 动化测试的流程 . 26 动化测试的优点 . 26 结 . 27 第四章 面向 自动化测试框架的设计 . 29 试框架的设计 . 29 试框架的设计 . 35 标输入测试框架的设计 . 35 盘输入测试框架的设计 . 38 果比较方法的设计 . 40 向 自动化测试框架的优点 . 41 结 . 42 第五章 面向 自动化测试框架的验证 . 45 定测试用例 . 45 写测试脚本 . 46 行测试脚本 . 51 成测试报告 . 53 结 . 54 第六章 结束语 . 55 致谢 . 57 参考文献 . 59 第一章 绪论 1 第一章 绪论 随着 计算机技术的发展,人们对软件产品的质量有了更高的要求,因此软件测试工作在整个软件开发的过程中也越发重要。从繁杂的手工测试到实用性强 的自动化测试, 从 最初 只提供简单的 捕捉 /回放功能的测试工具到功能和灵活性更强的测试脚本工具, 自动化测试已经取得了很大的进步 2。 但随着软件规模的不断扩大,软件类型的不断增多,人们希望自动化测试能够更加高效和 简便 。自动化测试框架的出现,加速了自动化脚本的生成,提高脚本的可维护性,加速脚本执行效率 等,目的是减少实现和维护的成本,使测试人员可以把精力集中在应用程序 的测试用例设计上,而不是开发测试。 究背景 2001年后 , 们将 它 看作是多年来最重要的新技术。 向组件的开发模式做了强而有力的支持。 种是 种是 5。其中 用最广泛的。 以通过将多个标准 ,而定制出符合用户需求的应用程序。 开发人员 还可以通过继承某个标准 加新的功能与业务逻辑满足自己的需要。更高级的 开发人员 可以直接从 20。 尽管面向组件的开发模式和 得 但却给 试 工作带来了很多困难,因为目前市场上 并 不存在面向 此,对于 除了最 基本的属性 、 方法和事件 的测试可以利用目前常用的单元测试框架实现自动化测试以外,其他 大部分 对于 必须 依靠测试人员 手动完成。 但 随着 断 发展,最终 用户 对 量、功能以及用户界面的要求 也 在不断增加,这就推动了市场的壮大,同时促进了一批以 最终将推 动 因此,自动化测试 那么开发一套面向 面向 自动化测试框架的设计与实现 2 内外现状 目前, 可用于对 基本 属性 、 方法和事件进行自动化测试的单元测试框架 很多, 常用的单元测试框架 根据开发语言不同,可分为 13: 1 是为 序开发者实现单元测试提供一种框架,使得 且更有利于测试的集成 。此框架是由 发的。 2 从著名的 架为 C+移植过来的。是由 发的。 3 供的单元测试框架 ,包括: 许多 发人员都或多或少有一些使用 经验,它是 一个最主要的单元测试框架,是由 开发的。虽然盖了 用程序单元测试的大多数必要情景,但 以让单元测试更进一步。 由 先编写的一个开源单元测试框架。 最新推出的单元测试框架为 此框架从现有框架中 脱颖而出的因素有很多。最重要的一点是 ,它是由 建的。 责 目的产品经理,曾帮助构建 撰写了大量有关于单元测试的书籍。 的一位资深博客作者,模式和实施方案小组的前成员,还是 特别员工。这一全新框架的目标是利用在过去五年内积累的有关单元测试的最佳实践,构建一种能体现并鼓励这些实践的全新框架 23。 题的意义 目前,单元测试框架 技术 一直在不断发展, 现有的单元测试框架 也 一直在被更新和改进,但随着 类型和复杂度不断增加,现有的单元测试框架无法准确定位 其是无法获取 各个组成部分信息并进行测试,而且现有的单元测试框架也无法模拟鼠标和键盘的操作,因此无法测试用鼠标和键盘对 作后的结果是否正确, 也无法监听鼠标或键盘触发的事件是否正确,验证数据和脚本代码维护也有诸多不便,由此可见,现有的单元测试框架已经无法满足现有 自动化测试需求。本人通过在西安某控件开发公司一年的实习,在 元测试框架的基础上, 设计并实现了 试框架和 试框架,最终 成功开发了这套面向 此框架不仅 基本解决了 现有 一章 绪论 3 动化测试存在的问题 ,而且对于面向控件的自动化测试框架的研究具有长远的现实意义。 目前,该框架已被很多日本控件公司投入使用,取得了良好的市场反映。 文的工作和结构 本 论文选题来自西安某控件开发公司基于面向 自动化测试系统研发项目。 本人在 动化测试的 研究与设计自动化测试框架的工作经历了四个主要阶段: 第一阶段:学习阶段。在原有单元测试框架的理论基础上,进一步对 读了大量自动化测试及 发技术的书籍, 为后续的工作奠定了良好的专业理论基础。同时,为了更好地进行自动化测试框架的设计,学习了 C#语言和相关开发工具。 第二阶段:研究阶段。对 测试特点进行分析和研究,总结了 动化测试的特点和原理,并给出了 动化 测试的流程,为 动化测试框架的设计提供了明确方案。 第三阶段:设计阶段。根据目前 动化测试存在的问题,在之前研究方案的基础上,设计了 试框架和 试框架,最终实现了面向 自动化测试框架。 第四阶段:验证阶段。通过几个典型的测试用例,证明了面向 根据所完成的工作,将论文结构安排如下: 第一章 绪论 本章首先分析了课题的研究背景,然后通过介绍国内外现有的 单元测试框架,分析了现有的单元测试框架无法满足 动化测试需求的原因,阐明了开发一套面向 自动化测试框架的意义,最后对论文的工作进行了总结以及对各章节内容进行了安排。 第二章 常用单元测试框架 本章 介绍了 定义及分类, 并分析了几个常用的单元测试框架的原理。 第三章 动化测试 研究 与分析 本章根据 特点,研究总结了 动化测试的原理,着重研究了鼠标和键盘的事件处理,提出了 试思想,并给出了 动化测试的流程 及分析了 自动化测试框架的设计与实现 4 自动化测试的优点。 第四章 面向 自动化测试框架的设计 本章详细描述了 如何对 试框架和 试框架进行设计实现, 以及对结果比较方法的设计实现, 并分析了 面向 自动化测试框架的优点。 第五章 面向 自动化测 试框架的验证 本章 将此框架运用于 自动化测试工作中, 根据具体的测试用例,运用此框架编写测试脚本, 根据 脚本 运行的情况及 测试 结果报告, 验证了框架的正确性和实用性。 第六章 结束语 本章 一方面对本文所研究的项目加以总结, 另一方面提出进一步改进和完善该项目的方法。希望能有更多更好的面向 控件领域的自动化测试框架推出,并投入实际生产当中。 第二章 常用单元测试框架 5 第二章 常用单元测试框架 定义及分类 控件( 在图形用户界面 ( 中屏幕上的一种对象,用户可操作该对象来执行某一行为。 控件是用户可与之交互以输入或操作数据的对象。控件通常出现在对话框中或工具栏上 16。 控件的一种,目前,对于 应用非常广泛。 定义 开发人员提供了两种控件支持。一种是 种是 名思义, 发 所需要的控件产品,而 是在设计和开发 用程序时,用到的控件 17。 可重用的控件,它们封装了用户界面的功能,可以在基于客户端应用程序中使用。“ 体”不仅提供了许多现成控件,还提供了自行开发控件的基础结构。可以组合现有控件、扩展现有控件或创作自己的自定义控件。 从 接或间接派生的类。以下列表描述了开发 体控件的常见方案 9: 1 组合现有控件来创作一个复合控件。 复合控件封装有一个可以作为控件重复使用的用户界面。其中的一个示例就是由文本框和重置按钮组成的控件。可视化设计器为创建复合控件提供了有力的支持。若要创作复合控件,请从 生。基类 子控件提供了键盘路由并使子控件可以作为一个组进行工作。 2 扩展现有控件,对其进行自定义或为其添加功能。 一个不能更改颜色的按钮和一个具有跟踪点击次数属性的按钮就是扩展控件的具体 示例。可以通过从任何 体控件派生控件并重写或添加属性、方法和事件的方式来自定义 体控件。 3 创作一个不是通过组合或扩展现有控件而形成的控件。 在这种方案中,需从基类 生控件。可以添加和重写基类的属性、方法和事件。 面向 自动化测试框架的设计与实现 6 4 基类提供了客户端基于 应用程序中的可视显示所需的机制。 供窗口句柄,处理消息路由,并提供鼠标和键盘事件以及许多其他用户界面事件。还提供了高级布局,并具有特定于可视显示的属性,如 许多其他属性。此外,它还提供了安全性、线程支持以及与 件的交互性。由于基类提供了很多基础结构,使得开发自己的 体控件变得相对简单。 分类 目前,微软已经推出三代控件,分别是 : 1 件: 件是微软公司提供的功能强大的程序设计和开发技术,是 件开发技术的重要组成部分。它是 第三个版本,对原先件的最大扩展是增加了 能,它不 仅可以在支持 件的容器中使用,更可以作为一个 件,直接成为网页的一部分。另外, 当于一个封装好的代码模块,它是通过其方法、属性、事件来与应用程序进行通信的,此外, 件是与开发语言无关的。用户在使用控件时不必考虑它是 是用 其它语言开发的,应用程序都是通过 控件进行通信的 19。可见,任何支持 件的软件平台上都可以使用 件,它使得不同厂商所开发的控件可以真正地组装在一起,从而令软件的生产过程 类似于硬件业的各个插件的装配过程一样,实现了软件的工业化,大大降低了软件的开发成本,极大地提高了软件的生产效率,实现了软件资源的共享。 2 件: 件是以 态链接库( 可执行文件( 式发布的可执行代码组成 , 它是 遵循 范编写的 , 是 一些小的二进制可执行文件 , 件 可以给应用程序、操作系统以及其他组件提供服务 。 自定义的 件 可以在运行时刻同其他组件连接起来构成某个应用程序 。 件可以动态的插入或卸出应用 ,而且必须是动态链接的,它 必须隐藏(封装)其内部实现细节 , 必须可以在不妨碍已有用户的情况下被升级 ,且可以 透明的在网络上被重新分配位置 24。 3 常用的 以分为 六 大类 11,分别是: (1)最根本的父控件 这个类别中只包含一种控件:窗体类。 这样分类的理由在于:窗体类 是所有其他类的父亲( 这里的 “ 父亲 ” 你可以作以下的理解。 如果这里的 “父亲 ”你理解作 “ 容器 ”, 那么窗 体类是所有控件的父类。这就是说,每个控件在视觉上都处在某个窗体 中(或者是在别的控件中,例如面第二章 常用单元测试框架 7 板( 件 ,面板控件自己还是被包含在一个窗体中的)。 (2)容器控件 ,常用的有: 1) ) ) ) ) 器控件 用来盛放别的控件。它们没有自己的 力,而是依赖于被包含的控件来做真正的工作。把控件放在一个容器中的真正理由在于, 你能够把放在其中的控件做为一个整体进行显示 、隐藏、移动等操作。 容器控件都能接受鼠标事件,而别的控件类都不能接受原始鼠标输入。对别的控件而言,鼠标消息被转换成特定控件事件,例如 件,或者产生一个副作用,例如使控件获得或失去焦点。 (3)单项控件 ,常用的有: 1) ) ) ) ) ) ) ) ) 项控件通常用来显示和接收单项信息。它们具有用以保存数值的 性,并且当这一数值改变时,它们会接收到一个 件。 举例来说,如果一个用户正在向一个 件输入文本,那么每一个被输入的字符都会引发 件。 所有的单项控件都支持一种被称为数据绑定的特性。这个特性使你可以将你的用户界面对象连接到数据对象。这样的连接一旦建立,任何用户界面中的改变都会引起内存中对应对象的自动更新 反之亦然。数据绑定使得在此之前的序员必须手动处理的工作得以自动完成,并且使你的编码工作大大简化。所有的单项控件都使用了同样的数据绑定方法,这种方法被称为简单数据绑定 4。 (4)复合项控件,常用的有: 1) ) 向 自动化测试框架的设计与实现 8 3) ) ) ) 合项控件可以显示一个列表或是一个数组,并且允许用户从列表中选取某一选项。每一个控件类都允许你通过容器来访问被显示的数据 数组或是列表 这被作为控件的一个属性得以实现。这些控件使你可以使用面向对象的方式来访问底层数据。对几乎所用控件而言 除了 件 实际的数据都存在于一个对应的底 层 件之中。 除了 件之 外,每一个复合项控件都允许你在程序编译时给定一个初始化列表。 计器使你可以通过控件的属性窗口来创建这一列表。 ( 对树形控件( 言,用来初始化的集合被称为节点( 并且这一集合拥有和其他控件初始集合平面结构不相同的层次结构。)这一为控件设定初始值的能力将使你的工作变得简单,因为除非在运行时( 知道初始值,设计器都可以提前为你创建初始化所需代码。如果你确实需要在运行时再进行初始化,那么在你开始学习怎样访问初始化集合时,看看设计器所产生的 代码是个不错的选择 10。 为了帮助你将程序中的数据与这些控件的数据在运行时相连接,复合项控件也支持数据绑定。复合项控件实现数据绑定的方法与单项控件的大不相同。这里就不再详细介绍了。 (5)命令输入控件,常用的有: 1) ) ) ) ) 令输入控件允许用户指定一个操作以便执行,这通常通过直接在控件上的点击完成。每个命令输入控件具有 性描述这一操作,还有三个布尔属性 来指示控件的状态。当被用户选中时,该控件会接到一个 件。 (6)背景控件,常用的有: 1) ) 景控件没有图形界面,因此它们对用户是不可见的,而且它们只能被包含在窗体控件中,而不能被放置于容器控件中。 第二章 常用单元测试框架 9 件在一定间隔触发 件,这一时间间隔在 性中指定(以毫秒为单位)。这一属性是一个整型值,因此可接收的范围从 1 秒,也就是大约 23 天。一旦 被启动并且 性为真( , 件就会不停的触发 件,这使它看起来有点像一个闹钟。一旦被设定,它就每过 可以通过将 关掉它。计时器事件的优先级较低。例如在用户点击一个 件的同时,一个 件也触发了一个事件,那么所有点击触发的事件(例如 会在 件提交之前被处理。 件可以存放 一组图像,这通常被用来支持 钮。和别的控件一样,你可以在 计器中为 件设定初始值 一组图像 10。 持的文件类型范围很广,包括支持位图( 、 元文件( 。 用单元测试框架 目前,专门用于 自动化测试框架并不存在,一般的开发公司都是用常用 的单元测试框架对 基本属性 、 方法及事件 进行自动化测试, 其他大部分对于 测试只能依靠测试人员手动完成。 目前的最流行的单元测试框架是 列框架。常用的有 及 3。 试框架原理 是为 序开发者实现单元测试提供一种框架,使得 元测试更规范有效,并且更有利于测试的集成 5。 1 优点 (1)可以使测试代码与产品代码分开。 (2)针对某一个类的测试代码通过较少的改动便可以应用于另一个类的测试。 (3)易于集成到测试人员的构建过程中, 结合可以实施增量开发。 (4)公开源代码的,可以进行二次开发。 (5)可以方便地对 行扩展。 2 编写原则 (1)简化测试的编 写,这种简化包括测试框架的学习和实际测试单元的编写。 面向 自动化测试框架的设计与实现 10 (2)是使测试单元保持持久性。 (3)是可以利用既有的测试来编写相关的测试。 3 特点 (1)使用断言方法判断期望值和实际值差异,返回 。 (2)测试驱动设备使用共同的初始化变量或者实例。 (3)测试包结构便于组织和集成运行。 (4)支持图型交互模式和文本交互模式。 4 架的组成 (1)对测试目标进行测试的方法与过程集合 , 可称为测试用例 ( (2)测试用例的集合,可容纳多个测试用例 (将其称作测试包( 架是一个典型的 式: 以容纳任何派生自 对象;当调用 象的 方法是,会遍历自己容纳的对象,逐个调用它们的 方法。 (3)测试结果的描述与记录 。 (。 (4)测试过程中的事件监听者 ( (5)每一个测试方法所发生的与预期不一致状况的描述,称其测试失败元素(6)的出错异常( 5 常用的接口和类 (1)口 运行测试和收集测试结果 口使用了 计模式,是单独测试用例 ( 聚合测试模式( 测试扩展( 共同接口 。 它的方法,它来统计这次测试有多少个 另外一个方法就是 实例接受测试结果 , 法执行本次测试。 (2)象类 定义测试中固定方法 口的抽象实现,(不能被实例化,只能被继承)其构造函数 据输入的测试名称 建一个测试实例。由于每一个 创建时都要有一个名称,若某测试失败了,便可识别出是哪个测试失败。 中包含的 、 方法。 方法集中初始化测试所需的所有变量和实例,并且在依次调用测试类中的每个测试方法之 前再次执行 方法。 方法则是在每个测试方法之后,释放测试程序方法中引用的变量和实例。 开发人员编写测试用例时,只需继承 完成 法即可,第二章 常用单元测试框架 11 然后 得测试用例,执行它的 法,把测试结果记录在 (3)态类 一系列断言方法的集合 含了一组静态的测试方法,用于期望值和实际值比对是否正确,即测试失败 , 就会抛出一个 常, 试框架将这种错误归入 加以记录,同时标志为未通过测试。如果该类方法中指定一个 型的传参则该参数将被做为 常的标识信息,告诉测试人员 该 异常的详细信息。 供了 6 大类 31 组断言方法,包括基础断言、数字断言、字符断言、布尔断言、对象断言 。 其中 部逻辑判断使用 方法,这表明断言两个实例的内部哈希值是否相等时,最好使用该方法对相应类实 例的值进行比较。而 部逻辑判断使用了 算符 “=”,这表明该断言判断两个实例是否来自于同一个引用( 最好使用该方法对不同类的实例的值进行比对。 方法对两个字符串进行逻辑比对,如果不匹配则显示 这 两个字符串有差异的地方 。 提供两个字符串的比对,不匹配则给 出详细的差异字符。 (4)试包类 多个测试的组合 负责

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论