自动化测试工具论文VISUAL C++.NET毕业设计论文.doc

上传人:laozhun 文档编号:2385465 上传时间:2023-02-17 格式:DOC 页数:46 大小:373.50KB
返回 下载 相关 举报
自动化测试工具论文VISUAL C++.NET毕业设计论文.doc_第1页
第1页 / 共46页
自动化测试工具论文VISUAL C++.NET毕业设计论文.doc_第2页
第2页 / 共46页
自动化测试工具论文VISUAL C++.NET毕业设计论文.doc_第3页
第3页 / 共46页
自动化测试工具论文VISUAL C++.NET毕业设计论文.doc_第4页
第4页 / 共46页
自动化测试工具论文VISUAL C++.NET毕业设计论文.doc_第5页
第5页 / 共46页
点击查看更多>>
资源描述

《自动化测试工具论文VISUAL C++.NET毕业设计论文.doc》由会员分享,可在线阅读,更多相关《自动化测试工具论文VISUAL C++.NET毕业设计论文.doc(46页珍藏版)》请在三一办公上搜索。

1、目录摘要1Abstract2第一章 前言31.1概述31.1.1开发背景31.1.2开发的现实意义31.2论文结构4第二章 自动化测试工具的研究概述52.1自动化测试工具基础52.1.1自动化测试依据52.1.2自动化测试工具设计的一般原则52.2自动化测试工具简介52.2.1 IBM Rational62.2.2 QuickTest Professional62.3自动化测试工具特点72.3.1自动化测试的优点72.3.2自动化测试存在的问题72.3.3自动化测试的优缺点对比82.4自动化测试工具的应用与发展方向9第三章 基于UML的自动化测试工具分析与设计103.1自动化测试简介103.1

2、.1概述103.1.2自动化测试工具的模块分析103.1.2.1录制模块113.1.2.2脚本模块113.1.2.3对象交互模块113.1.2.4日志模块113.2需求模型113.2.1定义活动者113.2.2定义用例113.3动态模型133.3.1回放脚本的UML的交互图133.3.2回放脚本的UML的状态图和活动图143.3.2.1 UML状态图143.3.2.2 UML活动图163.4本章小结16第四章 录制模块与对象交互模块的程序实现174.1开发工具Visual C+.NET174.1.1 .NET概述174.1.2 Visual C+.NET的新特性174.1.3 Visual C

3、+.NET的新功能184.1.4 Visual C+.NET增强了开发人员的能力194.2自动化测试工具的主界面功能简介194.3录制模块204.3.1钩子函数的安装和卸载204.3.2获取鼠标点击的窗口的窗口信息234.3.3生成测试脚本244.4脚本管理模块244.4.1脚本技术254.4.2脚本结构254.5对象交互模块264.5.1用于保存脚本信息的类AutoFind264.5.2查找定位对象274.5.3操作对象304.6日志模块314.7本章小结32第五章 结论33参考文献34致谢35摘要自动化测试工具的开发主要针对的是实际软件测试需求,从而减少人工测试的工作量,大大增加在有限的时

4、间内的测试,并且增强测试的质量。我们开发的自动化测试工具是一个用户界面自动化测试的工具。它分为录制模块、脚本模块、对象交互模块和日志模块,同时程序的执行也是按照这个流程进行。其中对象交互模块为内部模块,衔接脚本管理和日志管理两个模块,本身没有界面显示。经过分析,我们使用Microsoft公司的Microsoft Visual Studio.NET开发工具,利用其提供的各种面向对象的开发工具,尤其是界面窗口这一能方便而简洁操纵对象,首先使用UML建立自动化测试工具的模型,然后在已建模型的基础上,以VC+.NET为开发工具对该工具进行实现,并不断修正和改进来不断满足用户需求。关键词:自动化测试,

5、对象交互, 录制, UML AbstractTest 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 th

6、at 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

7、 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 convenien

8、tly 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, Re

