ASP.NET 自动化测试工具的设计与实现(论文+源码)_Nueve

 要

自动化测试工具的开发主要针对的是实际软件测试需求,从而减少人工测试的工作量,大大增加在有限的时间内的测试,并且增强测试的质量。

我们开发的自动化测试工具是一个用户界面自动化测试的工具。它分为录制模块、脚本模块、对象交互模块和日志模块,同时程序的执行也是按照这个流程进行。其中对象交互模块为内部模块,衔接脚本管理和日志管理两个模块,本身没有界面显示。

经过分析,我们使用Microsoft公司的Microsoft Visual Studio.NET开发工具,利用其提供的各种面向对象的开发工具,尤其是界面窗口这一能方便而简洁操纵对象,首先使用UML建立自动化测试工具的模型,然后在已建模型的基础上,以VC++.NET为开发工具对该工具进行实现,并不断修正和改进来不断满足用户需求。

关键词:自动化测试, 对象交互, 录制, UML

Abstract

Test automation tools are developed mainly for actual software testing requirement. Compared to manual testing, proper use of test automation tools will result in lower workload, higher testing efficiency in finite period, and higher quality products.

The test automation tool that we developed is a GUI test automation tool. It is made up of record module, script module, object interaction module and log module. This sequence is consistent with the process of running the program. Any more, object interaction module is an interior module, which links up script module and log module. So it shows no interface.

According to the analyzing, we decide to use Microsoft Visual Studio .NET developing tool of Microsoft Corporation. We can make use of kinds of Object Oriented developing tools which is offered by .NET. Especially interface window, which can operate object conveniently and compactly. First, we will use UML to build the systems architecture model of the test automation tool. And then we developed the tool with VC++.NET basing on the model, modifying and improving it continually to keep pace with users requirement.

Keywords: Test automation, Object interaction, Record, UML

Written by Zhu Yingwen

Supervised by Zhang Guangquan

第一章 前言

1.1概述

软件测试自动化,已经成为国内软件工程领域一个众所周知的课题;不言而喻,软件测试从业者都意识到软件测试这项工作走向成熟化、标准化的一个必经之路就是要实施自动化测试。

1.1.1开发背景

软件必须通过测试才能确保其在应用环境中正常工作。软件测试应能有效地发现软件中的任何缺陷,同时软件测试也应是高效的,尽可能地占有时间少且开销小[1]面对软件的规模越来越大,应用的复杂度和集成性越来越高,各种新的软件开发技术不断应用,那么,如何提供高效、有效性的测试,是软件测试技术面临的巨大挑战。如今的软件测试行情,正处在群雄逐鹿的混战岁月,每个人、每个有测试部门或从事测试业务的企业,都该多多借鉴国内外先进的测试经验,参考业界流行的行业标准,找到适合自己团队的测试方法和模式,同时开发一些辅助测试的工具,创造更大的社会价值。

从目前的测试工具来看,以国外品牌居多,选择测试工具当然也要根据自己的需求虽然测试工具很多,但是针对性却不尽相同,有针对功能的,有针对源代码的,有针对压力负载测试的等等针对性相同的工具中再进行比较,这些工具往往大同小异,最好先进行试用,当然也可以咨询专业的测试机构,无论如何,满足自己需要的才是最好的。

1.1.2开发的现实意义

自动化主要是指一个黑盒、自动回放这样一些东西,取决于一个很好的流程一个测试管理的流程,取决于相对稳定的需求。

自动化测试可以大大减少测试开销,同时大大增加在有限的时间内的测试[1]。从各种测试工具的开发趋势来看,自动化测试是发展主流。

实施软件测试自动化的理由分析:首先,测试人员的工作比以往任何时候都更加困难,因为公司和组织希望以更快的速度和更低的成本开发出高质量的应用程序。此外,在很多项目中,测试人员的所有任务实际上都是手动处理的,而实际上,有很大一部分重复性强的测试工作,是可以独立开来自动实现的。还有,在大型项目中测试团队和其他的团队之间没有足够的合作,无法促进彼此的工作。最后,从个人角度来说,测试人员通常很难花费大量时间来学习新技能;这是目前国内测试从业者的现状,太多的企业为了节约成本而将刚刚走出校门的毕业生作为测试工程师,他们每日做着繁忙的重复工作,又基于自身技能的不足,不知从何处入手。

可以说,实施测试自动化是软件行业一个不可逆转的趋势,如果在这个领域走在了前列,无论从企业的核心竞争力还是个人的工作技能来说,都有巨大的优越性。

1.2论文结构

