作业帮 > 体裁作文 > 教育资讯

敏捷测试是什么意思

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/23 17:19:30 体裁作文
敏捷测试是什么意思体裁作文

篇一:敏捷测试是什么

一绪论

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研究方向与内容

本文通过对目前敏捷测试过程分析,为了提高敏捷测试的效率和使得敏捷测试管理更加规范化,采用集成多种测试工具和测试管理工具的方案为敏捷测试提供了新的解决方案。通过对回归测试工具、测试管理工具和缺陷跟踪工具的原型的改进分析与设计,实现了一套拥有回归测试、测试管理和缺陷跟踪三大模块并可以应用于敏捷测试生命周期管理的自动化测试集成系统。

文中先经过分析系统各部分的数据格式及集成方案,对系统各个部分进行了详细的需求分析,并找出需要做的集成整合工作及测试工具集成过程中应增加的功能和方法;其次根据需求分析的结果和提出的所要增加改进的功能进行系统设计,并设计数据集成方案中的数据库

篇二:敏捷测试过程

敏捷测试过程

敏捷测试敏捷在流程的定义上,并不是敏捷在测试角色定义上,如果你想保证测试的最终有效性,请不要随意修改或者删除这些已经定义的测试角色和其相关职责。敏捷测试过程同样存在着一个成熟度模型,5个级别的成熟执行

过程。我个人认为测试成熟度模型不必过于复杂,每一个层次的可明确定义是最重要的,和所有的软件开发模型一样,每个阶段都有其向上一层次进化的路径。在研究测试成熟度模型的时候,我发现一个非常有意思的事实,很多

公司都急于把测试的最初阶段迅速提高到最终第五层次,当他们迷信的投入的大量资源的同时,却得到了失败的下场。

测试成熟度的各个阶段进化过程都需要定量的时间,明确的工作角色被分配,这些都是向下一级过渡的必要条件。同样,测试成熟度也关联了一个测试人员的职业成熟度,即使测试成熟度达到了顶级,没有相关联的测试人员,整

体执行的结局还是失败,这和极限编程的某些理论一致:某些特定角色是整个团队的灵魂。 初始阶段(Ⅰ级)

测试成熟度的初始阶段主要表现为以下特征:

1. 无专职测试人员参与。

2. 项目团队无测试意识或者测试意识淡薄。

3. 测试动作表现为混乱无序状态,测试等同于个人调试行为。

4. 测试在编码后任意进行。

5. 软件开发过程无质量保证,无相关资源投入。

6. 无测试管理,测试无目标。

7. 在整个软件开发过程中,测试不是一个重要的参与环节。

事实上大部分的国内公司都是这样的,对软件测试不是很重视,并且部分项目管理者自身也不懂软件测试,如果再采用“盖鸡窝”软件开发方式,那么出现十个项目九个崩溃的情况是不足以为奇的。测试虽然不能从最终意义上保

证软件的整体质量,但是它能及时的反馈当前软件质量状态,有助于及时的发现问题最快速的改正问题,需要注意的是,敏捷测试在某些特定情况下支持开发团队全面负责软件测试任务。

已定义阶段(Ⅱ级)

测试成熟度的已定义阶段主要表现为以下特征:

1. 测试和调试已经分离。

2. 测试在编码后进行,或者在产品即将发布的最后有限规定时间内进行。

3. 掌握了部分基础测试方法和基础测试理论,具备一些必要的测试角色和支持角色。

4. 测试角色职责模糊,无准确定义。

5. 具备了部分基础测试输出工件,如测试计划等。

6. 测试管理少量涉及,但控制手段不明显,无很好的风险规避手段。

7. 介入了基础的BUG管理机制,但是对BUG的控制手段软弱造成遗失。

8. 在整个软件开发过程中,测试已经成为一个概念重要,实施力度过于软弱的参与环节。

属于该阶段的,尚未分化的测试个体已经具备了少量的服务能力,测试和调试的分离意味着测试任务已经被单独剥离出来,交付给更具备专业能力的人处理。该阶段已经出现了对BUG进行管理的意识,这意味着很大程度上项目

组或者测试个体可以在一定程度上对已经发现的BUG作微弱的控制,所以在这个阶段不应该对软件构成的质量抱有多大的幻想,我们只要知道这只是一个简单的开始。

可持续集成阶段(Ⅲ级)

测试成熟度的可持续集成阶段主要表现为以下特征:

1. 测试集成到项目的各个迭代阶段中,已经不再体现为编码后测试。

2. 测试切入了需求阶段、设计阶段,并且针对这两个阶段产生了独立的正式技术复审手段。

3. 已经有专门的机构负责,相应的体系被建立,大部分测试角色职责定义清晰,投入资源相对稳定。