9、cord, UMLWritten by Zhu YingwenSupervised by Zhang Guangquan第一章 前言1.1概述软件测试自动化,已经成为国内软件工程领域一个众所周知的课题;不言而喻,软件测试从业者都意识到软件测试这项工作走向成熟化、标准化的一个必经之路就是要实施自动化测试。1.1.1开发背景软件必须通过测试才能确保其在应用环境中正常工作。软件测试应能有效地发现软件中的任何缺陷,同时软件测试也应是高效的,尽可能地占有时间少且开销小1。面对软件的规模越来越大,应用的复杂度和集成性越来越高,各种新的软件开发技术不断应用,那么,如何提供高效、有效性的测试,是软件测试技术面

10、临的巨大挑战。如今的软件测试行情,正处在群雄逐鹿的混战岁月,每个人、每个有测试部门或从事测试业务的企业,都该多多借鉴国内外先进的测试经验,参考业界流行的行业标准,找到适合自己团队的测试方法和模式,同时开发一些辅助测试的工具,创造更大的社会价值。从目前的测试工具来看,以国外品牌居多,选择测试工具当然也要根据自己的需求。虽然测试工具很多,但是针对性却不尽相同,有针对功能的,有针对源代码的,有针对压力负载测试的,等等。在针对性相同的工具中再进行比较,这些工具往往大同小异,最好先进行试用,当然也可以咨询专业的测试机构,无论如何,满足自己需要的才是最好的。1.1.2开发的现实意义自动化主要是指一个黑盒、

11、自动回放这样一些东西,取决于一个很好的流程。一个测试管理的流程,取决于相对稳定的需求。自动化测试可以大大减少测试开销,同时大大增加在有限的时间内的测试1。从各种测试工具的开发趋势来看,自动化测试是发展主流。实施软件测试自动化的理由分析:首先,测试人员的工作比以往任何时候都更加困难,因为公司和组织希望以更快的速度和更低的成本开发出高质量的应用程序。此外,在很多项目中,测试人员的所有任务实际上都是手动处理的,而实际上,有很大一部分重复性强的测试工作,是可以独立开来自动实现的。还有,在大型项目中测试团队和其他的团队之间没有足够的合作,无法促进彼此的工作。最后,从个人角度来说,测试人员通常很难花费大量

12、时间来学习新技能;这是目前国内测试从业者的现状,太多的企业为了节约成本而将刚刚走出校门的毕业生作为测试工程师,他们每日做着繁忙的重复工作,又基于自身技能的不足,不知从何处入手。可以说,实施测试自动化是软件行业一个不可逆转的趋势,如果在这个领域走在了前列,无论从企业的核心竞争力还是个人的工作技能来说,都有巨大的优越性。1.2论文结构全文共分为五章。第一章简述了自动化测试工具的开发背景以及开发的现实意义;第二章对QuickTest Professional和Rational Robot等目前主流的自动化测试工具进行深入的研究,了解自动化测试工具的工作原理与工作流程;第三章首先对自动化测试工具进行需

13、求分析,明确需要实现的功能,然后用UML对自动化测试工具进行模块划分,建立其需求模型和动态模型;第四章介绍了自动化测试工具的代码实现过程,包括录制模块、脚本模块、对象交互模块、日志模块。其中详细介绍了笔者负责开发的录制模块和对象交互模块;第五章总结了本文的工作。第二章 自动化测试工具的研究概述2.1自动化测试工具基础2.1.1自动化测试依据首先,要有良好定义的测试策略和测试计划(知道要测试什么以及什么时候测试),对于自动化测试,你要有一个能够被识别的测试框架;其次是能够确保多个测试运行的构建策略,如果多平台环境需要被测试,必须拥有运行测试的硬件,并且拥有关注在自动化过程上的资源;最后,被测试系