全文共分为五章。第一章简述了自动化测试工具的开发背景以及开发的现实意义;第二章对QuickTest Professional和Rational Robot等目前主流的自动化测试工具进行深入的研究,了解自动化测试工具的工作原理与工作流程;第三章首先对自动化测试工具进行需求分析,明确需要实现的功能,然后用UML对自动化测试工具进行模块划分,建立其需求模型和动态模型;第四章介绍了自动化测试工具的代码实现过程,包括录制模块、脚本模块、对象交互模块、日志模块。其中详细介绍了笔者负责开发的录制模块和对象交互模块;第五章总结了本文的工作。

第二章 自动化测试工具的研究概述

2.1自动化测试工具基础

2.1.1自动化测试依据

首先,要有良好定义的测试策略和测试计划(知道要测试什么以及什么时候测试),对于自动化测试,你要有一个能够被识别的测试框架;其次是能够确保多个测试运行的构建策略,如果多平台环境需要被测试,必须拥有运行测试的硬件,并且拥有关注在自动化过程上的资源;最后,被测试系统是可以实施自动化测试的。

2.1.2自动化测试工具设计的一般原则

1.使最重复性的任务实现自动化。

2.使传统上能发现最多错误的任务实现自动化。

3.实现测试的模块化以使得可维护性更好,可在其他项目中重复使用。

4.编写有意义的测试日志。

5.根据测试需求,有针对性。

2.2自动化测试工具简介

自动化测试工具应该分为性能测试、功能测试、单元测试、测试管理几类。目前绝大部分应用软件都是基于GUI(即Graphics User Interface图形用户界面)进行设计开发,所以在产品的测试活动尤其是功能测试活动中,GUI测试将占到非常大的比率,GUI测试质量和效率是整个产品质量提升和成本降低的关键。我们知道大部分软件产品都有必不可少的人机交互界面MMI,而且它的功能也基本上是通过人机交互操作来体现和完成的,所以我们可以说软件产品的GUI测试在整个产品测试中占有非常重要的地位。下面介绍几种目前市场上的主流的黑盒测试工具,其中具有代表性的是Rational Robot和QuickTest Professional。

2.2.1 IBM Rational

Rational Robot图形用户界面(GUI)的功能测试自动化。可以对使用各种集成开发环境(IDE)和语言建立的软件应用程序,创建、修改并执行自动化的功能测试、分布式功能测试、回归测试和集成测试。IBM Rational Robot是一种可扩展的、灵活的功能测试工具,通过编写脚本的方式提供自动化测试特性。其GUI方式的脚本录制功能,有助于对GUI软件进行功能测试;其VU方式的脚本录制功能,有助于测试某些软件的数据通讯功能。

突出特点:

1.支持多种IDE:Microsoft VisualStudio .NET,Oracle Developer/2000,Delphi,PeopleSoft,PowerBuilder。

2.支持多种语言:Java,HTML和DHTML,Visual Basic,Visual C++,ActiveX,XML。

3.自动GUI功能测试。

4.执行分布式功能测试。

5.测试所有.NET本机控件,包括VB.NET、C#、J#、Managed C++,允许在记录时查看和编辑测试脚本。

2.2.2 QuickTest Professional

QuickTest Professional是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。

QuickTest Professional的互动式的报告工具通过提供详尽的易读的报告其中会列出在测试中发现的差错和出错的位置来解释所得的结果。这些报告对在测试运行中发生的重要事件进行描述,如出错内容和检查点等。点击按钮,您还能进一步获取任何未被包括在此测试范围内的错误的详尽资料。

突出特点:

1.具有行业领先的便于使用的特性,以及支持提前配置环境的功能,确保了快速的投资回报。

2.可独立运行,也可以同Mercury Business Process TestingMercury质量中心集成。

3.引进了QuickTest Professional 8.0中新一代的零配置关键词驱动测试技术,从而实现了快速建立测试、测试脚本更易维护,和更强大的数据驱动能力。

4.通过集成的数据表,可数据驱动任意对象、方式、检查点和输出值等。

2.3自动化测试工具特点

自动化测试工具是第三方测试,最大的特点在于它的专业性、独立性、客观性和公正性。对于软件开发商来说,经过第三方测试机构的测试,不仅可以通过专业化的测试手段发现软件错误,帮助开发商提升软件的品质,而且可以对软件有一个客观、科学的评价,有助于开发商认清自己产品的定位。通过第三方测试机构公平、公正、公开的测试,把可视性差为特征的软件透明化,用量化的数据说话,为科技部和专家组择优支持提供了科学客观的依据,从而避免了以前的印象以及关系成分。

2.3.1自动化测试的优点

1.对程序的新版本运行已有的测试。

2.可以运行更多更频繁的测试。自动化的一个显而易见的好处是可以在较少的时间内运行更多的测试。

3.可以执行一些手工测试困难或不可能做的测试。客户端用户通过定义可以自动回放的测试,随时都可以运行用户脚本[1]。