4. 对测试的各个阶段工件输出做出了限定,并且根据项目的历次迭代制订了测试发布后基线。

5. 测试管理中已经介入风险管理制度,具备一定的规避手段。

6. 使用了部分测试工具和启用了专门的BUG管理工具(仅限于收集管理)

7. 测试的领域大部分限定于黑盒阶段。

8. 有了正规技术培训的活动。

9. 考察和评审基础数据匮乏,无法实施测试度量。

该阶段正式分化了独立的测试个体或者测试团队,他们已经具备了一定的服务能力,大部分执行的测试项目都采用了迭代思想,并且在任何一次迭代的开始都会产出一份经过仔细确认的执行风险列表。测试已经不再表现为单纯的

编码测试方式,软件开发中包含的大部分核心过程都已经被监管(有限的),表现为不同的测试的执行方式。BUG有专门的管理工具收集,比如运用了某些商业数据库。初步产生了自动化测试概念,但是由于本身条件的制约,

导致测试个体或者测试团队不能更进一步的深入概念中,测试依然以黑盒测试为执行主体。

篇三:敏捷测试

敏捷测试的实践

摘 要:在敏捷测试流程中,参与单元测试,关注持续迭代的新功能,针对这些新功能进行足够的验收测试,而对原有功能的回归测试则依赖于自动化测试.由于敏捷方法中迭代周期短,测试人员尽早开始测试,包括及时对需求、开发设计的评审,更重要的是能够及时、持续的对软件产品质量进行反馈.

关键词:敏捷测试;敏捷开发;开发周期;单元测试

1引言

之前跟众人一样对敏捷开发比较熟悉,觉得新鲜而有效率。刚看到老师给的题目时才知道敏捷测试这个概念,自己一直局限于测试方法的学习,并没有系统并从大体框架去学习和了解测试这个行业。在学习敏捷测试过程中了解到这样几个概念:TDD(测试驱动开发Test Driven Development)、ATDD(验收测试驱动开发Acceptance Test Driven Development)、UTDD(单元驱动测试Unit Test Driven Development)以及精益方法,并由此开始了解到软件测试和其他知识领域的交叉处。 敏捷测试进入国内研究领域还是一个新生力,查找到的国内文献也是极其有限的,在这里也只是发表自己浅陋的理解。通过之前的对软件项目案例的学习,我比较欣赏的是软件生命周期中的螺旋式模型,那敏捷是先于开发,也就跟传统的测试有本质的区别。传统的测试是先写测试计划,此后的测试过程分布在螺旋式模型中的每一次完善的循环中,而敏捷测试则是在开发前写好了用例,根据用例再去开发系统,可以减少很多错误,但这也就意味着开发人员的主导作用更明显。与传统的测试不同,敏捷软件测试并不是一个独立的过程,相反,它与整个敏捷开发中的其他活动交织在一起,处处都能看到它的影子。

敏捷测试接纳了敏捷的核心价值观(沟通,简单,反馈,勇气,尊重),在敏捷软件开发过程中开展的测试就可以被称作是敏捷软件测试。因此,敏捷软件测试并不是一个与敏捷软件开发同一层次的划分,而是敏捷软件开发中的一部分。

2 敏捷测试背景

2.1敏捷测试

敏捷测试是适应敏捷方法而采用的新的测试流程、方法和实践,对传统的测试流程有所剪裁,有不同的侧重,例如减少测试计划、测试用例设计等工作的比重,增加与产品设计人员、开发人员的交流和协作。在敏捷测试流程中,参与单元测试,关注持续迭代的新功能,针对这些新功能进行足够的验收测试,而对原有功能的回归测试则依赖于自动化测试。由于敏捷方法中迭代周期短,测试人员尽早开始测试,包括及时对需求、开发设计的评审,更重要的是能够及时、持续的对软件产品质量进行反馈。简单地说,敏捷测试就是持续地对软件质量问题进行及时地反馈,如图1所示。

图1 敏捷测试定义的形象描述

2.2敏捷测试的核心

首先要从整个项目全局考虑,及早发现需要更改设计的问题。其实这个测试更多的是观察与思考,而是否

敏捷测试是什么意思

能发现问题就要看开发人员对需求掌握是否透彻,对整个项目是否有一个全局的把握,是否从最终用户角度去考虑问题,是否以实现客户的商业价值为目标。

然后在最短时间内完成所有功能和业务逻辑的测试,最好是每人分配不同的功能和业务逻辑进行测试,这样就可以在最短时间内及时将优先级较高的缺陷及时反馈给开发人员。