14、统是可以实施自动化测试的。2.1.2自动化测试工具设计的一般原则1. 使最重复性的任务实现自动化。2. 使传统上能发现最多错误的任务实现自动化。3. 实现测试的模块化以使得可维护性更好,可在其他项目中重复使用。4. 编写有意义的测试日志。5. 根据测试需求,有针对性。2.2自动化测试工具简介自动化测试工具应该分为性能测试、功能测试、单元测试、测试管理几类。目前绝大部分应用软件都是基于GUI(即Graphics User Interface图形用户界面)进行设计开发,所以在产品的测试活动尤其是功能测试活动中,GUI测试将占到非常大的比率,GUI测试质量和效率是整个产品质量提升和成本降低的关键。我

15、们知道大部分软件产品都有必不可少的人机交互界面MMI,而且它的功能也基本上是通过人机交互操作来体现和完成的,所以我们可以说软件产品的GUI测试在整个产品测试中占有非常重要的地位。下面介绍几种目前市场上的主流的黑盒测试工具,其中具有代表性的是Rational Robot和QuickTest Professional。2.2.1 IBM RationalRational Robot图形用户界面(GUI)的功能测试自动化。可以对使用各种集成开发环境(IDE)和语言建立的软件应用程序,创建、修改并执行自动化的功能测试、分布式功能测试、回归测试和集成测试。IBM Rational Robot是一种可扩展

16、的、灵活的功能测试工具,通过编写脚本的方式提供自动化测试特性。其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、

17、C#、J#、Managed C+,允许在记录时查看和编辑测试脚本。2.2.2 QuickTest ProfessionalQuickTest Professional是一款先进的自动化测试解决方案,用于创建功能和回归测试。它自动捕获、验证和重放用户的交互行为。为每一个重要软件应用和环境提供功能和回归测试自动化的行业最佳解决方案。QuickTest Professional的互动式的报告工具通过提供详尽的、易读的报告(其中会列出在测试中发现的差错和出错的位置)来解释所得的结果。这些报告对在测试运行中发生的重要事件进行描述,如出错内容和检查点等。点击按钮,您还能进一步获取任何未被包括在此测试范围内

18、的错误的详尽资料。突出特点:1. 具有行业领先的便于使用的特性,以及支持提前配置环境的功能,确保了快速的投资回报。2. 可独立运行,也可以同Mercury Business Process Testing和Mercury质量中心集成。3. 引进了QuickTest Professional 8.0中新一代的“零配置”关键词驱动测试技术,从而实现了快速建立测试、测试脚本更易维护,和更强大的数据驱动能力。4. 通过集成的数据表,可数据驱动任意对象、方式、检查点和输出值等。2.3自动化测试工具特点自动化测试工具是第三方测试,最大的特点在于它的专业性、独立性、客观性和公正性。对于软件开发商来说,经过第

19、三方测试机构的测试,不仅可以通过专业化的测试手段发现软件错误,帮助开发商提升软件的品质,而且可以对软件有一个客观、科学的评价,有助于开发商认清自己产品的定位。通过第三方测试机构公平、公正、公开的测试,把可视性差为特征的软件透明化,用量化的数据说话,为科技部和专家组择优支持提供了科学客观的依据,从而避免了以前的印象以及关系成分。2.3.1自动化测试的优点1. 对程序的新版本运行已有的测试。2. 可以运行更多更频繁的测试。自动化的一个显而易见的好处是可以在较少的时间内运行更多的测试。3. 可以执行一些手工测试困难或不可能做的测试。客户端用户通过定义可以自动回放的测试,随时都可以运行用户脚本1。4.

20、 更好地利用资源。将繁琐的任务自动化,如重复输入相同的测试输入,可以提高准确性和测试人员的积极性,将测试技术人员解脱出来投入更多精力设计更好的测试用例1。5. 测试具有一致性和可重复性。对于自动重复的测试可以重复多次相同的测试。6. 增加软件信任度。7. 降低风险。知道你测试了什么和没测试什么。2.3.2自动化测试存在的问题使用自动化测试的过程中可能会遇到很多问题,下面是一些普遍存在的问题:1. 不现实的期望。人们都期望新工具可以解决目前遇到的所有问题,可能会忽略取得持久效益所做的努力。如果期望不现实,那么无论工具从技术角度实现得多么好,都满足不了期望1。2. 缺乏测试实践经验。如果缺乏测试实

