《软件工程毕业设计(论文)自动化测试在J2EE项目中的应用.doc》由会员分享,可在线阅读,更多相关《软件工程毕业设计(论文)自动化测试在J2EE项目中的应用.doc(37页珍藏版)》请在三一办公上搜索。
1、 XX大学学士学位论文自动化测试在J2EE项目中的应用 本科生:林 琛 学 号:000298 导 师:杜庆峰 专 业:软件工程 2004年5月Tongji UniversityPaper for Bachelor DegreeImplementation of Automatic Testing in J2EE ProjectCandidate: Number: Advisor: Major: Software Engineering May 2004【摘要】本文主要介绍了两个自动化工具-QuickTest和LoadRunner在J2EE项目自动测试中的应用。并通过对工具本身的研究和在项目中的
2、使用经验总结出一套引入自动化测试的流程。【关键字】软件自动化测试,QuickTest, LoadRunner,J2EE【外文摘要】 This paper mainly introduces two automatic testing toolsQuickTest and LoadRunner and their application in a J2EE project. According to the investigation to the test tools and the experiences in project, the paper also concludes a auto
3、matic testing process that how to conduct a automatic testing in a company.【Key Words】Automatic testing, QuickTest, LoadRunner, J2EE目录目录4引言5第一章:有关背景介绍61.1自动化测试简介61.2自动化测试工具简介61.3J2EE技术简介7第二章:SCA52项目介绍92.1 SCA52简介92.2 SCA52需求规约92.3 SCA52软件架构92.4 SCA52系统环境102.4.1 服务器端环境:102.4.2 客户端环境:102.5 SCA52自动化测试计
4、划10第三章:功能测试工具QuickTest在SCA52中的应用123.1 QuickTest简介123.2 使用QuickTest 进行系统功能测试的流程123.3 QuickTest使用报告133.4 结论15第四章:性能测试工具LoadRuner在SCA52中的应用174.1 LoadRunner简介174.2 性能测试理论174.3 使用LoadRunner进行性能测试的流程184.4 LoadRuner研究报告194.4.1 主要结论194.4.2 详细分析194.4.3 工作量度量274.4.4 投资回报284.4.5 工具评价294.5 结论30第五章:软件自动化测试探索315.
5、1 研究背景315.2 自动化测试理论315.3 经验总结33第六章:总结和展望37主要参考文献38致谢39引言软件测试是软件工程中的一个重要部分,而自动化测试则又是软件测试中一门新兴学科。它可以有效地提高在软件测试过程的劳动生产率,提高软件质量,降低成本。在国外,自动化测试理论、自动化测试工具和自动化测试培训都已经十分的成熟并得到了广泛的应用,而在国内则基本上比较滞后。因此,正确有效地把国外先进的自动化测试技术引入到国内的公司和项目中来是一件十分有意义的事。J2EE和.Net是近年来基于Web应用的比较流行并已趋于成熟的技术。因此,本文的目的也就是,在具体的J2EE项目中,结合项目实际,利用
6、各种资源来研究和探索自动化测试在J2EE项目中的应用。其中主要是通过对自动测试工具在一个J2EE平台移植项目-SCA52中的应用为主线,分别阐述了使用QuickTest进行系统集成测试和使用LoadRunner进行系统性能测试的研究报告。并以此为素材,总结经验成果,探索一条怎样切实有效的引入软件自动化测试的模式。第一章:有关背景介绍1.1 自动化测试简介 首先,自动化测试,顾名思义,是一种采用自动化测试工具将测试过程自动化的一种技术。从它的定义来看,有两个需要注意的地方。第一,它是以传统的测试测试为基础的,但是它与普通的手动测试有着很大的区别。自动化测试有其自身的特点,纯粹的将手工测试的流程搬
7、到自动化测试上是不行的。第二,自动化测试不等于使用自动化测试工具。正如软件设计比学习编程语言困难一样,自动化测试要比学习测试工具困难。并且会使用自动化测试工具并不代表你了解自动化测试流程。 其次,从理论技术角度介绍自动化测试的特点。(与手动测试相比) 优点:1) 运行测试用例的效率比手动测试高的多。尤其在实际输入与期望输出的比较上。2) 可以运行更频繁的测试。一个自动化测试脚本一旦录制成功就可以被反复的运行。所以,自动化测试特别适合回归测试。3) 可以实现一些手工无法完成的测试。例如,模拟200个并发用户操作。 缺点:1) 当所测试的软件进行修改后,测试脚本要做相应的修改和维护。2) 流程引入
8、和第一次运行成本高于手动测试。 注意: 1)自动化测试只提高测试的效率,并不影响测试的有效性和可效仿性。无论自动化测试做的如何出色,如果测试本身是失败的,那么测试结果也毫无意义。接着,从现实角度来说,自动化测试在从理论转化到实际中,又出现了其新的特征。 优点:1) 更好的利用资源。可以将烦琐的任务自动化,减轻测试人员的压力。并且可以利用整夜或周末空闲的机器来执行自动测试。 问题:1) 不现实的期望。对于任何的新技术总有人都其抱有很高的期望,认为它可以解决所有的问题。测试工具也一样,管理者如果对测试技术不太了解,也许就会盲目地把希望寄托在自动化测试上,认为其一定是高效并且可行的。而不现实的期望是
9、永远不可能被满足的。2) 期望自动测试出现大量的新错误。测试在第一次运行的时候是最有可能发现新错误的。如果测试已经运行并通过,再运行相同的测试发现新缺陷的可能行小很多。并且录制脚本的前提也就是该测试用例必须能正确通过。3) 安全性错觉。因为测试软件没有发现错误并不以为着软件没有错误。4) 自动测试的维护性。从技术上来说,软件发生改动后测试脚本是必然要做相应的改动的。当维护的费用大于手工测试的费用时,自动测试经常被抛弃。而这里绝大部分是由不成熟的自动化测试管理和缺少经验造成的。1.2 自动化测试工具简介在本篇里仅讨论在专业的软件测试工具,不讨论公司内部开发的工具。在国外,有许多公司是专门开发测试
10、软件。而且测试软件的开发是一代一代连续开发,功能更强大,层次更抽象。现在,已经发展到了第五代,其主要的特点是:具有捕捉重放功能,支持脚本技术,框架结构和数据驱动智能框架结构引擎与窗口中央化的测试数据和事务数据分离储存。这里,先来抓住其中的关键词:捕捉重放: 捕捉,它指的是测试人员手工运行测试用例,然后测试工具自动记录其动作。重放,它指的是在捕捉以后,测试工具重放捕捉下来的动作。脚本: 捕捉下来的动作是以脚本语言来记录。如VB Script。这样即通俗,又变于修改。数据驱动: 它指的是测试中的脚本动作和测试数据的分离。测试脚本通过参数表的形式读取测试数据。相当于编程中的,程序与数据的分离。框架结
11、构:智能框架结构引擎,指的是在捕捉和重放过程中,从脚本到所测试的软件之间的一个映射引擎。例如,在Web应用中,它能动态识别和捕捉HTML元素,“学习”功能等。 因此,一个测试工具功能是否强大也可以从上述几个方面来评判。1.3 J2EE技术简介在2000年初,Sun公司认识到Java在开发服务器端应用程序的不足以后,发布了是Java 2 Platform Enterprise Edition(J2EE)。而J2EE平台的设计思想就是,对按照基于组件的应用模型设计的分布式应用提供一个简单而统一的标准。在这个技术在提出的这四年间里有的很大的发展的应用。如今,在基于Web的应用中,J2EE和Micro
12、soft .NET同时成为应用的最为广泛的技术。下面是J2EE总体结构的简图:应用逻辑数据客户Web包容器标记库JSPsServletsRMI/IIOPJNDIJTAJDBCJMSJavaMailJAFJDBCRDMSHTML/XMLJavaMail邮件服务器AppletRMIJava应用程序EJB包容器实体Beans会话BeansRMI/IIOPJNDIJTAJDBCJMSJavaMailJAFIIOPCORBA服务器客户应用程序JNDI目录服务JMS消息队列 图1-1 J2EE的总体结构从以上的总体构架可以看出,J2EE项目的测试有其特殊的地方,并且不同阶段的测试的关注点是不同的:1)在单
13、元测试阶段,主要关注的应用逻辑层的代码,可以通过同行评审(Peer Review) 或者是进行白盒测试(可以使用工具如JUnit)。2)在集成测试阶段,测试主要关注系统的功能点是否工作正常。这时候主要是黑盒测试,主要通过浏览器(如IE)进行测试。3)在系统性能测试阶段,重要关注系统的性能(主要体现在响应时间上)。J2EE项目一般使用多家公司的产品,如Microsoft的浏览器,BEA的中间件,Oracle的数据库,或者是开放性源码。其本身的特点就决定了在多用户高并发的情况下容易出线异常。其异常也通常很难捕捉和定位。因此,性能测试和压力测试通常是必不可少的。第二章:SCA52项目介绍2.1 SC
14、A52简介 SCA (Support Contract Assistant) 网上合同助手是一个基于网页的企业级应用。它的主要用途是通过网页的形式查看,修改和更新合同。SCA第五版是在20世纪90年代后期发布的,现在正被全世界的企业客户所使用。这个版本是基于 Broadvision平台的,但是由于Broadvision本身的缺点使得系统的维护和后续开发十分困难。因此,把系统移植到一个功能更强大更易于维护的平台上是非常必要的。BEA的Weblogic 是一个比较成熟的中间件产品,而且在 J2EE应用服务器市场占有很大的分额,所以很自然的就把现有的SCA系统移植到Weblogic平台上. SCA5
15、2 就是一个平台移植的项目. 它的目的就是把现有的SCA代码完整可靠的移植到Weblogic平台上, 并保持原有的功能。同时,根据客户的需求还会对部分模块进行重新设计来提高其性能。2.2 SCA52需求规约 SCA52项目发布的需求规约如下表所示:需求号需求内容1设计并重新架构SCA系统。采用Weblogic/J2EE技术。达到提高性能的目的。2系统移植 (包括核心代码, 基本业务服务, 系统服务和链接服务) 3测试 (其中性能测试由PAC小组完成) 4发布支持表2-1 客户需求 从以上的客户需求可以看出客户对系统的性能的要求是很高的。其中,PAC小组是客户聘请来专门对系统做性能测试的一个法国
16、的测试小组。同时,该小组曾经担当过前一个版本SCA51的性能测试工作,因此SCA52的性能将直接和SCA51进行对比。这样,在SCA51项目组中,对性能测试的需求的优先级是很高的。当然,做为一个系统,功能测试也是必不可少的。它的进行直接影响到项目是否能成功发布。2.3 SCA52软件架构下面的图表给出了SCA52的总体软件架构:File, etcSLUser functionalitiesApplication common servicesWeb layerSystem servicesExternal interfaces layerDocumentsHTTPClientBAPLJava
17、RuntimeJDBC Connection PoolJNDISAP/WASSAPShell ScriptsOracle DatabaseConfigurationXML FilePricingChange requests managementEquipmentsOrderingTransaction log listInvoicesSecurity managementSession managementI18N managementPersonalizationServlet containerLayout controllerAction controllerPage generato
18、rsOnline helpFeedback collectionFile exportContent managementAdministrationDebug supportingDatabase accessingJSP engineAction processorsLogging supportingSPTSPAJava mail图2-1 SCA52软件架构图2.4 SCA52系统环境SCA52 系统需要下列硬件和软件环境:2.4.1 服务器端环境:硬件平台: HP 3000/9000 server软件平台: 操作系统: HPUX 64 bit Java虚拟机: HP JDK 1.4.1
19、_02 J2EE 平台: Weblogic Express 8.1 SP2 数据库: Oracle Relational database server 9i2.4.2 客户端环境:SCA52 的客户端需要下列环境:硬件环境: 基于Intel CPU的主机软件平台: 操作系统: Windows 95/98/NT/2000/XP 浏览器: Internet Explorer 5.5 以上或者Netscape Navigator 6.1 以上 (除开 Netscape 7.0) 并且浏览器要做以下设置: ActiveX enabled, JavaScript enabled, Acrobat PD
20、F reader plug-in and Java plug-in。2.5 SCA52自动化测试计划 SCA52是一个平台移植的项目,所以从测试的角度来说,测试计划、测试用例、测试实施都可以借鉴SCA51。1) 测试要点根据SCA51的经验,在发布给客户以前将会有2轮的系统集成测试和缺陷修复。而性能测试则会在系统集成测试之前、之后各有一次。根据客户的需求,可以抓住2个重点。需求测试测试工具1系统必须根据设计正常运行2轮系统集成测试QuickTest2系统性能比较有所提高2轮性能测试(集成测试前后各一次)LoadRunner 表2-2 需求-测试-测试工具对应关系因此,SCA52的测试小组决定对
21、QuickTest和LoadRunner进行研究,并使用其完成系统集成测试和性能测试。 2) 测试时间表参照SCA52测试时间表文档:SCA52_TestTeam_Schedule.doc3) 测试流程参照“3.2 使用QuickTest进行系统集成测试的流程”和“4.3 使用LoadRunner进行性能测试的流程”。4) 测试用例SCA52系统是按模块划分的,其中有2种类型的模块:模块测试用例数量系统集成测试1根据SCA51移植的模块。没有详细设计。从SCA51的测试用例中经审查抽取出来。从1000多个已有的测试用例中提取500多个2新设计的模块。有详细设计。根据新的详细设计编写。150多个
22、性能测试模块无关沿用SCA51的测试用例11个性能测试用例压力测试模块无关沿用SCA51的测试用例1个压力测试用例 表2-3 测试结构表5) 测试实施和测试报告由于,SCA52测试小组在自动化测试方面并无经验。所以,测试实施方面,从总体上来说,是按照项目测试时间表来安排工作。在这个过程中,会对每一个里程碑做严格的评审。并根据评审结果重新做计划。在测试报告方面,主要生成的测试报告文档包括:QuickTest研究报告、LoadRunner 研究报告、集成测试报告、性能测试报告等。第三章:功能测试工具QuickTest在SCA52中的应用3.1 QuickTest简介QuickTest6.0是一种系
23、统功能测试工具, 是Mercury Interactive公司的产品。它支持多种应用系统,如Web应用,Windows应用,SAP系统等。该产品比较适合系统测试中的集成测试或者回归测试。这是因为它具有上面所说的第五代自动化测试工具的所有特点,捕捉回放、自动比较、框架结构和数据驱动。从实现上说,该工具主要使用的是VB Script作为脚本语言;从它对Web应用的支持上说,它主要是控制浏览器(例如IE的控制权),分析HTML,再控制鼠标和键盘动作完成的。在配置管理和自动化测试流程的支持上,它主要是通过和Mercury Interactive公司的另外一个产品TestDirector集成来实现的。
24、3.2 使用QuickTest 进行系统集成测试的流程 SCA52利用QuickTest进行系统集成测试的流程如下所示:阶段测试准备概述在正式开始自动化测试以前,需要做大量的准备工作。这些工作是必不可少的,它能确保测试正确有效地进行。输入SCA52测试用例进入条件结束条件所有必须的文挡都准备完毕活动使用的方法标准使用工具参与角色发布备注Page: 12 Add any remarks that might be relevant. These could be mandatory reviewers for a specific deliverable review, any addition
25、al constraints/standards the activity/deliverable must conform to etc.制定测试计划根据项目任务分配和时间表来指定测试组长自动化测试计划书用例筛选根据QuickTest的适用范围和项目要求,从所有的测试用例中抽取一部分来。测试人员自动化测试用例说明书录制脚本根据自动化测试用例说明书,利用QuickTest录制脚本QuickTest自动化测试人员测试脚本编写说明文档根据录制的脚本,编写自动测试说明书,包括如何录制、使用和分析自动化测试人员自动测试说明书阶段测试概述在测试准备阶段完成后,就可以随时进入测试阶段。也可在测试分析和脚本
26、维护阶段结束后重新进入本阶段。输入自动化测试计划书,测试脚本,自动测试说明书进入条件测试准备阶段完成结束条件活动使用的方法标准使用工具参与角色发布备注Page: 12 Add any remarks that might be relevant. These could be mandatory reviewers for a specific deliverable review, any additional constraints/standards the activity/deliverable must conform to etc.环境准备根据自动测试说明书来准备运行脚本的环境自
27、动测试人员运行脚本运行已录制的脚本QuickTest自动测试人员QuickTest自动生成的测试报告阶段结果分析和脚本改进概述在测试结束,需要对测试的结果加以分析。并且在分析过程中可能会发现由于软件修改或数据过期等原因导致脚本运行失败,这时就需要脚本的维护和修改。输入 QuickTest自动生成的测试报告进入条件测试阶段结束结束条件结果分析和脚本改进结束活动使用的方法标准使用工具参与角色发布备注Page: 13 Add any remarks that might be relevant. These could be mandatory reviewers for a specific de
28、liverable review, any additional constraints/standards the activity/deliverable must conform to etc.结果分析根据QuickTest自动生成的测试报告,整理出项目需要的测试报告自动测试人员项目测试报告脚本维护和修改根据QuickTest自动生成的测试报告,分析哪里脚本需要维护和修改QuickTest自动测试人员更新过的测试脚本 表3-1 自动测试流程3.3 QuickTest使用报告在SCA52项目中,QuickTest的使用并不算是成功的,它起到了一定的作用,但是最后还是决定将其弃之不用。其原因
29、是多方面的。具体分析如下: 1) 自动化测试流程本身的引入需要大量的时间和工作量。在SCA52中,项目工期紧张和人员不足都造成了项目内部自动测试流程的不成熟。 2) QuickTest本身的功能不够强大,虽然其支持的功能比较多,但是在稳定性和适应行上比较薄弱。所以SCA52的测试用例只有一部分可以录制成脚本。而且在Web应用中,GUI的变动是很频繁的,而该工具的智能识别功能比较差,所以并不十分适合。其本身更适合Windows应用和SAP系统等界面相对固定的应用。 3) 在SCA52中,客户的需求不断地在更改,这就造成测试用例也随之不断的修改,而紧接着自动测试脚本也要做相应的修改。这就造成脚本的维护费用大于手动测试的费用。由此,可以看出原因是有个方面的,一是工具本身,二是项目实际。首先,先从工具本身来分析:工具功能评价描述捕捉重放中功能比较强大,但是经常有Bug。脚本中基本上从捕捉重放生成脚本。不支持手工直接生成。手工编辑已有脚本的空间有限。数据驱动好支持参数表,存贮结构支持文件、数据库等。框架结构中支持基于屏幕数据的比较结果和其他媒体。但是动态识别功能较弱,没有自动“学习”功能。结果分析中从测试报告上很难得到足够的信息来判断具体的问题所在。