资源预览内容
第1页 / 共86页
第2页 / 共86页
第3页 / 共86页
第4页 / 共86页
第5页 / 共86页
第6页 / 共86页
第7页 / 共86页
第8页 / 共86页
第9页 / 共86页
第10页 / 共86页
亲,该文档总共86页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
一绪论一绪论1 背景介绍背景介绍近年来,社会信息化程度不断提高,人们在生活和工作方方面面对软件的依赖成都越来越高,尤其是金融行业,各种金融产品和交易方式的革新,软件更新越来越快,需求呈爆发式增长,传统的开发方法逐渐不能适应这种周期短,变化快的节奏。2001 年,敏捷宣言的诞生,为软件开发团队提供了新思路和新模式,打破了传统的软件过程和软件生命周期的概念。在十多年间,敏捷开发方法逐步从概念化的理念,一点点成熟和规范化,如 Scrum敏捷开发方法,XP 极限编程敏捷开发方法等具体敏捷方法的提出,凭借其以人为核心,快迭代的特性,成为了许多软件开发团队的选择。对于软件开发商来说,软件质量的保证也是软件开发过程中需要注重的部分,是企业发展中的核心问题之一。但是,在采用了敏捷开发方法之后,代码的提交频率更高,带来了更多的不确定性,一方面是产品无法快速准确的完成客户需求的风险,另一方面则是在快速迭代中,代码质量降低,缺陷数量增多的风险。因此,越来越多的公司开始发现,传统的测试方法和自动化技术逐渐不能满足当前不断变化的需求和短周期的快迭代模式。在敏捷开发方法下,产品的开发和发布速度大大提高,产品的质量和可靠性成了关注重点,这对软件测试团队是一个极大的挑战。可以说,软件测试在保证产品质量,控制开发成本,提高开发效率等方面是起着举足轻重的作用的,所以,在敏捷开发项目中,软件测试过程也需要应用新的敏捷测试方法。本人通过在 dddd 软件 Dddd 海量数据智能搜索匹配敏捷项目的测试团队中工作,在项目进展初期,测试团队还在应用传统的瀑布模型实施软件测试工作,在时间和资源分配上经常产生需求初期测试人员闲置率高,开发中后期,测试工作量暴增,缺陷发现时间较晚,工作量大的问题。同时,自动化测试实施效率也比较低,过去的自动化回归测试进入时间较晚,无法在最早的时候发现程序缺陷。测试工作面临着巨大的挑战,测试人员工作进入了高投入低产出的恶性循环。对于测试团队来说,急需要一套能够适应敏捷开发方法的测试方法,一个能有指导意义的软件测试模型,不仅能保证产品的质量和可靠性,同时可以降低软件开发的风险和成本,提高开发的效率。当然在优化测试流程和测试方法的同时,自动化测试实施是其中最为重要的一块。是否能够合理并高效地使用自动化测试来规范测试流程、提高测试效率,是至关重要的。自动化测试能够解放测试人员,在非工作时间完成对新提交代码的验证,让测试人员有更多的精力和时间,着力于对快速变动的软件需求掌握和管理,对测试用例的更新,提高测试工作的准确性和更高的覆盖度。同时,自动化测试中的测试数据能够复用在敏捷开发的整个生命周期之中,一次投入成本,有长期回报。当然,为了能够更好地进行敏捷测试,单一的自动化回归测试是不够的,我们还需要其他种类的自动化工具和管理工具整合起来做二次开发,通过引入自动任务管理软件,加入自动触发机制,在每次代码提交的时候自动触发单元测试和相关的功能测试和回归测试,避免更新不及时,测试不及时的问题,同时通过测试管理工具解决开发测试效率低下的问题。有了这样的统一高效的自动化测试集成系统,可以将测试用例,测试数据,测试脚本,测试报告统一到一起,减少不同步带来的成本,提高测试效率和测试的准确度,优化测试的整体效果。2 国内外对敏捷测试的研究现状国内外对敏捷测试的研究现状“敏捷项目对于测试人员来说,是一个领导整个项目过程极好的机会。”AIG Computer Services 的 Business Group Manager George Wilson 说。在敏捷开发羡慕中,不再是开发者掌舵整个过程,将测试人员放在次要的位子,他建议测试人员在整个项目进程中,应该起到领导作用。“还有其他更好的人能消除用户和开发者之间的鸿沟吗?理解什么是必需的,怎样才能达到目标?在发布之前如何确保质量?”这就要求 QA team 自身在敏捷活动中非常灵活,打破传统测试方法中,测试人员的自我定位和自我认知。事实上,对软件测试的重视也是近几年才有所提升,从对软件测试的定义上,就可以发现,大部分时候,软件测试人员的角色都是次要。传统的软件测试定义是以人工行为方式或者运用自动化工具执行或测试某个系统的过程。它的目的在于检验被测的软件产品能否满足预先定义的需求或分析期望结果与实际输出结果之间的差别。就软件测试的发展而言,可大致分为以下几个时期1:论证时期:早在 20 世纪 70 年代,C.Baker 区分了软件的“调试”和“测试” :即认为程序检查应包括两个目的:一是证明程序能够运行;二是证明程序符合技术任务书的要求。前者是“调试”的核心任务,后者是“测试”的核心任务。论证时期软件测试的主要目的是证明软件符合它的技术任务书的要求,证明软件不存在错误。测试工作者应用类似结构数学的方法进行论证。这一阶段,缺少测试选择准则的标准,一个软件似乎通过了测试,但仍有许多错误。破坏性测试时期:Glonford J. Myers 在这一阶段定义了软件测试的概念:“为了发现错误而执行程序的过程” 。这个概念说明,如果把程序测试看成是发现错误的过程,而不是证明它完成预期要求的过程,则有可能发现更多的错误。成功的测试是力图让程序执行失败而使查错取得进展的过程。生命周期评估和预防时期(现状):随着软件工程和测试技术的发展,提出了“生命周期测试(Life Cycle Testing)”这一概念,即测试不只影响软件的编程和运行,同时能够影响软件技术任务书和软件设计,而且在项目开始时需要进行相应的测试工作。项目在一个软件项目一开始就与整个软件开发工作组息息相关。在这一时期,各种软件测试技术以及软件质量保证体系应运而生;软件测试流程被细化分为各个阶段,并且相应的测试技术为各个阶段的软件测试提供保障;与此同时,各种测试模型在软件测试活动中,起着指导作用。伴随着软件产品不确定的用户需求、更复杂的产品架构、更急迫的交付时间,传统的软件测试方法虽然具有预备性的特点,但是也存在着诸多缺陷。例如:要么将编程过程与测试划分为独立不同的阶段,无法满足“尽早地和不断地进行软件测试”的原则;要么将需求、设计、编程、测试串行,无法支持迭代、自发性以及变更调整。.为了满足用户的需求、设计出具有更高可靠性的软件产品,敏捷软件过程(Agile Software Process)被引用于现在软件企业的开发过程中。敏捷方法在几周或者几个月的时间内完成相对较小的功能,强调尽早的将可能小的并且可用的功能交付给用户使用,并在整个项目周期中持续改善和增强。在开发过程中,敏捷方法重视频繁的功能交付、重视与客户的交流与沟通,并以迭代式的开发手段强调对变化的快速响应能力。在实际工作中,XP(极限编程)、SCRUM 等体现敏捷软件过程思想的轻载方法已经成为热点,并被应用于实际的项目开发活动中。敏捷的理念在开发过程中渐入佳境,但是现有的软件测试环节却陷入尴尬局面。现有的软件测试流程依旧较为依赖传统的 W 模型,因而这些过程、测试模型不能满足软件产品对测试行为的要求。因此一种基于敏捷软件过程的软件测试模型的研究与设计,具备现实意义。测试的自动化是最原始的起步阶段,其目的就是将原先手工测试所作的工作转化为自动化代劳。显著的特征就是以工具为中心。如果说测试的自动化是在一个点上下功夫,第二阶段就是在一条线上作战了。“自动化的测试”的内涵更加丰富,它意在将软件测试里的所涉及的各个环节作为一个统一的整体考虑,从测试案例的管理,测试案例的执行到测试报告的展现都有相应的策略及自动化实现,故称“自动化的测试”。第三阶段,在这里软件自动化测试和软件开发再次做一个整合,从自动化流程上,能够达到真正的测试驱动开发,比如 coding 与 unit testing 做整合。目前国内软件公司软件自动化测试的实施情况大多处于第一阶段或从第一向第二过渡的阶段。当传统的测试方式无法适应新的开发模式时,新的测试方法就会诞生并取代原有的不适合的测试方法。自动化测试是轻型开发模式4测试活动的另一个优秀思路也是采取轻型开发模式的必要条件之一。在只有测试实现了自动化,回归测试才能实现,重构才能够贯彻,而迭代也才能够进行,才能够迎合敏捷开发的脚步。目前比较流行的敏捷测试方法有测试驱动开发和相关环境驱动测试等5。还有很多国外知名专家按照敏捷的原理为软件测试开发了相应的测试框架,其中最著名的就是 Kent Beck等提出的 xUnit 系列单元测试框架和 Ward Cunningham 等提出的 Framework for Integrated Test(FIT)集成测试框架6。xUnit 系列提出的比较早,目前已有一套完善的测试工具和方法论来支持了,适用于各种语言的单元测试。FIT 框架是当前国内外的研究重点,很多知名的测试专家如 Lisa Crispin 等都在如何使用 FIT 进行有效的软件测试方面得出了很多的研究成果。虽然 FIT 可能是一个不错的解决方案,其关注点集中在测试用例的可读性,以及测试用例和测试代码的分离,但是还是需要更完善的 Web 自动回归测试和缺陷跟踪,使得敏捷测试管理更规范化。软件测试的工具很多,如测试管理有 Mercury Interactive 公司的TestDirector 和 sourceforge 的开源项目 TestLink、单元测试工具有 Xunit 系列、自动化测试工具有 ThoughtWorks 的 Selenium 框架以及优秀的开源工具 Watir 等、缺陷跟踪工具有目前业内最成熟知名度最大的 Bugzilla 和 LAMP 模式下的 Mantis 以及轻量级的 Web 缺陷跟踪工具 BugFree。大部分的测试工具都是对测试生命周期的一部分流程进行管理,并没有一个轻量级的工具可以对整个敏捷测试生命周期进行管理,使得测试流程自动化执行。因此,一个可以适合敏捷测试,并且能够管理测试整个生命周期的轻量级的集成框架是本文研究的方向。4 研究方向与内容研究方向与内容本文通过对目前敏捷测试过程分析,为了提高敏捷测试的效率和使得敏捷测试管理更加规范化,采用集成多种测试工具和测试管理工具的方案为敏捷测试提供了新的解决方案。通过对回归测试工具、测试管理工具和缺陷跟踪工具的原型的改进分析与设计,实现了一套拥有回归测试、测试管理和缺陷跟踪三大模块并可以应用于敏捷测试生命周期管理的自动化测试集成系统。文中先经过分析系统各部分的数据格式及集成方案,对系统各个部分进行了详细的需求分析,并找出需要做的集成整合工作及测试工具集成过程中应增加的功能和方法;其次根据需求分析的结果和提出的所要增加改进的功能进行系统设计,并设计数据集成方案中的数据库和文件系统中测试用例和结果文件的管理方式;还根据各部分操作数据方法的不同,设计功能流程;最后介绍了系统的实现及具体实现页面。经过上诉几个步骤,本文实施了一套完整的可应用于敏捷测试的自动化测试集成系统。本文说明了如何利用良好设计、扩展功能和数据集成的方法组建一个全面的自动化测试集成系统。该系统构造了一个完整的敏捷测试解决方案。在整个过程中主要完成以下工作:1. 介绍传统软件测试概念和敏捷测试的概念,通过介绍敏捷测试的管理方法和测试流程的自动化以及集成系统的方法,来说明本文所做工作的必要性。2. 分析开源测试工具,比较各个测试工具的优势和不足,选取需要做集成的开源工具,提出开源工具的集成方案。3. 对集成系统的各个部分的集成方案进行详细的需求分析,明确集成系统的功能和集成方法。4. 设计并实现一套适用于敏捷测试需求并且能够管理整个测试生命周期的集成系统。5. 阐述了部署实施的细节,并构建分布式的回归测试服务器。通过对系统功能实现的测试,说明了系统是如何管理测试生命周期的以及集成系统的优势所在。5 论文结构论文结构论文共分为六章,各章主要内容如下:第一章:绪论。交代研究背景、国内外研究现状,以及本文的主要研究内容和论文结构。第二章:相关理论综述。对传统软件测试,敏捷开发理论,敏捷测试理论进行理论描述,概述软件测试相关概念,然后通过介绍和分析敏捷软件开
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号