21、践经验,测试组织差,文档较少或不一致,测试发现缺陷的能力较差,在这种情况下采用自动化测试并不是好办法1。3. 期望自动化测试发现大量缺陷。4. 安全性错觉。测试软件没有发现任何缺陷并不意味着软件没有缺陷,因为测试可能不全面或测试本身就有缺陷。5. 自动化测试的维护性。测试维护的开销打击了测试自动化的积极性,当修改测试比手工重新测试更费劲时,测试自动化将被丢弃。6. 技术问题。测试工具与其他软件的互操作性,也是一个严重问题。除工具本身的技术问题外,用户也要了解被测软件的技术问题。7. 组织问题。自动化测试实施起来并不简单,每当使用一个新工具时,都需要调整管理方法以适应新的工作方式1。2.3.3自

22、动化测试的优缺点对比表2-1自动化测试的优缺点对比优点实际情况采取策略快速“脚本执行比人工执行快!”实际上,测试人员还需要做编写脚本,设置脚本如何运行,解释测试结果,讨论是否需要修复等工作。所有这些工作使得测试执行实际上只是整个测试工作量中的一个小部分。第一次的自动化测试项目将花费比纯粹的手工测试更多的时间。我们应该将自动化看成是改进测试人员效率的一个工具,而不是一个测试人员的完全替代物。利用测试脚本程序可以很快地将测试人员带到测试应用程序的同一水平线上。全面“你可以构建一个覆盖应用程序每一个功能的测试包!”自动化测试覆盖的功能点越多,测试程序就会变得越复杂。自动化测试战胜了消耗时间和测试深度

23、之间的平衡。在做自动化测试之前,详细地说明所有的功能点及其运行条件。利用手工测试的检查表可以发现许多人为的错误。测试人员要集中在测试深度上。可靠“每次测试脚本在运行时执行相同的操作,因此减少了人为的错误!”现在的技术只能识别那些已经被编程的部分并进行检查。需要人为地检查并且留意异常的事情。利用自动化做些繁复的工作,如扫描应用程序中期望的菜单标题等。并且为测试人员给出可能发生的问题的指示。可编程“你可以编写复杂的测试脚本来找出应用程序中隐藏的信息!”花在编写复杂测试脚本的时间往往不会像手工测试中“真实工作”的时间一样被检查。预算明确的用于自动化研究及开发的时间。可重用“你可以重复使用测试脚本来测

24、试应用程序的不同版本,即使用户界面发生了变更!”为了彼此可以更好的工作,需要在一个公共的架构上创建程序代码。强制使用命名规范及函数的公用库。设计模块中的测试脚本从一个共同的起点开始。并且追踪使用的测试数据。2.4自动化测试工具的应用与发展方向Microsoft这样的公司说过“大多数人认为我们是一个软件开发公司,其实我们是一家软件测试公司”的话,从中可以看出测试是非常重要的。考虑到软件行业的长远发展,自动化测试将是今后的一个发展方向。由此看来,自动化测试是有必要深入开展的。做测试工具比较专业的主要有Mercury,Segue,IBM Rational,Compuware,Empirix这几家公司

25、。测试工具要有可集成性、可扩展性以及平台兼容性。实际测试过程中,我们常常需要把测试流程,需求管理,缺陷管理,配置管理结合得更紧密,通过工具去统一管理。这些都是在选用工具时要考虑到的因素。如果有特别的测试需求,可以自行开发测试工具,实现比较有针对性的期望结果。第三章 基于UML的自动化测试工具分析与设计本章以自动化测试工具的开发为背景,探讨了UML在软件分析与设计中的应用。首先对该自动化测试工具进行需求分析,明确需要实现的功能;然后用UML用例视图对该自动化测试工具进行模块划分,建立需求模型;进而利用UML的交互图以及活动图和状态图等描述了该自动化测试工具的动态模型;最后,对UML在软件分析与设