最后在开发人员忙于修改那些优先级较高,难度较大,比较耗时的缺陷的同时测试人员可以有充分的时间来对这一迭代进行较细致的测试,发现功能和业务逻辑中不易察觉的问题,次要功能问题、验证、界面等。那么,作为一个测试工程师在测试中使用敏捷的思想进行测试,并且需要敏捷测试中需要保证其工作符合相应的准则:①获取和明确用户的质量期望;②建立合适的系统测试、用户验收测试质量标准;③推进单元测试、开发测试;④建立持续构建框架;⑤持续改进自动化测试;⑥保持质量度量结果的可见性。

2.3敏捷测试流程优化

在敏捷方法中,需求变化比较快、产品开发周期很短,我们目前采用四周时间,也就是每个月发布一个新版本。开发周期短,功能不断累加,给软件测试带来很大的挑战,软件测试流程要做相应的调整。例如,我们原有的测试规范明确规定,首先要建立项目的主测试计划书,然后再建立每个功能任务的测试计划书,测试计划书有严格的模板,而且需要和产品经理、开发人员讨论,并和测试团队其他人员(包括测试经理)讨论,最终得到大家的认可和签字才能通过,仅测试计划经过―起草、评审和签发‖一个完整的周期就需要一个月。在敏捷方法中,不再要求写几十页的测试计划书,而是在每个迭代周期,写出一页纸的测试计划,将测试要点(包括策略、特定方法、重点范围等)列出来就可以了。

在原有测试规范中,要求先用Excel写出测试用例,然后进行讨论、评审,评审通过以后再导入测试用例库(在线管理系统)中。在敏捷测试中,可能不需要测试用例,而是针对Use Case或User Story直接进行验证,并进行探索性测试。而节约出来的时间,用于开发原有功能的自动化测试脚本,为回归测试服务。自动化测试脚本将代替测试用例,成为软件组织的财富。原有测试规范还要求进行两轮回归测试,在敏捷测试中,只能进行一轮回归测试。综合这些考虑,敏捷测试的流

程简单有效,如图2所示。

图2 敏捷测试流程简要图

在敏捷测试流程中,如前所述,测试是一个持续的质量反馈过程,测试中发现的问题要及时反馈给产品经理和开发人员,而且某些关键方面也要得到我们足够的关注,主要有:

测试人员不仅要全程参与需求、产品功能设计等讨论,而且要面对面地、充分地讨论(包括带语言、视频的即时通讯),仅仅通过邮件是不够的。

参与代码复审(Code Review),并适当辅助开发人员进行单元测试。

在流程中增加一个环节―产品走查(Product Walk-through)‖——测试人员和产品经理、开发人员等在一起,从头到尾将新功能看一遍,可直观、快速地发现问题。

3敏捷测试人员的作用

测试是软件开发中不可或缺的一部分。在敏捷软件开发中亦是如此。不同的组织给测试人员以不同的称号:测试开发 (Test Developer)、质量分析员 (Quality Analyst)、软件质量工程师 (Software Quality Engineer) 等。

每个称号隐含有不同的职能。以上的称号分别对应以下的能力要求:

具有质量检测和编写代码的能力–> 测试开发

具有防止缺陷 (Quality Assurance) 和质量控制 (Quality Control) 的能力–> 质量分析员

具有开发和执行测试程序的能力 -> 软件质量工程师

总结而言,有三方面的基本素质要求:代码编写(Coding)、测试 (Testing) 和分析 (Analysis)。 在很多其他的开发流程中,各个测试阶段对测试人员的能力有所不同;有时候侧重分析(比如系统配置测试),有时候侧重代码编写 ( 比如功能测试 )。但是,在敏捷开发流程中,测试人员需要结合这三方面来开展工作,只有这样才能真正反映敏捷测试的本质:简单而高效得应对变化。

在敏捷软件开发中,测试人员的职责有三个主要方面:

定义质量 (Define Quality):这应该是软件测试人员的基本职责。敏捷方法鼓励测试人员在 Sprint 计划的时候直接与客户交流,从自己的经验出发,共同为产品功能制定质量要求。

交流缺陷(Communication):敏捷过程强调团队中的交流。开发人员经常会专注于重要而新奇的功能,测试人员应该抓住细节,寻找设计中的―missing door‖;另外,开发人员使用单元测试来保证产品的基本质量,测试人员可以使用验收测试(Acceptance Test)来鉴定客户需求与实际成果之间的不一致性。

及时反馈 (Feedback): 敏捷过程强调简单而高效。测试人员需要及时反馈产品目前的质量问题。这样一来,团队才可以立刻着手解决。如果传统的流程是一周汇总一次状态的话,敏捷流程要求每天汇总质量问题。在我们的项目中,内部的测试报告会以网页的形式显示在内部站点上。每个团队成员能够随时获取。另外,我们的测试框架提供自助测试 (Self-assistant Test):通过点击测试用例列表中的某个具体用例,开发人员不需要中断测试人员的工作就可以重现缺陷。

