




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
HUNAN UNIVERSITY毕业设计(论文)设计(论文)题目 基于QTP在项目中的测试 湖南大学软件学院湖南大学毕业设计(论文) 第 33 页基于QTP在软件项目中的测试摘 要本论文在自动化测试理论的基础上,通过研究自动化测试基本模型,将企业项目自身的测试平台Automation Test System(ATS)与第三方测试工具QTP(Quick Test Professional)结合起来,研究并实现了一种基于GUI(Graphics User Interface)的自动化测试系统。通过本系统,可以根据统一的规则编写测试用例,灵活高效的调制QTP执行测试脚本,并自动地收集结果信息形成测试报告。本系统将企业中的QTP 资源整合起来,通过统一平台去管理,不仅提高了QTP的使用效率,而且规范了测试流程。本系统以分层结构组织QTP测试脚本,将测试的业务逻辑与数据分离,不仅提高了新脚本的开发效率,同时降低了脚本的维护成本。本文主要完成下面的工作:(1) 理解自动化测试理论知识,掌握如何根据企业自身情况和需求,实施与其适应的自动化测试。(2) 分析自动化测试平台和自动化测试工具,研究如何通过统一的平台去整合各种测试资源,规范测试管理。(3) 研究并实现ATS与QTP的集成方案。(4) 通过实际例子介绍系统在实际工作中的应用。(5) 在结论部分总结本文,分析和展望自动化测试的前景。在公司测试的时候用过QTP去测试,就我自己看来,自动化测试虽然是刚发展起来的一种技术,它可以代替测试人员去完成那些重复性高并且枯燥的工作。在传统模式下, QTP作为自动化测试工具,但是当企业项目很多的时候,应用在各种不同的产品上的时候,不仅浪费测试资源,而且由于缺乏统一的平台去调度和组织测试脚本,导致测试的效率降低,自动化脚本的维护代价也非常高,严重影响了企业自动化测试的推广。关键词:QTP;自动化测试;ATSQTP-basedinsoftwaretestingAbstractIn this paper, it bases on the automation test theory and basic test mode, and realizes anutomation test system for Graphics User Interface (GUI) test through the integration ofAutomation Test System (ATS) and QTP. Through this system, the tester can develop test cases with the uniform rules, invoke QTP flexibly and efficiently, and get test results automatically.This system manages all the QTP with a uniform platform in the whole company. Therefore, itenhances the availability of QTP, and makes test process standardized and test job more efficient.The system organizes QTP test script with a hierarchy model. It splits test logic and test datafrom script, as a result it enhances the develop efficiency of new script and reduces themaintenance cost of old script. This paper mainly completes some works as follows:(1) Study automation test theory, know well how to realize automation test basing on the equirement of company.(2) Analyse automation test platform and tools deeply. Research on how to integratedifferent kinds of test resources and make test management standardized through the uniform platform.(3) Research and realize the integrated solution about ATS and QTP. (4) Introduce the application of QTP case automation test system in a company.(5) Indicate and analyse the future of automation test by summarizing the paper.In the company used QTP when testing , in my personal view ,Automation test is a new technology. It can complete the repeated and bald operationsinstead of tester. In the traditional mode, Quick Test Professional (QTP) is disposed to differentproduct lines as a test tool. And this mode does not only waste test resources, but also make test execution inefficient. Additionally, there is no uniform platform to invoke and organize test script,so it results to a high cost maintenance of test script, and affects the popularization of automationtest in a company.Keywords: QTP;Automation Test ;ATS目 录摘 要IAbstractII1.绪论11.1课题研究背景及目的11.2自动测试的原理和方法21.2.1 对代码进行分析21.2.2 捕获以及回放21.2.3 脚本技术31.3如何利用自动化测试31.3.1自动化测试的需求31.3.2自动化测试用例编写41.3.3自动化测试的开发52.QTP的简单介绍62.1QTP工作原理62.1.1 QTP在录制时标识测试对象62.1.2 QTP在运行时标识测试对象62.1.3 QTP管理测试对象72.2QTP在测试中的应用72.3当前存在的问题83.QTP自动化测试系统的研究设计与实现方法93.1本系统的主要模块93.1.1ATS简介93.1.2ATS系统结构93.1.3ATS与QTP的模块分析103.2系统的特点和优势123.3 研究QTP Case 自动化测试系统的具体实现133.3.1QTPConnector Class143.3.2QTPClient Class143.3.3QTP Server 监听器153.3.4QTP 主控154.QTP结合ATS的实际例子研究结果174.1 传统模式174.1.1 传统模式下的脚本组织174.1.2 传统模式下的测试执行174.1.3 传统模式下的问题174.2 QTP Case 自动化测试系统应用174.2.1 系统的脚本组织174.2.2 系统的测试执行184.2.3 实例应用总结195.结 论23致 谢25参考文献26附录I实例代码281.绪论随着计算机软件的产生软件测试也发展起来。在早期的软件开发的过程中,软件就是由程序员写的简单计算机程序代码3。因而,软件测试的含义比较狭窄,测试等同于调试1。软件测试的目的就是为寻找和纠正软件中的BUG(故障),这部分的工作常常由开发人员自己完成。但随着软件应用领域越来越广泛,其质量的优劣也日益受到人们的重视。质量保证能力的强弱直接影响着软件业的发展与生存。软件测试是一个成熟软件企业的重要组成部分,它也是一门专业,它是软件生命周期中一项非常重要且非常复杂的工作,对软件的质量保证具有极其重要的意义。1.1课题研究背景及目的课题研究背景:既然软件测试是软件开发过程的重要组成部分,那么用来确认一个程序的品质或性能是否符合开发之前所提出的一些要求是很必须的。软件测试就是在软件投入运行前,对软件需求分析、设计规格说明和编码的最终复审,是软件质量保证的关键步骤4。近年来,随着Internet技术的迅猛发展,计算机网络给人们的工作、学习和日常生活带来很大的便利,同时开发Web的技术也在不断更新。对于一个软件产品的评估,从用户角度来讲,程序的界面部分是相当受关注的,其中包括程序界面的交互能力、稳定性、健壮性等2。同时软件产品越来越复杂,通常一套软件包括很多的用户界面,每个界面里又有很多的控制对象,以及各种信息的交互,对于这样一套软件,即便测试只覆盖到部分界面,工作量也是相当大的。因此利用专业的自动化测试工具去完成这些测试是一个很好的选择。GUI (用户图形界面)测试的工具有很多,它们的原理基本上都相同,通过一个系统监视测试执行过程,并且记录下来每个动作步骤自动生成测试脚本,这是捕捉过程,在下次测试时回放脚本完成测试过程。如QTP、Winrunner 等,均提供通过GUI录制回放进行功能测试的功能。研究内容和目的:(一) 研究如何在企业项目中实施自动化测试。(二) 研究自动化测试平台的基本结构。(三) 分析自动化测试工具QTP 的工作原理和应用模式。(四) 研究和实现基于GUI 的自动化测试系统。论文的研究目的是通过学习当前的自动化测试理论和自动化测试工具,研究如何实现基于GUI 的自动化测试系统,可以为提高企业产品测试效率做参考。1.2自动测试的原理和方法软件测试自动化实现的基础是可以通过设计的特殊程序模拟测试人员对计算机的操作过程,操作行为,或者类似于编译系统那样对计算机程序进行检查。软件测试自动化实现的原理和方法主要有:直接对代码进行静态和动态分析,测试过程的捕获和回放,测试脚本技术,虚拟用户技术和测试管理技术8。1.2.1 对代码进行分析代码分析类似于编译系统,一般针对不同的语言去构造分析工具,在工具中定义类,对象,函数,变量等定义规则,语法规则。在分析时对代码进行语法扫描,找出不符合编码规范的地方,根据质量模型评价代码质量,生成系统的调用关系图等9-11。1.2.2 捕获以及回放捕获和回放则是一种黑盒测试的自动化方法。捕获是将用户每一步操作都记录下来。这种记录的方式有两种:程序用户界面的像素坐标或程序显示对象(窗口,按钮,滚动条等)的位置,以及相对应的操作,状态变化或是属性变化。所有的记录转换为一种脚本语言所描述的过程,以模拟用户的操作。回放时,将脚本语言所描述的过程转换为屏幕上的操作,然后将被测系统的输出记录下来同预先给定的标准结果比较。这可以大大减轻黑盒测试的工作量,在迭代开发的过程中,能够很好地进行回归测试。关于自动化测试中的“录制回放”技术,目前的自动化负载测试解决方案几乎都是采用 “录制-回放”的技术。所谓的“录制-回放”技术,就是先由手工完成一遍需要测试的流程,同时由计算机记录下这个流程期间客户端和服务器端之间的通信信息,这些信息通常是一些协议和数据,并形成特定的脚本程序 (Script)。然后在系统的统一管理下同时生成多个虚拟用户,并运行该脚本,监控硬件和软件平台的性能,提供分析报告或相关资料。这样,通过几台机器就可以模拟出成百上千的用户对应用系统进行负载能力的测试。1.2.3 脚本技术脚本是一组测试工具执行的指令集合,也是计算机程序的一种形式。脚本可以通过录制测试的操作产生,然后再做修改,这样可以减少脚本编程的工作量。当然,也可以直接用脚本语言编写脚本。脚本技术可以分为以下几类9,10:线性脚本是录制手工执行的测试用例得到的脚本。结构化脚本类似于结构化程序设计,具有各种逻辑结构(顺序,分支,循环),而且具有函数调用功能。共享脚本是指某个脚本可被多个测试用例使用,即脚本语言允许一个脚本调用另一个脚本。数据驱动脚本将测试输入存储在独立的数据文件中。关键字驱动脚本是数据驱动脚本的逻辑扩展。1.3如何利用自动化测试要想充分利用自动化测试,必须有效地利用规范化软件测试过程将自动化测试的特点发挥出来。1.3.1自动化测试的需求自动化测试脚本也是一种软件,它应该遵循软件开发的过程。(1) 分析每个需求,确定自动化测试开发的可行性。(2) 评估软件测试的价值和成本(人力和时间)及效果。如果成本太高,时间太长,工效不明显,就不属于自动化测试范围。(3) 选择适当的自动化测试工具(1oadrunner,TD,QTP 等)来满足不同的需求。不同的自动化测试工具有不同的特点,有的在数据驱动上优势明显,有的在GUI上简便,有的在环境通用性上便利。在特色的实现上要结合这些特点进行选择,必要时可以多个自动化工具混用。(4) 适用的测试过程包括功能测试,回归测试,压力测试等。(5) 将自动化测试的需求文档化可以节约人力,缩短开发周期,重点完成特定阶段的工作。1.3.2自动化测试用例编写(1) 指导测试的实施测试用例主要适用于集成测试、系统测试和回归测试。在实施测试时测试用例作为测试的标准,测试人员一定要按照测试用例严格按用例项目和测试步骤逐一实施测试。并对测试情况记录在测试用例管理软件中,以便自动生成测试结果文档。根据测试用例的测试等级,集成测试应测试那些用例,系统测试和回归测试又该测试那些用例,在设计测试用例时都已作明确规定,实施测试时测试人员不能随意作变动。(2) 规划测试数据的准备在实践中测试数据是与测试用例分离的。按照测试用例配套准备一组或若干组测试原始数据,以及标准测试结果。尤其像测试报表之类数据集的正确性,按照测试用例规划准备测试数据是十分必须的。除正常数据之外,还必须根据测试用例设计大量边缘数据和错误数据。(3) 编写测试脚本的“设计规格说明书”为提高测试效率,软件测试已大力发展自动测试。自动测试的中心任务是编写测试脚本。如果说软件工程中软件编程必须有设计规格说明书,那么测试脚本的设计规格说明书就是测试用例。(4) 评估测试结果的度量基准完成测试实施后需要对测试结果进行评估,并且编制测试报告。判断软件测试是否完成、衡量测试质量需要一些量化的结果。例:测试覆盖率是多少、测试合格率是多少、重要测试合格率是多少,等等。以前统计基准是软件模块或功能点,显得过于粗糙。采用测试用例作度量基准更加准确、有效。(5) 分析缺陷的标准通过收集缺陷,对比测试用例和缺陷数据库,分析确证是漏测还是缺陷复现。漏测反映了测试用例的不完善,应立即补充相应测试用例,最终达到逐步完善软件质量。而已有相应测试用例,则反映实施测试或变更处理存在问题。自动化测试用例必须具有较强的针对性,能够体现自动化测试的效率。手工测试注重手工操作的步骤,而自动化测试注重的是软件(脚本)运行过程,输入和输出。同时手工测试的预期结果是对每个操作步骤的验证,而自动化测试的预期结果是对自动生成报告的检查。自动化测试用例将手工测试步骤用软件执行过程代替,避免了多个用例重复操作。具有多数据组合,路径选择的覆盖性特点,完整度是可控的,而不是随机抽样的。自动化测试结果可以自动生成,不需要人工干预。1.3.3自动化测试的开发在需求的基础上要考虑实现自动化脚本代码的重用性和结构化。(一) 数据驱动设计。适用该方法的需求特征有:(1) 测试用例需要一些特定参数来表示特性。例如:网管软件中页面的测试,这些页面具有不同的标题,不同的指标个数等,将这些作为参数存放在数据矩阵中,脚本在加载这些参数后进行指定的一系列操作,完成不同页面测试。(2) 测试用例需要数据输入完成操作。数据驱动设计能够分离代码和数据,并充分重用代码,测试人员能够简单地编辑数据矩阵来设计不同的用例组合。如果用户界面变化了,也只需要稍稍修改命令序列,这时测试人员通过修改电子表格中数据要比重新编写代码来修改测试用例要方便一些。(二) 结构化框架设计。结构化框架通过共享函数库中的函数把被测试应用程序和测试脚本分离。共享函数的主要分为:(1) 定义每个应用程序的功能特征。类似于函数的重用,隐藏每一个组装的函数。(2) 定义命令或者测试工具语言的特征。封装函数是把其他函数封装在里面,可以通过修改封装函数,添加或者修改功能解决测试工具的缺陷,或者增强脚本语言的优势。(3) 定义小的、频繁操作的统一目标。它实现了一个操作的命令集合。脚本开发者不用关心其过程,只需要关注输入和输出。(4) 定义实用函数。可以创建一个用标准方法生成测试报告的函数,在开发脚本的时候把作为标准,在每个测试用例后边调用这个函数。2.QTP的简单介绍QTP-Quick Test Professional,是Mercury 公司推出的一个自动化功能测试工具,应用在软件的GUI 测试中,它可以为每一个重要的软件和环境提供功能和回归的自动化测试,QTP 采用关键字驱动的测试理念,能完全简化测试的创建和维护工作,能让您便捷地插入,修改,数据驱动(data-drive)和移除测试步骤,并且通过所集成的录制能力来捕获测试的步骤,并且自动生成脚本来描述测试过程,因此我们可以修改生成的自动化测试脚本,优化我们的测试过程。通过活动屏幕将文档和一个截屏相结合,它还可以自动引入检查点来验证应用的属性和功能点,比如确认输出量或检查链接的有效性。QTP 支持多种企业环境的功能测试,包括Windows、Web、.NET、Java/J2EE、SAP、Siebel、Oracle、PeopleSoft、Visual Basic、ActiveX、Mainframe terminal emulators 和Web services。2.1QTP工作原理QTP是基于录制回放的自动化测试工具,在测试初期,通过录制的方式记录下手工测试的步骤,并生成对应的VBS脚本。在后期的回归测试中,只需要回放脚本,就可以实现相同的测试。QTP标识测试对象的原理是其核心技术。2.1.1 QTP在录制时标识测试对象在录制过程中,QTP首先“观看”要录制的对象,然后将其作为测试对象进行存储,确定该对象符合的测试对象类。QTP会对测试对象进行分类,例如,标准 Windows对话框(Dialog)、Web按钮 (WebButton) 或 Visual Basic滚动条对象 (VbScrollBar)。然后,对于每个测试对象类,QTP都有一个始终要记住的强制属性的列表,当录制对象时,QTP始终记住这些默认的属性值,然后“观看”页面上其余的对象,对话框或其他父对象,以检查该描述是否足以唯一标识该对象。如果不足以进行唯一标识,QTP将向该描述中逐项添加辅助属性,直到经过编译成为唯一的描述为止,如果没有可用的辅助属性,或者那些可用的辅助属性仍不足够创建一个唯一的描述,QTP将添加一个特殊的顺序标识符(例如页面上或源代码中对象的位置)以创建唯一的描述。2.1.2 QTP在运行时标识测试对象在运行会话期间,QTP会搜索与录制时记住的测试对象的描述完全匹配的运行时对象。它需要找到与录制时用于创建唯一描述的强制属性和任何辅助属性完全匹配的对象。只要应用程序中的对象没有较大的改变,录制过程中记住的描述几乎总是足以使QTP 唯一标识出该对象。对于大部分对象,这种方法是适用的,但应用程序中包含的某些对象可能在后续运行会话期间很难标识,在这种情况下,QTP提供了一种“智能标识”机制。既当录制的描述不再准确时,QTP也能通过其“智能标识”机制使用排除过程来标识对象。即使测试对象属性的值有所改变,QTP的TestGuard 技术机制也能通过使用“智能标识”标识对象从而维护测试或组件的可重用性。2.1.3 QTP管理测试对象QTP基于一组测试对象属性来识别应用程序中的对象。它将发现的对象数据存储在对象库中。如果应用程序中的对象的一个或多个属性值与QTP用来标识该对象的属性值不同,则测试或组件可能会失败。因此,当应用程序中对象的属性值发生变化时,应修改相应的测试对象属性值,以便能够继续使用现有的测试或组件。因此“对象库”的维护和管理是提高QTP自动化脚本使用效率的关键。QTP中的“对象库”对话框可以显示当前组件,当前操作或整个测试(取决于创建测试时选择的对象库模式)中所有对象的树形结构。可以使用“对象库”对话框查看或修改库中任何测试对象的测试对象描述,或者将新建对象添加到库中。我个人认为QTP主要用在回归测试上。是来解放繁杂而又无聊的手工测试的。比如已经知道这一些功能点要用哪些步骤来测试,哪些地方要检查。用手工又费时又无聊,就用机器来代替人工。不是简单的录制和回放,而是来解放我们的双手的。 个人感觉测试是需要增强的,比如通过参数化或者编程的方式,当测试完善后,尤其是我觉得测试新版本时就会发现能节省你不少时间,因为很多软件的新版本与旧版本界面差异很小,所以那时就会体会到自动化测试的方便了,还有就是用自动化测试对于BUG的复现也很有帮助,你可以真正运行两个完全相同的测试,当数据量很大时优势就体现的很明显了2.2QTP在测试中的应用使用QTP开发自动化测试可以分为以下几个步骤:(1) 录制前的准备工作。确认应用以及QTP符合测试需求。确定如何对应用程序进行测试,如要测试那些功能,操作步骤,输入数据,预期的结果等。检查QTP设定。(2) 录制测试脚本。在网页上的每一步操作都会被QTP记录下来。(3) 加强测试脚本。在测试脚本中加入检查点,验证应用程序是否正确;将录制的固定值用参数取代,以便使用多组的数据测试应用程序;使用逻辑或者条件判断,可以进行复杂的测试。(4) 对测试脚本除错。确保测试脚本正常运行。(5) 在新版应用程序和网页上运行脚本。(6) 分析测试运行结果,查找程序问题。(7) 问题回报。如果安装了TD(Test Director),可以将问题回报到TD上。2.3当前存在的问题QTP是一个功能强大的自动化测试工具,但如果面临的测试产品种类比较多时,单一的QTP测试模式存在一些局限:(1) 各个产品的测试人员在各自的QTP环境中开发自动化测试脚本,这些脚本都保存在各自的PC上,缺少统一的平台去管理和维护这些脚本。(2) 自动化脚本都在各自的QTP环境下执行,导致一些具有相同功能的方法,函数和模块不能共享,降低了脚本开发效率,还增加了脚本的维护成本。(3) 当前的自动化测试脚本中,测试的业务逻辑和测试的数据都混合在一起,没有一个规范的脚本组织结构,使得脚本的后期开发和维护成本都很大。(4) QTP的测试执行虽然是自动化,但其测试的调度还是手工的。测试人员需要手动启动QTP,配置QTP选项,加载所需要的脚本,执行测试,收集测试结果,产生测试报告。单一的QTP测试模式无法实现测试管理的自动化。3.QTP自动化测试系统的研究设计与实现方法本论文是设计一种自动化测试模型,将ATS的测试管理与QTP的测试执行结合起来,实现了一种基于GUI的自动化测试系统。系统设计的总体结构如下:图3.1 系统设计的总体结构3.1本系统的主要模块我在研究的过程过,将本系统的实现分为ATS和QTP Server这两部分。3.1.1ATS介绍ATS:(Automated Testing System)自动测试系统。它是与应用软件对象无关的自动化测试平台4。不同类型的被测对象的测试Case 都能够以相同的方式进行管理。从理论上来说,ATS 是对不同的测试对象的测试行为进行了抽象和概括,因此具体测试对象类型相关联的接口则是需要根据不同应用而专门提供。3.1.2ATS系统结构ATS 是B/S 结构,由四个子系统组成:ATS Web Server,ATS Finite State Machine(ATS FSM),ATS Execution Server,DataBase。作为一个分布式系统,ATS 允许在测试环境中同时配置多台ATS Web Server,ATS FSM 和ATS Execution Server,可以很方便的扩展其性能,但目前只支持一个DataBase。系统结构如图: 图3.2 ATS系统结构图3.1.3ATS与QTP的模块分析系统中的ATS部分负责实现测试用例和基本函数库的开发,维护和管理。基本函数库中包括用于连接QTP Server,调用QTP等的函数。主要包括的模块有:(1) QTPConnector Class。这个类用来封装连接QTP Server,调用QTP等方法,它提供的API会发布到ATS 上面给测试人员使用,属于用户层的API(Application Programming Interface,应用程序编程接口)。主要有两个公共方法:init 和Call_Case。1. Init()该方法在类初始化的时候被调用,负责连接QTP Server,并根据传入的参数创建测试执行所需要的配置文件。配置文件包含整个测试中所需要的一些公共信息。方法需要的参数: QTPServerIP:远程QTP Server 的IP 地址。 QTPServerPort:创建Socket 连接所使用的端口号。 QTP_Case_Lib:测试所需要的QTP Case 函数库在QTP Server 上的路径。 QTP_Load_Lib_Path:测试所需要的业务函数库和基本函数库在QTP Server 上的路径。 QTP_Repository_Path:执行测试脚本所需要的对象仓库在QTP Server 上的路径。 Args:其它附加参数,可以自己手动去选择。方法实现的步骤: 创建基础类(QTPClient Class)对象。 调用基础类的Init 方法,并传入参数。2. Call_Case()用这个方法用来实现调用QTP 去执行指定的QTP Case 函数。当ATS 与QTP 建立Socket连接后,可以通过Call_Case 实现对QTP 的调用,执行指定QTP Case 函数,并收集结果信息传递给ATS。方法需要的参数: FunctionName:QTP Case 函数的名字。 Args:执行QTP Case 函数所需要的参数列表。格式为:“ParameterName ParameterValue” 。如果有多组参数, 则每组参数之间用空格隔开“ParameterName ParameterValue” “ParameterName ParameterValue”。方法实现的步骤: 调用基础类(QTPClient Class)的runQTP 方法,并传入参数。 返回执行结果信息。(2) QTPClient Class。这个类用来提供一些基础函数,QTPConnector在连接QTP Server和调用QTP的过程中都需要使用到。其主要功能是:创建连接,运行QTP,分析结果文件等。系统中的QTP Server 部分负责Case 执行和基本管理,实现Case参数输入,测试执行和结果输出功能,它相对独立,可以单独完成测试工作,也可以与ATS连接,被ATS调用。主要包括的模块有:(1) QTP Server监听器。运行在QTP Server上的控制台程序,在本系统中作为Socket Server来实现QTP Server 与ATS 的信息交互。其工作流程结构如下图:图3.3 QTP Server监听器工作流程图(2) QTP主控。对于每一个来自ATS 的Call_Case 请求,QTP主控负责获取该QTP Case函数执行所需要的参数,调用QTP 执行该函数,并收集结果信息。是运行在QTP中的控制QTP Case函数执行的模块。(3) QTP Case函数库。本系统将QTP执行测试所需要的自动化脚本以QTP Case函数的形式组织起来,形成QTP Case函数库。一个Call_Case请求就是对一个指定QTP Case函数的调用。3.2系统的特点和优势目前,国外自动测试系统正朝着通用化,标准化,网络化和智能化的方向迈进14。构建通用化自动测试系统,实现测试软硬件资源共享;采用开放的商业标准和工业标准,减少测试系统软硬件的开发和升级费用;构建高性能测试系统,优化测试序列,缩短测试时间;构建网络化测试系统,实现测试过程的远程控制与远程故障诊断。对于企业来说,自动化测试主要包括两个方面,自动化测试的管理和自动化测试的技术。只有两个方面同时发展,才能将自动化测试的收益最大化。因此,本系统将研究怎么能够将自动化测试管理与自动化测试技术结合起来,并且必须具有以下一些特点:(1) 分布式。自动化测试系统是要面向企业中所有测试人员的,考虑到工作区域的限制,系统必须具是分布式,容易扩展。(2) 开放式。系统必须提供开放的函数调用接口。企业中产品种类繁多,针对不同的产品和需求,都需要开发功能不相同的函数。因此,系统必须提供开放式的接口来实现对这些函数调用。(3) 健壮性。在产品测试过程中会出现各种异常错误导致测试失败,这些时候,系统需足够健壮并且要有强大的容错机制来收集错误信息并继续执行另外的测试。本系统就是基于以上这些需求和当前自动化测试系统模型来实现的,系统采用开放式,模块化设计,不仅提供了对GUI 测试的强大支持,同时可以通过企业内部网络,实现测试资源共享。3.3 研究QTP Case 自动化测试系统的具体实现首先ATS 将suite 配置信息通过QTP API 传给QTP Server 上的监听程序,监听程序创建临时工作目录,并根据配置信息和配置文件的格式,生成标准的配置文件。把工作目录和配置文件路径传给QTP 主控程序,并启动QTP 主控程序。QTP 主控程序根据配置文件的信息调用相应的QTP Case 函数完成测试,并把这个函数的运行结果写回配置文件,再由QTP 监听程序将结果信息通过传到ATS,在ATS 上显示结果信息。系统中各个模块间的工作流程如图17:图3.4 系统中各个模块间的工作流程图3.3.1QTPConnector ClassATS 要求能被其调用的API都必须使用iTcl语言,并以类方法的方式实现。在本系统中,QTPConnector Class就是用来封装这些共用API的类。该类中提供的public方法会被发布到ATS上被测试人员使用。QTPConnector Class主要是用来定义提供给我们的接口,并不负责具体的实现,而是通过在方法内部通过调用其它基本类中的方法来实现具体的功能。3.3.2QTPClient Class本系统设计的时候采用模块化的设计模式,将连接QTP Server,调用QTP 等功能中所需要的基本操作都模块化,并在基本类QTPClient Class中实现,然后通过调用基本函数模块来实现所需要的功能。QTPClient Class提供的方法只用于被用户层的API调用,不会发布到ATS上供我们使用。这个类用于具体实现连接QTP Server和调用QTP过程中所需要的各个函数。3.3.3QTP Server 监听器该模块是系统中ATS与QTP交互的接口,主要负责实现以下一些功能:(1) 接收传递过来的参数, 包括QTP_Case_Lib , QTP_Load_Lib_Path ,QTP_Repository_Path,Suite参数,Case函数名,Case参数信息,创建一个临时工作目录,并按照参数配置文件的格式,构造一个参数配置文件,将接收到的参数信息写入参数配置文件。(2) 启动QTP运行主控Test(放在特定路径下),并将临时工作目录的路径传给主控Test,主控Test根据此信息,能正确找到参数配置文件,加载各库文件,加载仓库文件, 然后运行Case函数,并返回结果。(3) 等待主控Test运行完成后,从参数配置文件里读取Case Result信息,传回给ATS 的QTPConnector对象。3.3.4QTP 主控本论文通过QTP主控来完成每个Case函数的执行,它负责实现从配置文件中读取执行过程中所需要的参数并加载到QTP的DataTable中,加载基本函数库,业务函数库和对象仓库文件到QTP的执行环境中,调用QTP内核执行指定的Case函数,最后将结果输出到配置文件中。QTP主控是需要直接运行在QTP环境中的,所以采用VB脚本语言作为开发语言。本论文试脚本的业务逻辑和测试数据分离开来,将能被多个测试共享的子业务逻辑抽分出来组成测试业务函数库,将所需要的基本函数组成测试基本函数库,QTP Case 函数调用业务函数库中的业务函数,组成QTP Case 函数库。将整个测试脚本以分层结构组织起来。脚本的组织结构下图:图3.5 脚本的组织结构图4.QTP结合ATS的实际例子研究结果以iTest测试为例子来研究系统应用的具体实现。iTest测试包括嚎鸣音测试,拨号音测试,电压电流测试等8个功能测试,本论文通过对比两种不同模式,来研究嚎鸣音和拨号音测试在本系统的具体实现,其他6个种类的测试也可以用同样的方式实现。我这里只选择其中的两种。4.1 传统模式4.1.1 传统模式下的脚本组织在传统模式下,测试脚本用Action 来组织。因此在以前的测试中,嚎鸣音和拨号音的测试脚本都在一个Action 中实现,测试脚本见附录。4.1.2 传统模式下的测试执行在传统模式下,我先需要手动启动QTP,加载包含iTest测试Action 的脚本,然后选择运行iTest测试的Action,才能执行iTest测试。在测试执行过程中,我需要监测脚本运行情况,出现错误时,及时判断错误原因,然后修改脚本,恢复脚本执行环境,才能使脚本继续运行。4.1.3 传统模式下的问题(1) 先得手工发起测试。启动QTP和加载指定脚本这些操作都需要我手动来完成,这导致测试工作只能在白天进行,不能充分利用晚上时间来提高效率。(2) 脚本运行期间的错误需要人工处理。测试的执行过程虽然是自动化,但如果出现错误后,就需要我手工处理错误才能使脚本继续运行下去,所以整个执行过程都需要实时监测运行情况,不能充分节省测试的人力资源。(3) 测试结果需要自己手工汇总。需要自己监测QTP执行过程,并根据执行过程中出现的错误,手工产生测试报告,增加了测试工作量。4.2 QTP Case 自动化测试系统应用4.2.1 系统的脚本组织在本论文中,我将传统的测试脚本用分层结构组织起来。因此需要编写相应的业务函数和QTP Case函数。(1) 业务函数。首先从传统脚本中将网管的登录的脚本,嚎鸣音的测试脚本和拨号音的测试脚本拆分开,并将测试执行中需要的数据参数化,然后封装成不同的业务函数,保存到NMS_iTest_Service.VBS 文件中。所创建的实现脚本见附录。(2) QTP Case函数。根据业务函数编写QTP Case函数。QTP Case函数能被ATS 调用,其用于调用对应的业务函数,并传入执行过程中所需要的参数。将编写好的QTP Case 函数保存到NMS_iTest_Case.VBS 文件中。所创建的实现脚本见附录。(3) 对象仓库文件。从传统脚本中导出用于执行iTest 测试脚本的对象仓库文件,保存为NMS_iTes.TSR 文件。(4) 配置QTP Server。在QTP Server上创建执行iTest目录,并将执行过程中所需要的文件复制到对应目录下。有以下几个步骤:在X:QTP_ReleaseQTP_LibNMSCase_Lib下创建NMS_iTest_Case目录,并将NMS_iTest_Case.VBS 文件复制到该目录下。将业务函数库NMS_iTest_Service.VBS 复制到X:QTP_ReleaseQTP_LibNMSService_Lib目录下。将NMS_iTes.TSR 文件复制到X:QTP_ReleaseQTP_LibNMSRepository目录下4.2.2 系统的测试执行在完成QTP Server的配置后,需要在ATS上完成测试用例的开发,下面是我开发时的步骤:(1) 创建用于开发iTest测试用例的iTestSuite。Suite 是一组相关测试用例的集合。在Suite中添加QTPConnector 类,并传入以下所需要的参数: QTPServerIP: “QTP Server IP” QTPServerPort: “Socket Port” QTP_Case_Lib :“X:QTP_ReleaseQTP_LibNMSCase_LibNMS_iTest_CaseNMS_iTest_Case.VBS” QTP_Load_Lib_Path :“X:QTP_ReleaseQTP_LibNMSService_LibNMS_iTest_Service.VBS;X:QTP_ReleaseQTP_LibNMSBase_LibNMS_Base.VBS” QTP_Repository_Path :“X:QTP_ReleaseQTP_LibNMSRepositoryNMS_iTes.TSR”(2) 创建用于实现测试用例的Test Case 。在这里创建了2个Test Case :ApplyHowlerToneTestCase,DialToneTestCase,分别用于实现嚎鸣音和拨号音的测试。每个Test Case 中Setup,Main,Cleanup 的实现如下: ApplyHowlerToneTestCaseSetup:通过QTPConnector 类提供的Call_Case方法调用QTP Case函数“LoginNMS”,并传入所需要的参数。Main:通过QTPConnector类提供的Call_Case方法调用QTP Case函数“StartApplyHowlerTone”,并传入所需要的参数。Cleanup: 无操作。 DialToneTestCaseSetup: 通过QTPConnector 类提供的Call_Case 方法调用QTP Case 函数“LoginNMS”,并传入所需要的参数。Main: 通过QTPConnector 类提供的Call_Case 方法调用QTP Case 函数“StartDialToneTest”,并传入所需要的参数。Cleanup: 无操作。本系统在每个Case的Setup中都调用“LoginNMS”。QTP是GUI测试工具,其测试的执行依赖初始环境。为了在测试出现错误的情况下不影响下一个Case的执行,本系统通过在Setup 中调用“LoginNMS”来保证每个Case执行前的初始环境。(3) 创建iTestJob。最后在ATS 上创建一个iTestJob,用于执行iTest Suite。通过iTestJob,可以指定iTest Suite 被执行的时间和次数。4.2.3 实例应用总结本论文改变了QTP传统使用方式,将自动化测试平台ATS与QTP结合起来,解决了传统模式下存在的一些问题:(1) 测试可以自动发起。通过在ATS上创建Test Job,可以指定测试开始执行的时间和次数。在应用本系统后,我们可以在白天创建一个Test Job,并指定该Job在晚上的某一时间开始执行,则ATS会在指定的时刻自动运行该Job,调用QTP完成测试。(2) 测试中的错误可以自动处理。ATS通过Test Case来实现测试用例,如果某个Test Case在执行过程中出现错误而导致测试失败,ATS的错误处理机制会自动去执行下一个TestCase。这样就不会因为前面某个步骤的失败而导致后面的测试都无法执行。(3) 测试的结果报告可以自动生成。ATS会收集并统计每个Test Case的执行情况,并根据结果信息生成Excel文件。这个新系统被应用在网管,宽带接入网关等多个产品线的测试中,极大的提高了测试效率。下面以网管系统中的告警管理模块为例子,从二个方面证明本系统在实际应用中的效果:(1) 脚本的开发。告警模块是网管系统中需求变动较多的模块。传统的脚本由于没有实现分层的组织结构,业务逻辑都混合在一起,相互之间的耦合度很高,所以当增加新的功能时,都需要在以前脚本的基础上做修改和添加,导致新脚本的开发效率很低。在应用本系统之后,只需要添加少量函数到业务函数库和QTP Case函数库中,然后通过组织调用QTP Case函数就可以完成新增功能的脚本。本系统以函数库的形式共享公共函数,减少了不必要的开发和调试,所以不仅缩短了开始时间,也提高了脚本质量。以开发100个新测试用例的脚本做例子,根据统计,在传统模式下所需要的时间是7 天/1 人。在应用了本系统之后,所需要的时间是3天/人,而且脚本运行的更稳定。本论文将两种模式下新脚本的开发时间做了对比,得出的结果如下图:图4.1 两种模式下新脚本的开发时间对比图从图中可以看出,应用新系统后,新脚本的开发效率得到了很大提高,而且随着Case数量的增加,系统的优势表现得更明显。(2) 回归测试。由于自动化的带来的好处更多的表现在回归测试中,它可以通过回放脚本的方式,代替测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 职工代表选举结果的报告
- 健康知识竞赛试题(附答案)
- 无线网络优化模拟题及参考答案
- 灌区节水改造工程可行性研究报告
- 五年级语文第二单元教学计划指导
- 动物源性食品跨境电商搭建创新创业项目商业计划书
- 为农民无公害蔬菜市场营销培训创新创业项目商业计划书
- 2025年五年级语文下册素养提升计划
- 二级建造师考试题及答案
- 电竞战队管理系统创新创业项目商业计划书
- 《铁路工务维修现场实战技巧》课件 任务3.12 钢轨钻孔作业
- 《配电箱安装》课件
- 【MOOC】中国传统艺术-篆刻、书法、水墨画体验与欣赏-哈尔滨工业大学 中国大学慕课MOOC答案
- 2025届湖南省永州市高三年级上册第一次模拟考试物理试题(一模)附答案
- 《汽车发动机构造与检修(第2版)》课件 王雷 项目1、2 汽车发动机基本知识;发动机曲柄连杆机构构造与检修
- 腹腔镜风险评估及应急预案
- 【追星文化对大学生消费行为及观念的影响问卷调研报告(含问卷)(论文)11000字】
- 2025届高三数学一轮复习备考经验交流
- 中核集团中辐院招聘笔试真题2022
- 泡沫箱子合同范本
- 智能制造装备与集成 课件 02 智能制造架构与装备
评论
0/150
提交评论