26、计方面的应用进行了总结。3.1自动化测试简介以前的测试采用手工方法,测试内容繁多,工作量大,容易造成疏漏。引入自动化测试来取代目前严重影响测试效率的冗余繁复的人工过程,可以大大提高测试人员的工作效率,方便测试人员进行测试工作,消除了以前测试任务繁重,测试覆盖范围太小的局面,使测试工作高效化,全面化。本节说明我们所要研究与实现的自动化测试工具的特点及模块功能。3.1.1概述自动化测试可以使某些测试任务比手工测试执行高效得多,而重复的活动特别适合自动化1,因此自动化测试也应具有重用性。本自动化测试工具是针对测试工作的基本需求设计的,采用了面向对象的方法实现,需要指出的是我们将要分析与设计的是一个利

27、用测试脚本实现自动化测试的工具,所以具有很好的重用性。3.1.2自动化测试工具的模块分析本自动化测试工具参考了QuickTest Professional和Rational Robot等目前主流的自动化测试工具的做法,分成四个基本的功能模块:录制模块、脚本模块、对象交互模块、日志模块,这样的模块划分可以实现重复使用测试脚本进行自动化测试,能够满足自动化测试工具的重用性要求。3.1.2.1录制模块当用户使用应用程序时,本自动化测试工具会记录用户的鼠标和键盘操作,并产生测试脚本。3.1.2.2脚本模块当用户打开测试脚本,本自动化测试工具会读取脚本内容,并以树型结构显示脚本内容。3.1.2.3对象交

28、互模块当用户执行回放任务时,本自动化测试工具会自动查找定位窗口焦点坐标,并执行测试脚本所描述的鼠标和键盘操作。3.1.2.4日志模块当本自动化测试工具执行完测试脚本,会产生一个日志文件,包含测试的执行者、测试时间、测试内容、测试结果和测试失败原因等。3.2需求模型本自动化测试工具使用UML用例图来构建需求模型。3.2.1定义活动者本自动化测试工具是针对测试工作的基本需求设计的,设计的目的是为了提高测试人员的工作效率,所以活动者只有一个:测试人员。3.2.2定义用例使用UML用例图来构建自动化测试工具的需求模型,如图3-1所示。图3-1自动化测试工具需求模型该图由使用者和所驱动的用例以及用例之间

29、的相互关联组成,实箭线表示使用者和用例的关联。图3-2自动化测试工具回放脚本需求模型(UML交互图)一般来说,用例定义后需要为一些重要用例建立一些简单的行为模型,从而使该用例更为清晰,也为我们在建立结构模型时更容易把握哪些构件是应该抽象出来的。图3-2为初步建立的自动化测试工具回放脚本的UML交互图。3.3动态模型自动化测试工具的动态模型采用UML的交互图以及活动图和状态图来描述。下面以回放脚本为例,建立其UML的交互图以及活动图和状态图,并作出相应说明。3.3.1回放脚本的UML的交互图交互图描述模块间消息传递的连接关系及其空间分布,揭示模块之间的交互过程。它有两种类型:顺序图和协作图,前者

30、着重描述对象按照时间顺序的消息交换,后者着重描述各模块如何协同工作。我们将对回放脚本建立其UML顺序图。图3-3是回放脚本的UML顺序图,其交互事件如下:“Tester”通过选择“文件”菜单的“打开”选项或单击工具栏的“打开”按钮执行OnFileOpen()方法打开测试脚本,然后脚本模块执行ReadScript()方法读取脚本内容,并执行InsertTreeData()方法用树形结构显示脚本内容。“Tester”通过选择“操作”菜单的“回放”选项或单击工具栏的“回放”按钮回放脚本,然后脚本模块通过调用对象交互模块的FindWindow()方法查找定位对象,并通过执行WindowEvent()方