4敏捷测试的管理

敏捷测试的管理同样是一个非常重要的部分,敏捷测试过程管理应该包括以下内容。

4.1测试计划

敏捷测试并不需要为每次迭代准备特别详细的测试计划文档,但最好能够在测试计划中描述:①在本次迭代中哪些内容是需要被测试的;②本次迭代中会安排测试的类型;③测试通过的质量标准,同时测试计划应尽可能的简洁,以清晰、易懂为原则。

4.2测试设计

对于每个迭代中新增或是发生变化的功能, 敏捷测试采用探索性测试的方法来设计测试。对于稳定的部分, 敏捷测试采用自动化测试的方式建立可接受的质量度量框架。

4.3测试执行

测试过程中有不同的测试方式,不同的测试方式其侧重点有所不同。根据测试的自动化程度不同,测试方式主要包括以下几种:①手工测试:新功能和修改功能的了解、验证;②Adhoc 测试:基于对应用的理解,尝试发现应用中可能的问题;③动化测试:不同层次级别的自动化验证;安全性测试、Fuzz 测试等分析、调试、优化现有的自动化测试。

4.4反馈与提高

在产品发布以后, 可以说敏捷项目告一段落。但是为了不断提高测试能力、不断提高测试有效性, 测试工程师还需要对在测试过程中收集的数据进行缺陷分析。将缺陷进行分类整理, 采用合理的分析方法找出造成缺陷的真实原因, 并对其原因进行分类整理。如果有可能建立缺陷资料库, 对不同类别的缺陷建立缺陷资料库供敏捷团队进行学习, 在整个团队中分享测试知识, 包括敏捷开发人员对缺陷原因的认识。如果有可能的话, 敏捷测试工程师应根据已有知识体系, 建立更多纬度的自动化测试。在已定义的产品中, 追溯缺陷对应的需求, 建立需求- 缺陷追踪矩阵。结合缺陷描述进行需求重定义, 使得能需求清晰定义, 不断提高产品的可测试性。

5敏捷测试的自动化

没有自动化,就没有持续集成,也就没有敏捷。在敏捷测试中自动化测试就更加迫切,这一点比较容易理解,每个迭代(如Scrum中的Sprint)都在增加新的功能,而迭代周期的时间相对固定,随着时间的推移,已实现的功能越来越多,这就要求越来越多的回归测试在时间相对固定的周期内完成。如果没有自动化测试,这是不可能完成的任务。

在过去一年中,敏捷测试的自动化又发生了哪些变化?如何重构自动化测试脚本以提高产出投入比(ROI)?下面就简单讨论一下敏捷自动化测试框架和敏捷测试工具等内容。

敏捷测试对测试工具要求简单、实用,随时可用,而对敏捷测试来说,自动化测试框架更为重要,它将负责集成各种测试工具,包括单元测试工具和验收测试工具等,还负责与持续集成、缺陷管理系统等整个开发环境集成。作为敏捷测试的自动化框架,一般会选择轻量型、开放类型的框架。说到这种类型的框架,可以参考RobotFramework。在最近一年,其版本发布比较频繁,也日渐成熟。RobotFramework是基于Python开发的、可扩展的框架,所以适用于多种接口的复杂软件(如用户接口、命令行、Web Service、编程接口等)的测试。

敏捷测试工具很多,但对敏捷测试来说,我们更要关注能够适应ATDD或BDD的测试工具,如Cucumber、RSpec、NBehave /CBehave /JBehave、EasyB、JDave等。也可以结合先前熟悉的测试工具开展工作,例如用自己熟悉的WatiN来结合SpecFlow 完成BDD模式的自动化测试。 6总结

根据上面的讨论和我们的实践,最后针对敏捷测试进行一个简单的总结,就是:

敏捷测试就是持续测试、持续反馈,扮演―用户代表‖角色,确保产品满足客户的需求。

敏捷测试人员和开发人员的区别越来越小,理想情况下,敏捷方法中,测试人员和开发人员在不同的迭代周期可以互换。

接纳了敏捷的核心价值观(沟通,简单,反馈,勇气,尊重),在敏捷软件开发过程中开展的测试就可以被称作是敏捷软件测试。因此,敏捷软件测试并不是一个与敏捷软件开发同一层次的划分,而是敏捷软件开发中的一部分,与传统的测试不同,敏捷软件测试并不是一个独立的过程,相反,它与整个敏捷开发中的其他活动交织在一起,处处都能看到它的影子。

参考文献

[1] Glenford J. Myers. The arts of software testing [M]. 第二版,2004.

[2] William E.Lewis,David Dobbs. Software Testing and Continuous Quality Improvement [M]. 第三版,2011.