4.更好地利用资源。将繁琐的任务自动化,如重复输入相同的测试输入,可以提高准确性和测试人员的积极性,将测试技术人员解脱出来投入更多精力设计更好的测试用例[1]。

5.测试具有一致性和可重复性。对于自动重复的测试可以重复多次相同的测试。

6.增加软件信任度。

7.降低风险。知道你测试了什么和没测试什么。

2.3.2自动化测试存在的问题

使用自动化测试的过程中可能会遇到很多问题,下面是一些普遍存在的问题:

1.不现实的期望。人们都期望新工具可以解决目前遇到的所有问题,可能会忽略取得持久效益所做的努力。如果期望不现实,那么无论工具从技术角度实现得多么好,都满足不了期望[1]。

2.缺乏测试实践经验。如果缺乏测试实践经验,测试组织差,文档较少或不一致,测试发现缺陷的能力较差,在这种情况下采用自动化测试并不是好办法[1]。

3.期望自动化测试发现大量缺陷。

4.安全性错觉。测试软件没有发现任何缺陷并不意味着软件没有缺陷,因为测试可能不全面或测试本身就有缺陷。

5.自动化测试的维护性。测试维护的开销打击了测试自动化的积极性,当修改测试比手工重新测试更费劲时,测试自动化将被丢弃。

6.技术问题。测试工具与其他软件的互操作性,也是一个严重问题。除工具本身的技术问题外,用户也要了解被测软件的技术问题。

7.组织问题。自动化测试实施起来并不简单,每当使用一个新工具时,都需要调整管理方法以适应新的工作方式[1]。

第三章 基于UML的自动化测试工具分析与设计

本章以自动化测试工具的开发为背景,探讨了UML在软件分析与设计中的应用。首先对该自动化测试工具进行需求分析,明确需要实现的功能;然后用UML用例视图对该自动化测试工具进行模块划分,建立需求模型;进而利用UML的交互图以及活动图和状态图等描述了该自动化测试工具的动态模型;最后,对UML在软件分析与设计方面的应用进行了总结。

3.1自动化测试简介

以前的测试采用手工方法,测试内容繁多,工作量大,容易造成疏漏。引入自动化测试来取代目前严重影响测试效率的冗余繁复的人工过程,可以大大提高测试人员的工作效率,方便测试人员进行测试工作,消除了以前测试任务繁重,测试覆盖范围太小的局面,使测试工作高效化,全面化。

本节说明我们所要研究与实现的自动化测试工具的特点及模块功能。

3.1.1概述

自动化测试可以使某些测试任务比手工测试执行高效得多,而重复的活动特别适合自动化[1],因此自动化测试也应具有重用性。

本自动化测试工具是针对测试工作的基本需求设计的,采用了面向对象的方法实现,需要指出的是我们将要分析与设计的是一个利用测试脚本实现自动化测试的工具,所以具有很好的重用性。

3.1.2自动化测试工具的模块分析

本自动化测试工具参考了QuickTest Professional和Rational Robot等目前主流的自动化测试工具的做法,分成四个基本的功能模块:录制模块、脚本模块、对象交互模块、日志模块,这样的模块划分可以实现重复使用测试脚本进行自动化测试,能够满足自动化测试工具的重用性要求。

第四章 录制模块与对象交互模块的程序实现

本章具体描述自动化测试工具的录制模块与对象交互模块的实现。首先介绍本自动化测试工具的开发环境——Visual C++.NET,说明为什么选择UML和VC.NET;然后对某些关键的函数和算法给出具体的编码。在实现时,我们可能会根据实际情况对模型稍作修改。

4.1开发工具——Visual C++.NET

当模型初步建立后,就是实现的问题。我们采用的开发工具是Visual C++.NET。

4.1.1 .NET概述

Microsoft.NET是Microsoft XML Web services平台。XML Web services允许应用程序通过Internet进行通讯和共享数据,而不管所采用的是哪种操作系统、设备或编程语言。Microsoft.NET平台提供创建XML Web services并将这些服务集成在一起之所需。对个人用户的好处是无缝的、吸引人的体验。

Visual C++是Microsoft公司推出的目前使用极为广泛的基于Windows平台的可视化编程环境。最新版本Visual C++7.0(Visual C++.NET)与以往版本相比,增加许多新的特性,这其中包括:Web应用程序、新颖的C#编程语言以及ATL、DCOM、MFC、数据库等方面的增强,尤其是在开发环境界面上变化更大,它采用平面化的操作界面,这一点有点类似Visual Basic,它的亲和性使得更多的程序开发人员乐意接受。

Visual C++ 7.0开发环境是平面化的界面,它除了具有和Windows窗口一样的标题栏、菜单栏、工具栏和状态栏外,最主要的是还有不一样的窗口区。窗口区是由Web浏览区、方案导航区、输出窗口区、属性窗口区以及其他窗口等组成。