31、法操作对象。最后日志模块执行WriteLog()方法生成日志文件,并执行InsertTreeData()方法用树形结构显示日志内容。“Tester”也可以通过选择“操作”菜单的“日志”选项或单击工具栏的“日志”按钮执行OnLog()方法查看日志内容。图3-3自动化测试工具回放脚本动态模型(UML顺序图)3.3.2回放脚本的UML的状态图和活动图3.3.2.1 UML状态图状态图表现了一个对象(或模型元素)的生存史,显示触发状态转移的事件和因状态改变而导致的动作。下面,我们将采用状态图来描述回放脚本的动态模型,如图3-4所示。图3-4自动化测试工具回放脚本动态模型(UML状态图)1. “脚本管理

32、”状态当发生“打开测试脚本”事件时,就进入“脚本管理”状态。本状态的入口动作是“读取测试脚本内容”。然后进行“翻译测试脚本”动作,这个动作实际上要调用脚本模块中的多个方法来完成。完成后,其出口动作是“建立测试脚本树形分析器”。2. “对象交互”状态当在“脚本管理”状态时发生“回放测试脚本”事件,则转移到本状态。本状态的入口动作是“查找定位对象”,也就是将鼠标或光标定位到目标窗口上。然后进行“模拟鼠标键盘操作对象”动作,这个动作实际上要调用对象交互模块中的多个方法来完成。完成后,其出口动作是“将测试结果写入日志”。3. “查看日志”状态当“对象交互”状态结束时,就转移到本状态。本状态的动作是“建

33、立日志文件树形分析器”,然后直接转移到状态图的出口。3.3.2.2 UML活动图活动图的主要作用是表示软件的业务工作流和并发处理过程。图3-5是回放脚本的UML活动图。图3-5自动化测试工具回放脚本动态模型(UML活动图)3.4本章小结在本章中,我们使用统一建模语言UML描述了自动化测试工具的需求模型和动态模型。通过这个具体的应用可以看出,UML作为一种可视化建模语言和标准的表达工具,可以帮助我们记录和推进分析和设计的过程,并且完成设计以后便于进行回溯和交流。第四章 录制模块与对象交互模块的程序实现本章具体描述自动化测试工具的录制模块与对象交互模块的实现。首先介绍本自动化测试工具的开发环境Vi

34、sual 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并将这些服务集成在

35、一起之所需。对个人用户的好处是无缝的、吸引人的体验。Visual C+是Microsoft公司推出的目前使用极为广泛的基于Windows平台的可视化编程环境。最新版本Visual C+7.0(Visual C+.NET)与以往版本相比,增加许多新的特性,这其中包括:Web应用程序、新颖的C#编程语言以及ATL、DCOM、MFC、数据库等方面的增强,尤其是在开发环境界面上变化更大,它采用平面化的操作界面,这一点有点类似Visual Basic,它的亲和性使得更多的程序开发人员乐意接受。Visual C+ 7.0开发环境是平面化的界面,它除了具有和Windows窗口一样的标题栏、菜单栏、工具栏和状

36、态栏外,最主要的是还有不一样的窗口区。窗口区是由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,使它们能够共用一些常用的类,如CStrin

37、g。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开发环境中,还新增了一些属性,这些属性可以改

38、变代码的行为,甚至可以通过插入一些额外的代码来完成一些基本的工作,例如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+托管扩展

39、,开发人员可以利用Microsoft.NET并合并下一代技术(包括资源管理、统一类型和组件远程处理)。使用.NET,开发人员可以获得用于无缝垃圾回收和减少程序复杂性的出色的内存管理技术。通过在进行有效的远程过程调用的同时使用.NET框架通用类型系统,开发人员可以利用以20多种支持.NET的语言中的任意一种写成的代码。3. .NET框架类库:Visual C+.NET开发人员还可以使用Microsoft.NET框架类库并利用强大的内置功能包括一组丰富的集合类、网络支持、多线程支持、字符串和正则表达式类,以及对XML、XML架构、XML命名空间、XSLT、Xpath和SOAP的广泛支持。4. AT

40、L 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+软件开发过程的功能。应用程序向导为快速启动项目提供了强大的模板