[3] 朱少民. 敏捷测试的方法和实践[J]. 2010.

[4] 徐飞.敏捷测试过程 [J]. 软件导刊2013.

[5] 张孟. 敏捷开发中原则与过程的分析与研究 [J]. 科技传播2013.

通用电子商务平台测试用例的设计及执行(实践部分) 1.负责的任务和执行

在本次测试过程中,由于之前有功能测试的经验,所以被安排设计测试用例并执行。但在实际的工作中仅仅按照等价类划分和判断表驱动法这样的分类方法去设计用例,并相应的删除冗余。 首先,熟悉了解需要测试的两个模块:购买模块以及注册模块;然后根据系统设计文档列出系统的待测功能点。

第一部分是购买模块的功能点,这部分主要是单元测试,除了购物车部分,其他部分均不需要输入值,依次点击链接查看功能是否实现。

购物车物品数量部分本应该只存在正数,在我们输入不合法字符之后,系统有提醒输入异常,但当输入的为负数值时,系统却在结算部分显示了相应的负数金额,这在实际操作中是不合理的,并且很有修改的必要。结算部分就算购物车没有商品,它依然会跳转至结算页面,而按照需求和设计文档,此部分应该提示购物车为空。

篇四:敏捷测试的方法和实践

敏捷测试的最佳实践,第 2 部分: 方法与实践 前言

如果您已经阅读过敏捷测试系列文章的第一篇,敏捷的实质,您应该已经了解敏捷的定义,了解什么样的团队是敏捷的团队了。而您也可能早已开始思考,什么是敏捷测试的实质?敏捷的测试团队又是如何形成自我管理、自我发展的组织呢?测试团队又是如何安排日常工作呢?敏捷测试活动与传统测试活动有很大差异吗?为了进一步让您了解如何将敏捷原则运用到活生生的日常测试活动中,我们为您推荐敏捷测试系列文章的第二篇——敏捷测试的实践。

在敏捷活动如火如荼的推广运动中,我们显然无法预知如何在您的特定的复杂环境中您能否最后达成所愿,也无法为您预测出前进道路的分岔口可能唯一的正确的线路,我们却可以为您点起一盏明亮“街灯”,在这迷雾中驱除黑暗。我们将为您提供一个可以借鉴和可供参考的成功的敏捷测试实践案例。我们将逐一向您介绍、分析这个案例中的敏捷团队的组织结构,主要的敏捷测试行为,迭代的测试模型和一套以四周为周期的敏捷测试活动时间表。

请您运用您已具备的敏捷实质、敏捷原则的知识,并结合您的独特项目环境、带着您的问题,与笔者一起再度分析这个案例,希望您最终也能得到满意的答案,并随后开始实施部署敏捷测试。

回页首

敏捷测试的实质

测试不仅仅是测试软件本身,还包括软件测试的过程和模式。产品发布后才发现很多问题,很可能是软件开发过程出了问题。因此测试除了需要确保软件的质量,即软件做了正确的事情,以及软件做了应该做的事情以外,敏捷的测试团队还要保证整个软件开发过程是正确的。 敏捷开发的最大特点是高度迭代,有周期性,并且能够及时、持续的响应客户的频繁反馈。敏捷测试即是不断修正质量指标,正确建立测试策略,确认客户的有效需求得以圆满实现和确保整个生产的过程安全的、及时的发布最终产品。敏捷测试人员因而需要在活动中关注产品需求,产品设计,解读源代码;在独立完成各项测试计划、测试执行工作的同时,敏捷测试人员需要参与几乎所有的团队讨论,团队决策。作为一名优秀的敏捷测试人员,他(她)需要在有限的时间内完成更多的测试的准备和执行,并富有极强的责任心和领导力。更重要的是,优秀的测试人员需要能够扩展开来做更多的与测试或许无关,但与团队共同目标直接相关的工作。他(她)将帮助团队其他成员解决困难、帮助实现其预期目标,发扬高度协作精神以帮助团队的最终获取成功。需要指出的是,团队的高度协作既需要团队成员的勇敢,更需要团队成员的主动配合和帮助。对于测试人员如此,对于开发、设计人员,其他成员也是如此。

回页首

敏捷测试的方法与实践

是的,敏捷测试也需要高度迭代工作、频繁得到 STAKEHOLDER、客户的反馈,需要动态调整测试计划、测试的执行。并且,敏捷测试人员参与到了更多的敏捷生产活动中,积极的影响了团队做出的决定和计划。

是的,“人”才是敏捷的实体,敏捷测试也是以人为本的。不难理解,“敏捷”的一切都围绕着人展开,如敏捷鼓励直接,平行的沟通;敏捷需要持续的客户反馈以及敏捷活动的设计,方案和决策需要团队协同制定等等,敏捷测试需要一支非同寻常的团队,不同于以往传统开发模式下的团队结构。关于敏捷团队、敏捷测试团队的组成和介绍,将是我们讲述敏捷测试实践的第一步。