Visual Studio.NET使用方案这个概念来表示一个工程项目。从概念来说,方案是一个容器,它可以包含了若干个工程及其相关项目。它的最大特点就是能管理与工程相关的多种类型的外部文件。

4.1.2 Visual C++.NET的新特性

与Visual C++6.0相比,Visual C++.NET包含许许多多新的特性,主要有:

1.不再使用MFC42.DLL,而是采用和Visual C++版本号相同的MFC70.DLL。

2.集成MFC和ATL,使它们能够共用一些常用的类,如CString。

3.提供最新开发平台的SDK,并支持最新Windows的用户界面特性,如Windows XP的界面主题、GDI+、CLinkCtrl等。

4.增加了许多新的MFC用户界面类,如DHTML对话框、增强图像类CImage。

5.在MFC应用程序中支持Web Services的客户端开发,以及用ATL Server编写Web Services应用程序。

6.增加了新的OLE DB属性和类,这使得用户更加能够快速地进行数据访问。

7.增加属性化编程和ATL更新。所谓属性化编程,是指能够使用少量的代码迅速地建立COM组件,在最新Visual C++.NET开发环境中,还新增了一些属性,这些属性可以改变代码的行为,甚至可以通过插入一些额外的代码来完成一些基本的工作,例如ActiveX控件的执行、类厂的创建以及数据库命令的格式化处理等。

Visual C++.NET中的新功能还包括C++属性、托管扩展、ATL Server,以及大量的新库、IDE和编译器优化与增强功能。

4.1.3 Visual C++.NET的新功能

1.C++属性:C++属性允许公布式编程,它们可以通过尽可能减少重复样板源代码来简化开发工作。开发人员可以通过应用简单的属性标记,以XML Web服务形式公开新的和现有的ATL COM组件。C++属性标记的引入还减少了独立接口定义语言(IDL)模块的需要。

2.C++托管扩展:使用C++托管扩展,开发人员可以利用Microsoft.NET并合并下一代技术(包括资源管理、统一类型和组件远程处理)。使用.NET,开发人员可以获得用于无缝垃圾回收和减少程序复杂性的出色的内存管理技术。通过在进行有效的远程过程调用的同时使用.NET框架通用类型系统,开发人员可以利用以20多种支持.NET的语言中的任意一种写成的代码。

3..NET框架类库:Visual C++.NET开发人员还可以使用Microsoft.NET框架类库并利用强大的内置功能——包括一组丰富的集合类、网络支持、多线程支持、字符串和正则表达式类,以及对XML、XML架构、XML命名空间、XSLT、Xpath和SOAP的广泛支持。

4.ATL Server:当开发人员选择用C++编写部分Web应用程序时,他们通常出于性能或控制的原因考虑。ATL Server在一组简单和可扩展的ATL类中封装了开发高性能C++ Web应用程序的最佳做法供开发人员重用。ATL Server包括让Web应用程序和XML Web服务扩展到一个Web服务器群集内的多个CPU的功能。

4.1.4 Visual C++.NET增强了开发人员的能力

Visual C++.NET为开发人员提供了许多专业级功能,让他们能够为Windows和Web创建功能非常强大的应用程序和组件。自始至终,该工具都提供了帮助简化C++软件开发过程的功能。

应用程序向导为快速启动项目提供了强大的模板。其中包括的MFC和ATL应用程序框架库是最强劲、最有效和最流行的用于开发基于Windows应用程序的库,现在又针对Windows XP得到了增强。这些功能与专业级编译器和高级调试器集成在一起,共同提供了一致和有效的开发体验。

C++是全世界最流行的语言之一,通过Visual C++.NET,开发人员能够享用世界级的C++开发工具。C++是一种可互操作的基于标准的语言,而C++技能也可以在多个计算环境和社区间利用。

4.2自动化测试工具的主界面功能简介

新建一个MFC应用程序项目TheTree,利用系统默认生成的窗体作为主界面,并为其添加主菜单控件和其他控件。如图4-1所示,主界面视图主要为分为左右两视图,左边为树形视图,右边为列表框视图。主界面中功能主要分为5类:录制脚本,主要负责录制鼠标和键盘操作,生成测试脚本;打开脚本,主要负责管理脚本和信息;回放脚本,根据读取的脚本信息进行自动化测试;日志管理,主要负责日志窗口的打开与日志的显示,并且能够有选择的打开已生成的日志文件;帮助,显示本自动化测试工具的版本信息和开发环境。

图4-1自动化测试工具的主界面

图4-2自动化测试工具的录制界面

图4-3自动化测试工具的脚本示例

如果您在计算机领域有任何疑虑或不确定的地方,请毫不犹豫地与老师交流噢,我们期待着为您提供有针对性的建议和指导。您的问题和讨论对我们来说都非常重要。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值