41、。其中包括的MFC和ATL应用程序框架库是最强劲、最有效和最流行的用于开发基于Windows应用程序的库,现在又针对Windows XP得到了增强。这些功能与专业级编译器和高级调试器集成在一起,共同提供了一致和有效的开发体验。C+是全世界最流行的语言之一,通过Visual C+.NET,开发人员能够享用世界级的C+开发工具。C+是一种可互操作的基于标准的语言,而C+技能也可以在多个计算环境和社区间利用。4.2自动化测试工具的主界面功能简介新建一个MFC应用程序项目TheTree,利用系统默认生成的窗体作为主界面,并为其添加主菜单控件和其他控件。如图4-1所示,主界面视图主要为分为左右两视图,左

42、边为树形视图,右边为列表框视图。主界面中功能主要分为5类:录制脚本,主要负责录制鼠标和键盘操作,生成测试脚本;打开脚本,主要负责管理脚本和信息;回放脚本,根据读取的脚本信息进行自动化测试;日志管理,主要负责日志窗口的打开与日志的显示,并且能够有选择的打开已生成的日志文件;帮助,显示本自动化测试工具的版本信息和开发环境。图4-1自动化测试工具的主界面4.3录制模块因为需要在不同的进程间捕获窗口事件,所以有必要新建一个MFC DLL项目RecordScript,编写相应的鼠标和键盘的钩子函数专门用于捕获不同进程的鼠标和键盘事件,然后在项目TheTree中调用项目RecordScript中生成的DL

43、L文件。本自动化测试工具的录制界面如图4-2所示:图4-2自动化测试工具的录制界面4.3.1钩子函数的安装和卸载函数InstallMouseHook负责安装鼠标和键盘的钩子函数。void InstallMouseHook(HWND hwndMainWindow)hWindowHandle=hwndMainWindow;InitCalled=true;hMouseHook=SetWindowsHookEx(WH_MOUSE,(HOOKPROC)MouseFunc,(HINSTANCE)hInstance,0);MouseHookState=TRUE;/安装鼠标钩子函数hKeybdHook=Set

44、WindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeybdFunc,(HINSTANCE)hInstance,0);KeybdHookState=TRUE;/安装键盘钩子函数函数UninstallMouseHook负责卸载鼠标和键盘的钩子函数。void UninstallMouseHook(void)UnhookWindowsHookEx(hMouseHook);hMouseHook=NULL;MouseHookState=FALSE;/卸载鼠标钩子函数UnhookWindowsHookEx(hKeybdHook);hKeybdHook=NULL;KeybdHookSt

45、ate=FALSE;/卸载键盘钩子函数InvalidateRect(hWindowHandle,NULL,TRUE);UpdateWindow(hWindowHandle);需要指出的是项目RecordScript中的函数并不能直接被项目TheTree所使用,编写RecordScript.h的目的正是为了更方便的使用这些函数。#ifndef _RECORDSCRIPT_H_#define _RECORDSCRIPT_H_#include /DLL入口函数void InstallMouseHook(HWND hwndMainWindow);void UninstallMouseHook();/函

46、数定义typedef void(*INST)(HWND hwndMainWindow);typedef void(*UNST)();class CMouseHookDllCtrlpublic:CMouseHookDllCtrl(const char* pDllFileName):m_hDll(NULL),m_pfnInst(NULL),m_pfnUnst(NULL)m_hDll=LoadLibrary(pDllFileName); /安装钩子函数if(m_hDll!=NULL)m_pfnInst=(INST)GetProcAddress(m_hDll, InstallMouseHook);/获取鼠标钩子函数m_pfnUnst=(UNST)GetProcAddress(m_hDll, UninstallMouseHook);/获取键盘钩子函数elseMessageBox(NULL,Cannot load the hook dll!,Error,MB_OK);CMouseHookDllCtrl()if(m_hDll!=NULL)FreeLibrary(m_hDll); /卸载钩子函数m_hDll=NULL;INST m_pfnInst;UNST m_pfnUnst;private:HMOD

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号