“人”是重心,方法、策略是辅。为了适应不同的团队结构,不同的项目环境,敏捷项目和敏捷活动的实践也应该因“人”而异,但是,并不是说可以天马行空,我行我素。一旦脱离了正确的敏捷方法、和敏捷原则的指导,我们的敏捷活动就好比摸黑前行了。

这正是我们需要学习前辈和敏捷主义大师们的经验意义所在了,笔者在过去的实践中受益颇多的也正是前人的实践经验和方法。因此,学习前人的经验和方法,并运用这些最佳实践来帮助敏捷开发团队,甚至是传统团队来解决时下重要的问题是十分有意义的事情。笔者不敢妄自尊大将自己的一般实践纳入经典方法范畴,但经历了两年的研究和改进,笔者提出的敏捷测试的原则也得到了业内同僚和“大师”的普遍认可。经过多次和其他项目团队的经验交流,我们也不断的改进着我们的原则、方法。因此,笔者要非常感谢参与讨论的同僚们,没有你们的热情参与,也不会有今天的笔者信心百倍的执笔了。正如笔者在借鉴了前人的成功案例中的经验和方法之后定制了符合项目需求的测试原则一样,相信,读者们在阅读了笔者的敏捷测试原则和方法后,同样也会有所收获。而对笔者经历的敏捷实践活动中的方法和测试模型的讲解将成为我们讲述敏捷实践的第二步,也是本文的重点。

综上所述,笔者将运用本文的主要篇幅为大家讲解这个敏捷实践。它们是:

1. 敏捷团队组织构成,敏捷测试团队的任务和使命;

2. 敏捷开发团队以测试为驱动的开发方式——测试驱动开发,这是种独特的测试?还是

开发?

3. 递增型的迭代测试,它首先是对敏捷测试过程活动和生命周期模型的介绍,通过学习

经典的敏捷增量测试模型,我们将敏捷测试的各类活动有机的组合到了一起。在此之上,对定制后的独特敏捷增量测试模型的分析和理解,帮助我们理解测试活动的规划和管理;

4. 以及需要特别关注的递增型迭代测试的关键活动之一——“静态测试”;这也是笔者认为

的最高难度、最具影响力的敏捷测试活动。它将测试团队最早的引入产品开发环节,测试人员以第一用户的角度判断设计的有效性,此活动较早的暴露了设计缺陷、避免了团队对目标的不一致理解等,是测试活动中最有创造性价值的部分;

5. 最后,笔者将谈谈测试活动中的测试计划和管理,即关于测试任务估计,测试活动计

划,各个重要测试活动时间分配与安排的介绍。

然而,敏捷测试不是一蹴而就的,做到真正的敏捷,无论是从传统测试模式向敏捷测试的过渡,还是组建全新的团队都是需要循序渐进的,同时也需要团队成员的通力合作和不断的实践来完善敏捷测试的实践原则和方法。

回页首

敏捷团队

考虑到敏捷团队的组织结构,让我们以笔者亲身经历的项目为例来说明。笔者曾共事的整支产品开发团队被划分成 4 个相对独立的敏捷开发队伍,而每支队伍拥有相同配置的 7 名成员,他们分别具有不同的职能属性。如图 1 所示,每支敏捷队伍组成成员角色包括 1 名 UCD

(User Centered Designer),主要负责产品的主要设计,其工作主要包括界面设计、用户的用例设计等等; 1 名 Visual Designer,主要负责产品界面的色彩搭配、控件的外观设计和 UCD 界面设计方案的初步实现和美化;1 名 Information Developer,主要负责产品中信息的编辑和重要文档的撰写工作; 3 名开发人员,主要负责产品的实现。和 1 名 QA,主要负责产品质量的保障。(更多的我们将 QA 定义为具有相比于测试人员拥有更多责任的一个职能,在本文中,为了简便起见,我们仍称之测试人员)。4 支敏捷的队伍拥有相同的 SCRUM

MASTER STAKEHOLDER。通常会在同一时间进入一个迭代周期,制定各自的敏捷计划,并在同一时间退出,发布各自功能实现。而 4 支队伍的劳动果实被集成到一起就形成了可发布的产品了。

图 1. 敏捷开发团队的组织结构

因为敏捷团队中只有 1 名测试人员,因此需要一臂承担测试策略的制定,测试计划,测试脚本,测试用例设计以及测试的执行,帮助团队发现潜在问题,并协助解决问题的工作。敏捷团队的敏捷原则也是测试人员敏捷活动的规范,测试也需要拥有和团队的良好沟通,高度迭代的活动和不断的获得 STAKEHOLDER 的反馈。那团队的结构与敏捷本身有什么直接关系呢?与敏捷测试又有多少关联呢?

谈到这里,想起曾经有朋友向我咨询有关敏捷团队的某些职能的人力配备的问题。其实,笔者也无意论证 7 个人为什么是最佳组合,为什么不是 17 个,20 个人的组合。但是,敏捷原则告诉我们敏捷团队是高度协同、民主和平等的团队,为了让团队中每个人充分高效的工作。相同职能下的组员至多不好超过 3 名,最佳配置也是不同职能下配置 1 个人头。因此、在这样一个小型、平行的组织结构里,沟通更加易于建立,沟通复杂度也相对较低,相比 17、20 人的团队组织,沟通的代价也小很多。相反,很难想象在一个敏捷团队中会拥有诸多不同风格的执行者,决策者将是个怎样的混乱情况。

此外,经历过敏捷测试的体验,我们发现一个单一的敏捷团队最好保持较小的“尺寸”。这是因为拥有很多测试人员的敏捷团队通常不但需要更大的实际工作量来匹配庞大的机体而导致团队任务量更巨大,更复杂,失去自我管理的信心,而每个测试人员也将要花费大量精力和时间投入到内部沟通,和可能因为内部缺乏一致而导致的更加频繁的反复沟通中。

每名敏捷的测试人员需要和其他敏捷团队成员保持频繁而必要的沟通以保证对目标,需求、设计的充分正确的理解,对需求变化能够迅速的做出反应。另外,还需要与职能队伍中的其他测试成员保持一致性。如此一来,沟通代价激增了,它将占到测试人员的工作中的较大比例。而这种内部沟通、协调,却不能定义为敏捷的 Backlog 项目来计入团队整体的工作输出。因此,整体的测试效率并不一定随着人力资源的投入而递增。非但没有实现敏捷原则,而恐怕因为团队的组织结构变得更加庞杂。所谓的“自我管理、自我发展”的团队只能因而依靠传统的管理和规划了。笔者认为,除了因为特殊阶段,特殊时期,敏捷团队需要“聚合”更多资源来一并解决存在的高优先级的体力型问题外,敏捷的团队应该尽量保持着较小的“尺寸”。

果真项目投入了很多的人力资源,无论设计还是实现、测试团队拥有较大的人数,那么我们应该考虑将这样的团队可以分得更小些,工作量也相应分得更精细些,直至接近我们建议的最佳组合。至少我们认为要做好敏捷测试,就要确保敏捷团队中的每一个职能拥有足够清晰的职责范围和一定程度下自由空间和在这个空间内的充分授权。因此,但从人数和职能构成上,敏捷团队的构成一定是不可忽略的重点。

正像我们前面提到的,确认软件开发过程的正确性也尤为重要,因此作为敏捷的测试人员,更要了解敏捷的过程,比如说,测试人员需要帮助 UCD 和开发人员确定需求的可行性,测试人员要督促开发人员及时发布 build,以保障迭代结果最终能够在通过足够的测试后成功发布等。在 build 发布后,测试人员要首先验证当前迭代的任务是否已经完成,其次才是验证产品功能的正确性。也为了能够在日后重复性和体力型劳动中解放出宝贵的时间去覆盖测试更加紧要的内容,如可用性,全球化等,测试人员需要自动化一部分测试,创新的、灵活的工作。

敏捷团队是自我管理的团队,高度协作的团队,质量目标即是测试团队也是整个开发团队追求的目标,因此开发团队应将做好单元测试,设计团队将帮助测试团队设计好测试用例作为计划内的一项工作。这里我们推广、建议开发人员采用、普及测试驱动开发模式。

回页首

测试驱动开发

测试驱动开发表现出迭代开发的最核心的就是开发人员自己能够第一时间确认其需求得到了正确实现,而当单元测试覆盖了更多的内容,代码质量也将得到提高。测试驱动开发的指导思想就是让开发人员在编写功能代码之前,先根据需求编写测试代码。先思考如何对将要实现的功能进行验证,并完成单元测试脚本的编写,然后编写足够,仅仅足够的功能代码满足这些测试用例,直至通过测试。按照这个方法,递增的在迭代中增加新功能的单元测试和功能代码编写,直到完成全部功能的开发。

在单元测试活动中,测试人员也被鼓励参与到单元测试的设计中来,不但可以帮助开发人员构思出更多的单元测试用例来扩大单元测试的覆盖率,还可通过学习如何使用单元测试,如何复用单元测试用例到回归测试和功能测试,以达到最大化利用有效的资源(如下图)和节约成本的作用。同时,在回归测试和用户接收测试(User Acceptance Test)中如能将单元测试脚本有机的关联起来,并自动化其执行,更能够进一步提高测试的成效并降低测试成本。

单元测试脚本因随需求、设计的变化随时更新。需要开发人员站在全局的立场,开发始终坚持先修改测试脚本,再修改产品原代码。此时,也建议测试人员参与单元测试脚本的改进,帮助开发人员合理的变更单元测试脚本,同时着手修改测试计划和测试策略。

图 2. 测试驱动开发

回页首

递增的迭代测试

测试驱动开发的原则应该运用于每一迭代周期的开发中。但是,测试驱动开发的单元测试仍然是以开发为目的的活动,虽然自动化测试,回归测试和用户的接收测试(User Acceptance Test)可以通过复用单元测试脚本提高以后的测试工作的效率,但单元测试不是我们敏捷测试讨论的重点。

敏捷测试活动的主要承载者还是敏捷测试人员。测试人员如何运用敏捷原则指导测试活动还是笔者在敏捷测试实践一文中要讲述的重点。以下,笔者将通过两个迭代测试模型来帮助了解测试人员如何结合敏捷原则实践敏捷的测试活动。

经典敏捷增量测试模型

测试是敏捷开发过程重要的环节,自始自终测试贯穿于每个迭代。Scott W. Ambler 认为就整个产品的敏捷开发生命周期可以分为 4 个阶段,即初始阶段,项目的建设阶段,产品发布阶段和产品的维护阶段,在关键的项目建设阶段中,测试被分成两个部分,Confirmatory 测试和 Investigative 测试。1下面,我们来讲讲迭代的测试的这两个方面。

图 3. 敏捷测试生命周期

Confirmative 测试就是对 build 的有效性和关键的功能是否正确进行验证,测试人员依据测试用例和测试脚本的完整测试是工作的重心。原文中的 Confirmative 测试包含了开发人员的单元测试(必不可少的重要开发活动)和被称之为 Agile Acceptance Testing 的测试部分,这段时间的测试任务用来保障迭代的必须输出的质量。基本的功能、非功能的任务,但凡是在迭代开始时制定的计划中承诺的高优先级需求,哪怕是很繁琐的细节工作都要被充分的测试和验证。

Investigative 测试是对 Confirmative 测试的补充和是更广泛的测试活动,测试团队在完成 Confirmative 测试后的时间用来做这部分测试,它包含功能测试,文档测试和系统测试以及和其他产品、环境之间产生的必然的 Integration 测试,还有个非常有趣的测试活动叫做

Exploratory 测试,笔者认为这部分测试是测试人员创造性的采用多种不同途径去尝试测试产品。就好比“猴子敲键盘”一样,测试员使用各种手段来考验 build 和产品的稳定和正确性等。

篇五:敏捷测试流程

敏捷测试流程

敏捷开发更注重人与人之间的沟通交流,弱化文档,但是一些必要性的文档还是需要保留。

第一阶段,需求分析验证,测试人员对需求分析的质量控制主要体现在验证该需求的可实现性。本阶段,测试要尽量详细的了解需求,对整个业务有一个比较全面的了解。

第二阶段,迭代过程—研发阶段,项目立项,整个团队进入研发阶段。项目经理制定项目的周期、迭代次数、里程碑事件等,测试的总体时间和规划参照此规范进行。

其中,在每个迭代过程中,

1. 迭代开始会议,测试人员充分了解每个用户故事的功能、输入输出以及该功能的结束标准,并规定软件的交付条件。此会议中,评估时间时需要考虑测试的时间。

2. 测试用例编写及审核。迭代前期,测试人员编写测试用例,测试人员之间互审用例,开发人员和项目经理负责审核测试用例;

3. 执行测试。开发人员交付软件版本,如果符合条件(由测试提出,核心功能验证),测试人员进入测试阶段,包括功能测试,系统测试等,提交bug验证bug以及维护测试用例;

4. 测试结束,测试人员提交本期迭代的完成情况;

5. 迭代结束会议,团队总结本期迭代的经验教训。好的习惯和方法,继续保留;需要改进的地方,下期迭代改进。

另外,最开始的迭代,主要关注功能测试;随着研发过程的推进,除了每个迭代本身的功能测试,需要加入集成了前面迭代的系统测试;还要考虑是否要加入自动化测试; 每日站立会议,描述今日的测试重点以及遇到的困难,加强开发和测试的沟通,提供工作效率。

第三阶段,迭代过程结束,符合准入标准后(同样由测试提出)进入alpha版本测试,alpha测试主要是整个业务流程的系统测试以及性能测试;本期测试结束,发布测试报告。本阶段需要测试人员控制软件版本,保证上线的软件是经过测试的版本。

体裁作文