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

敏捷测试方法

来源:学生作业帮助网 编辑:作业帮 时间:2024/09/24 22:28:07 体裁作文
敏捷测试方法体裁作文

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

敏捷测试的最佳实践,第 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 和产品的稳定和正确性等。

篇二:从一个实例详解敏捷测试的最佳实践

从一个实例详解敏捷测试的最佳实践

第一部分:敏捷软件开发简介

敏捷软件开发(Agile Software Development)初起于九十年代中期。最早是为了与传统的瀑布软件开发模式(waterfall model)相比较,所以当时的方法叫做轻量级方法(Lightweight methods)。二十世纪初,17 位该方法的倡导者建立了敏捷联盟(Agile Alliance),并将该软件开发方法命名为敏捷软件开发过程。

敏捷联盟在成立之初总结了四条基本的价值原则:

1.

2.

3.

4. 人员交流重于过程与工具(Individuals and interactions over processes and tools) 软件产品重于长篇大论(Working software over comprehensive documentation) 客户协作重于合同谈判(Customer collaboration over contract negotiation) 随机应变重于循规蹈矩(Responding to change over following a plan)

基于这四点原则,敏捷软件开发有着自己独特的流程(参见图 1)。

图 1. 敏捷软件开发流程

整个过程中夹杂了很多在敏捷开发前己经出现的软件开发方法,包括极限编程(Extreme Programming,1996)、Scrum(1986)、特征驱动开发(Feature Driven Development),测试驱动开发(Test Driven Development)等。这些方法在敏捷软件开发流程的各个阶段都有充分的体现和应用。

例如,Scrum 主要着重于项目管理,团队中的项目经理(Scrum master)需要在每个客户需求到来的时候制定 Sprint 的周期,定义每个 Sprint 的目标、分派任务、进行监督、最后总结得失并开始计划新的 Sprint。

相反,特征驱动开发和测试驱动开发主要被应用于 Sprint 周期中。如果项目进行于开发新功能时期,这个阶段主要推行特征驱动开发。所有测试和开发人员都将自己的工作重心放在新的功能上面,从开发和测试两个方面来完成各自的任务。如果项目进行于测试新功能时期,这个阶段需要将工作的重点挪到测试上来。所有的测试和开发人员都密切关注着目前版本的缺陷状况。测试人员需要在每天的站立会议(Daily Standup Meeting)上报告前一个工作日发现的新缺陷情况,项目经理根据项目进度和缺陷严重性来决定是否修复这些问题。需要及时修复的缺陷是目前 Sprint 中的一个新任务,将由项目经理添加到 Sprint Backlog 上并通知开发人员去修复漏洞。

对于敏捷开发和测试中的审查过程,极限编程中的同行评审(peer review)思想得到了充分应用。代码和文档的审查追求简单而高效。团队成员两两组成一对,互相评审;有时候,一个开发和一个测试人员也可以组成一对,互相协作。这样能够有助于缺陷和问题在第一时间被抹杀在萌芽中。

敏捷开发还有以下几个关键概念 (Key Issues):

1.

2.

3.

4.

5.

6.

7. 迭代过程(Iterative process) 用户故事(User stories) 任务(Tasks) 站立会议(Stand-up meeting) 持续集成(Continuous integration) 最简方案(Simplest solutions) 重构(Re-factoring)

这些概念是敏捷开发中经常使用到的观点和方法。下面我们将详细论述测试人员在敏捷软件开发中扮演的角色和职能。

回页首

第二部分:敏捷开发中的测试人员

本部分将简要介绍敏捷开发中测试人员所需要具备的素质和职责。

2.1 敏捷开发团队介绍

我们的敏捷开发团队由四位开发人员、两位测试人员、一位产品设计,一位项目经理和一位产品经理组成(参见图 2)。每天早上十点,在固定的时间和会议室里面,团队会举行站立会议。这时候,团队成员按照既定的顺序向项目经理汇报各自前一天完成的任务,所遇到的困难和当天要完成的任务。同时,项目经理更新 Sprint Backlog(一张制作精良的 Excel 表格),并及时解决每个人所提出的问题。

图 2. 敏捷开发团队成员

由于敏捷开发要求参与人能够快速而高效得应对变化,所以无形中对测试人员提出很高的要求。

2.2 测试人员需要具备的素质

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

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

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

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

析员

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

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

2.3 测试人员的主要职责

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

1. 定义质量 (Define Quality):这应该是软件测试人员的基本职责。敏捷方法鼓励测试

人员在 Sprint 计划的时候直接与客户交流,从自己的经验出发,共同为产品功能制定质量要求。

2. 交流缺陷(Communication):敏捷过程强调团队中的交流。开发人员经常会专注于

重要而新奇的功能,测试人员应该抓住细节,寻找设计中的“missing door”;另外,开发人员使用单元测试来保证产品的基本质量,测试人员可以使用验收测试

(Acceptance Test)来鉴定客户需求与实际成果之间的不一致性。

3. 及时反馈 (Feedback): 敏捷过程强调简单而高效。测试人员需要及时反馈产品目前

的质量问题。这样一来,团队才可以立刻着手解决。如果传统的流程是一周汇总一次状态的话,敏捷流程要求每天汇总质量问题。在我们的项目中,内部的测试报告会以网页的形式显示在内部站点上。每个团队成员能够随时获取。另外,我们的测试框架提供自助测试 (Self-assistant Test):通过点击测试用例列表中的某个具体用

例,开发人员不需要中断测试人员的工作就可以重现缺陷。

以上总结了测试人员在敏捷开发中的需要展现的能力和担负的任务,下面请跟随一个项目实例来详细了解敏捷测试的最佳实践。

回页首

第三部分:敏捷开发中的测试流程

本部分结合一个软件项目,详细介绍项目流程中的主要测试活动,每个活动的前提条件和目标任务等。

3.1 介绍项目实例

项目介绍:根据一家在线 B2B 公司的要求,我们将为其开发一款类似于谷歌的搜索服务。作为 Web Service,该服务可以内嵌于网页中。当用户输入关键词并选择商户的类型和位置后,系统会返回具体商户的列表(参见图 3)。

图 3. 项目实例图

典型的敏捷开发和测试活动参见下表。它主要由三部分构成,从最初的用户故事设计和发布计划,到几次 Sprint 周期的迭代开发和测试,以及最后的产品发布阶段。每个时间段都有相应的测试活动。通常 Sprint 周期被分成两类:特征周期(Feature Sprint)和发布周期(Release Sprint)。特征周期主要涉及新功能的开发和各类测试。发布周期则会结合计划,确定新版本功能,然后对最新的功能进行测试。

敏捷开发的主要活动

用户故事设计

发布计划

迭代 Sprint

编码和单元测试

重构

集成

执行验收测试

Sprint 结束

下一个 Sprint 开始

发布

测试活动 寻找隐藏的假设 设计概要的验收测试用例 估算验收测试时间 估算测试框架的搭建 详细设计验收测试用例 编写验收测试用例 重构验收测试 执行验收测试 执行回归测试 发布

在迭代的 Sprint 周期中,开发部分可以根据传统步骤分成编码和单元测试、重构和集成。需要指出的是,重构和集成是敏捷开发的 Sprint 迭代中不可忽视的任务。如果在新的 Sprint 周期中要对上次的功能加以优化和改进,必然离不开重构和集成。

在每个 Sprint 周期结束前,测试团队将提交针对该 Sprint 周期或者上个 Sprint 周期中已完成的功能的验收测试(在实际项目中,测试团队的进度通常会晚于开发团队)。这样一来,开发团队可以运行验收测试来验证所开发的功能目前是否符合预期。当然,这个预期也是在迭代中不断变化和完善的。

篇三:敏捷开发与敏捷测试(很详细的说明)

敏捷开发与敏捷测试

来源: cnblogs 敏捷开发:1.敏捷型方法是“适配性”而非“预设性”。重型方法试图对一个软件开发项目在很长的时间跨度内作出详细的计划,然后依计划进行开发。这类方法在计划制定完成后拒绝变化。而敏捷型方法则欢迎变化。其实,它们的目的就是成为适应变化的过程,甚至能允许改变自身来适应变化。2.敏捷型方法是“面向人”的(people-oriented) 而非“面向过程”的 (process-oriented)。 它们试图使软件开发工作顺应人的天性而非逆之。它们强调软件开发应当是一项愉快的活动。

我认为以上两个特点很好的概括了敏捷开发方法的核心思想:适应变化和以人为中心。

敏捷开发其实借鉴了大量软件工程中的方法。迭代与增量开发,这两种在任何一本软件工程教材中都会被提到的方法,在敏捷开发模式中扮演了很重要的角色。再向前追溯,我们还也可见到瀑布式与快速原型法的影子,也许还有多。 改善,而非创新。敏捷开发可理解为在原有软件开发方法基础上的整合——取其精华,去其糟粕。因此敏捷开发继承了不少原有方法的优势。“在敏捷软件开发的过程中,我们每两周都会得到一个可以工作的软件,”Fowler介绍,“这种非常短的循环,使终端客户可以及时、快速地看到他们花钱构建的软件是一个什么样的结果。”

敏捷开发提出了以下遵循的原则:

· 我们最优先要做的是通过尽早的、持续的交付有价值的软件来使客户满意。

· 即使到了开发的后期,也欢迎改变需求。敏捷过程利用变化来为客户创造竞争优势。

· 经常性地交付可以工作的软件,交付的间隔可以从几个星期到几个月,交付的时间间隔越短越好。 · 在整个项目开发期间,业务人员和开发人员必须天天都在一起工作。

· 围绕被激励起来的个体来构建项目。给他们提供所需的环境和支持,并且信任他们能够完成工作。 · 在团队内部,最具有效果并富有效率的传递信息的方法,就是面对面的交谈。

· 工作的软件是首要的进度度量标准。

· 敏捷过程提倡可持续的开发速度。责任人、开发者和用户应该能够保持一个长期的、恒定的开发速度。

· 不断地关注优秀的技能和好的设计会增强敏捷能力。

· 简单是最根本的。

· 最好的构架、需求和设计出于自组织团队。

· 每隔一定时间,团队会在如何才能更有效地工作方面进行反省,然后相应地对自己的行为进行调整。 敏捷测试流程总结:

在敏捷方法中,XP方法强调测试在整个项目开发过程中的重要性。针对敏捷开发方法的敏捷测试不同于以往针对传统开发模式的测试,在敏捷团队中,测试是整个项目组的“车头灯”,它告诉大家现在到哪了,正在往哪个方向走。测试员为项目组提供丰富的信息,使得项目组基于这些可靠的信息作出正确的决定。不仅是测试员要保证质量,而是整个项目组的每一个人都要对质量负责。测试员不跟开发人员纠缠错误,而是帮助他们找到目标,共同为达到项目的最终目标而努力。敏捷测试也需要高度迭代工作、频繁得到客户的反馈,需要动态调整测试计划、测试的执行。并且,敏捷测试人员参与到了更多的敏捷生产活动中,积极的影响了团队做出的决定和计划。

根据公司项目目前采用的敏捷开发模式,相应的敏捷测试建议采用以下流程:

1. 验证需求和设计

需求和设计具体来说一般包括:(1)由项目经理根据需求文本而编写的功能设计文本(Functional Design Specification);(2)由开发人员根据功能文本而编写的实施设计文本(Implementation Design Specification)包括(Architecture Document, Project Scope Statement, Use Case )。作为测试人员,审核重点是检查文本对用户需求定义的完整性、严密性和功能设计的可测性.

在测试初期,测试人员要学会做静态测试,做好需求分析,做好对设计逻辑的分析。测试人员要更多的思考需求的可实现性,将自身作为第一用户积极参与项目和系统的需求分析,设计和开发。积极地参与前期工作,并迅速反馈给设计和开发其静态测试结果。要尽早的开始测试,不要等待到功能完全做好才开始。

产出物:测试需要提交评审结果文档,可以让测试更多的参与DB Design,框架的评审中来

2. 测试计划,测试用例

2.1 编写计划、测试用例

在敏捷开发的过程中由于是根据每个user story来估算时间的。开发人员将对本次迭代所需要的完成的user story进行评估。开发人员可以和客户直接沟通,来确定每个user story的优先级。

好处:

客户可以很清楚的了解到哪些user story需要花费多长的时间,以及他们的优先级。

问题:

在user story的时间估算上,开发人员常会估算过少。引起版本无法按时发布或者必须进行加班才能进行发布。

分析:

由于版本更新很快,任务的时间都是以小时来进行估算的。开发人员一般会忽略掉开发以外的时间,比如开发中遇到问题的时间,开会,给其他成员提供帮助的时间,等等。

举个例子:

开发人员估算某个user story编码的时间需要1.5天,开发人员自己估算了其他时间为半天。于是开发人员给的估算时间是2天。

开发阶段实际的花费时间如下,每天花费开例会的时间。在例会中项目的其他成员需要技术上的支持。于是发费了3个小时进行帮助。在开发的过程中遇到了一些没有预见到的问题,结果解决问题花费了4个小时。(也许更多)。需要处理一些公司突发性的事务等等。

所以非常建议大家在估算时间上能充分的考虑到以外的因素,某本XP相关的书上写到,在时间估算上最好的时间是编码时间的2-3倍。听起来很吓人,但是实际的过程中,的确需要这么多的时间。

测试人员根据已审核通过的需求和设计编制测试计划,设计测试用例。在前面提到的三种文本中,功能设计文本是主要依据。测试的这两个文本也要被项目经理和开发人员审核。

2.2 测试用例的审核

为使开发人员能参与到Test Case的Review中来,以保证TC的质量和可行性,确保测试工作的顺利进行,让开发人员迅速地了解测试的重点并给出相应的意见和建议,测试人员在出 TC的同时,应出一份TC_Matrix(Test Case跟踪矩阵),其中注明TC已覆盖了哪些Features,具体每个Features对应的TC的编号,这样在测试经理和PM对TC进行 Review的时候,能够对TC的覆盖率一目了然,对覆盖率不足(如某个重点Feature的Test Case不够)的地方能够及时给出意见。

另外,在每天早上的Morning Meeting上,测试人员可以简洁地讲述一下当天测试的重点部分,以及项目中存在哪些严重的bug,让开发人员了解当天测试的重点是什么,怎样进行测试,并提出自己的意见和建议。这样做加强了开发与测试人员的交流和沟通,使测试工作能够更加有效,更加顺利地开展。 在迭代后期测试要抽时间更新test case。

3. 实施运行测试

在敏捷方法中,测试有两种:单元测试和接收测试。单元测试是由开发人员来完成的,接收测试是由客户代表来完成。

由于我们客户无法在现场,我们采取了,开发人员做单元测试,测试人员做验证测试,最后由客户进行接收测试。在每个版本发布给客户之前必须由测试人员进行测试,发布版本之后由客户做接收测试,提出需要修改的地方。需要修改的地方将在下一个发布完成。

· 单元测试

在daily build版本给测试前,开发首先要做单元测试,提前告知软件中的薄弱环节,帮助测试人员调整测试重点。Unit test

做单元测试的好处是可以提高版本质量,减轻测试的工作量,减少浅层次的bug的发生率,使测试人员能够将更多的精力投入到寻找深层次的bug上面。

· 验证测试

测试人员的验证测试从总体上说就是将上一步设计的测试用例按计划付诸实施的过程。这一阶段的测试必须在周密的计划下进行。这种计划性首先体现在开发和测试的相互协调配合,根据产品的架构和功能模块的依赖关系,按照项目的总体计划共同推进。从测试的过程来看,测试执行的一开始可以是针对部分功能的,之后可以逐步扩展。接着开始采用迭代的过程完成测试任务,即将测试任务划分为多个周期,一开始可以做些关键的功能性测试,可以对代码中的可复用部分(组件,构件)做完整的测试。接着的迭代周期可以做边缘化的功能测试和其他测试,最后的几个迭代应该用于回归测试,和关键的性能和稳定性测试。

敏捷测试方法

3.1 每日提供bug趋势

为方便衡量项目的进度,测试可每天测试完毕后提供测试的bug趋势,即将每天新生成的Bug数和每天被解决的Bug数标成一个趋势图表。一般在项目的开始阶段新生Bug数曲线会呈上升趋势,到项目中后期被解决Bug数曲线会趋于上升,而新生Bug数曲线应下降,到项目最后,两条曲线都趋向于零。PM会持续观察这张图表,确保项目健康发展,同时通过分析预测项目Bug,对于每个版本的bug,开发都应该想想为什么会出现这样的问题,特别是很低级的bug,对于同类的bug,是否可以避免。

测试需要考虑:探索性测试用例的编写

3.2 测试用例的维护

在执行测试阶段中,测试人员需要对已有的测试用例进行及时的维护。通常以下两种情况下要新增一些测试用例:一是对于当初测试设计不周全的领域,二是对于外部的Bug(比如从Beta客户报告来的),

没有被现有测试用例所覆盖。当产品的功能设计出现更改时(敏捷项目中功能设计的更改频繁),所涉及的测试用例也要相应地修改,使测试用例保持和现有的功能需求同步。

3.3 根据项目不断补充Common Sense

在项目进行过程中,测试人员需要不断积累经验,不断补充、完善各类目的Common Sense标准。例如,由CTTS项目总结出的Common Sense for USA标准,在以后的美国项目中要严格按照它来执行测试,保证以前出现过的失误在以后的项目测试中不会再出现。在保证项目质量的同时,不断积累新的经验。

3.4 控制中间版本

为更好地保证软件质量,规避风险,必须加强对中间版本的控制。例如,客户要求或者计划周五要提交版本,则周三一定要提交一个中间过程的版本进行测试,也就是控制中间版本,避免所有的工作都压到后期最紧急的时候去完成。以前的项目中出现过项目前期很轻松,到后期bug越来越多,开发人员和测试人员都异常忙碌,经常加班的情况。为减少后期工作量,规避风险,建议开发进行Daliy Build,或者按照完成一个feature就进行一次build,针对这个feature进行测试,这样就可以有效避免后期bug越来越多的状况发生,后期工作量也就会相应减少,项目的质量也会更有保证。

3.5 发布版本前编写Release Note

在每次发布版本之前,测试人员要根据待发布的版本情况编写Release Note,使客户对发布的版本情况一目了然。Release Note主要包括三方面的内容:Fixed,New Features,Known Problems。其中,Fixed部分写明此版本修复了上个版本中存在的的哪些比较大的bug;New Features部分写明此版本新增加了哪些功能;Known Problems部分写明此版本尚存在哪些比较大的问题,有待下个版本改善;或者列出需求不太明确的地方,有待客户给出明确答复意见,在下个版本中完成。

4. 需求管理

采用敏捷开发模式的项目中,客户对于需求的变更很频繁。因此,需求管理是十分必要和重要的工作。整个项目进行过程中,对不断变化的需求,一定要作跟踪,每次的需求变更都要有相应的历史记录,方便后期的管理和维护工作。可将每次的变更整理记录到需求跟踪文档中,并使该文档始终保持最新更新的状态,与需求的变化保持同步。

问题:

客户可能会在一个功能点上来回修改他们的需求,也许开始需要某个功能,结果做完以后又觉得不好,于是让去掉这个功能。后来又由于一些原因,有需要加上。在整个过程中可能来回修改了很多次。那一定要记录下变更的内容和日期。可能后期客户会觉得一个功能怎么会花那么多的时间,不是以前很早就做过

篇四:敏捷测试流程

敏捷测试流程

在敏捷方法中,XP方法强调测试在整个项目开发过程中的重要性。针对敏捷开发方法的敏捷测试不同于以往针对传统开发模式的测试,在敏捷团队中,测试是整个项目组的“车头灯”,它告诉大家现在到哪了,正在往哪个方向走。测试员为项目组提供丰富的信息,使得项目组基于这些可靠的信息作出正确的决定。不仅是测试员要保证质量,而是整个项目组的每一个人都要对质量负责。测试员不跟开发人员纠缠错误,而是帮助他们找到目标,共同为达到项目的最终目标而努力。敏捷测试也需要高度迭代工作、频繁得到客户的反馈,需要动态调整测试计划、测试的执行。并且,敏捷测试人员参与到了更多的敏捷生产活动中,积极的影响了团队做出的决定和计划。根据公司项目目前采用的敏捷开发模式,相应的敏捷测试建议采用以下流程:

1. 验证需求和设计

需求和设计具体来说一般包括:

1) 由项目经理根据需求文本而编写的功能设计文本(Functional Design Specification)

2) 由开发人员根据功能文本而编写的实施设计文本(Implementation Design Specification)包括(Architecture Document, Project Scope Statement, Use Case )。作为测试人员,审核重点是检查文本对用户需求定义的完整性、严密性和功能设计的可测性.

在测试初期,测试人员要学会做静态测试,做好需求分析,做好对设计逻辑的分析。测试人员要更多的思考需求的可实现性,将自身作为第一用户积极参与项目和系统的需求分析,设计和开发。积极地参与前期工作,并迅速反馈给设计和开发其静态测试结果。要尽早的开始测试,不要等待到功能完全做好才开始。

产出物:测试需要提交评审结果文档,可以让测试更多的参与DB Design,框架的评审中来

2. 测试计划,测试用例

1) 编写计划、测试用例

在敏捷开发的过程中由于是根据每个user story来估算时间的。开发人员将对本次迭代所需要的完成的user story进行评估。开发人员可以和客户直接沟通,来确定每个user story的优先级。

好处:客户可以很清楚的了解到哪些user story需要花费多长的时间,以及他们的优先级。 问题: 在user story的时间估算上,开发人员常会估算过少。引起版本无法按时发布或者必须进行加班才能进行发布。

分析: 由于版本更新很快,任务的时间都是以小时来进行估算的。开发人员一般会忽略掉开发以外的时间,比如开发中遇到问题的时间,开会,给其他成员提供帮助的时间,等等。 举个例子: 开发人员估算某个user story编码的时间需要1.5天,开发人员自己估算了其他时间为半天。于是开发人员给的估算时间是2天。 开发阶段实际的花费时间如下,每天花费开例会的时间。在例会中项目的其他成员需要技术上的支持。于是发费了3个小时进行帮助。在开发的过程中遇到了一些没有预见到的问题,结果解决问题花费了4个小时。(也许更多)。需要处理一些公司突发性的事务等等。

所以非常建议大家在估算时间上能充分的考虑到以外的因素,某本XP相关的书上写到,在时间估算上最好的时间是编码时间的2-3倍。听起来很吓人,但是实际的过程中,的确需要这么多的时间。 测试人员根据已审核通过的需求和设计编制测试计划,设计测试用例。在前面提到的三种文本中,功能设计文本是主要依据。测试的这两个文本也要被项目经理和开发人员审核。

2) 测试用例的审核

为使开发人员能参与到Test Case的Review中来,以保证TC的质量和可行性,确保测试工

作的顺利进行,让开发人员迅速地了解测试的重点并给出相应的意见和建议,测试人员在出 TC的同时,应出一份TC_Matrix(Test Case跟踪矩阵),其中注明TC已覆盖了哪些Features,具体每个Features对应的TC的编号,这样在测试经理和PM对TC进行 Review的时候,能够对TC的覆盖率一目了然,对覆盖率不足(如某个重点Feature的Test Case不够)的地方能够及时给出意见。

另外,在每天早上的Morning Meeting上,测试人员可以简洁地讲述一下当天测试的重点部分,以及项目中存在哪些严重的bug,让开发人员了解当天测试的重点是什么,怎样进行测试,并提出自己的意见和建议。这样做加强了开发与测试人员的交流和沟通,使测试工作能够更加有效,更加顺利地开展。 在迭代后期测试要抽时间更新test case。

3. 实施运行测试

在敏捷方法中,测试有两种:单元测试和接收测试。单元测试是由开发人员来完成的,接收测试是由客户代表来完成。 由于我们客户无法在现场,我们采取了,开发人员做单元测试,测试人员做验证测试,最后由客户进行接收测试。在每个版本发布给客户之前必须由测试人员进行测试,发布版本之后由客户做接收测试,提出需要修改的地方。需要修改的地方将在下一个发布完成。

1) 单元测试

在daily build版本给测试前,开发首先要做单元测试,提前告知软件中的薄弱环节,帮助测试人员调整测试重点。Unit test 做单元测试的好处是可以提高版本质量,减轻测试的工作量,减少浅层次的bug的发生率,使测试人员能够将更多的精力投入到寻找深层次的bug上面。

2) 验证测试

测试人员的验证测试从总体上说就是将上一步设计的测试用例按计划付诸实施的过程。这一阶段的测试必须在周密的计划下进行。这种计划性首先体现在开发和测试的相互协调配合,根据产品的架构和功能模块的依赖关系,按照项目的总体计划共同推进。从测试的过程来看,测试执行的一开始可以是针对部分功能的,之后可以逐步扩展。接着开始采用迭代的过程完成测试任务,即将测试任务划分为多个周期,一开始可以做些关键的功能性测试,可以对代码中的可复用部分(组件,构件)做完整的测试。接着的迭代周期可以做边缘化的功能测试和其他测试,最后的几个迭代应该用于回归测试,和关键的性能和稳定性测试。

3) 每日提供bug趋势

为方便衡量项目的进度,测试可每天测试完毕后提供测试的bug趋势,即将每天新生成的Bug数和每天被解决的Bug数标成一个趋势图表。一般在项目的开始阶段新生Bug数曲线会呈上升趋势,到项目中后期被解决Bug数曲线会趋于上升,而新生Bug数曲线应下降,到项目最后,两条曲线都趋向于零。PM会持续观察这张图表,确保项目健康发展,同时通过分析预测项目Bug,对于每个版本的bug,开发都应该想想为什么会出现这样的问题,特别是很低级的bug,对于同类的bug,是否可以避免。 测试需要考虑:探索性测试用例的编写

4) 测试用例的维护

在执行测试阶段中,测试人员需要对已有的测试用例进行及时的维护。通常以下两种情况下要新增一些测试用例:一是对于当初测试设计不周全的领域,二是对于外部的Bug(比如从Beta客户报告来的),没有被现有测试用例所覆盖。当产品的功能设计出现更改时(敏捷项目中功能设计的更改频繁),所涉及的测试用例也要相应地修改,使测试用例保持和现有的功能需求同步。

5) 根据项目不断补充Common Sense

在项目进行过程中,测试人员需要不断积累经验,不断补充、完善各类目的

Common Sense标准。例如,由CTTS项目总结出的Common Sense for USA标准,在以后的美国项目中要严格按照它来执行测试,保证以前出现过的失误在以后的项目测试中不会再出现。在保证项目质量的同时,不断积累新的经验。

6) 控制中间版本

为更好地保证软件质量,规避风险,必须加强对中间版本的控制。例如,客户要求或者计划周五要提交版本,则周三一定要提交一个中间过程的版本进行测试,也就是控制中间版本,避免所有的工作都压到后期最紧急的时候去完成。以前的项目中出现过项目前期很轻松,到后期bug越来越多,开发人员和测试人员都异常忙碌,经常加班的情况。为减少后期工作量,规避风险,建议开发进行Daliy Build,或者按照完成一个feature就进行一次build,针对这个feature进行测试,这样就可以有效避免后期bug越来越多的状况发生,后期工作量也就会相应减少,项目的质量也会更有保证。

7) 发布版本前编写Release Note

在每次发布版本之前,测试人员要根据待发布的版本情况编写Release Note,使客户对发布的版本情况一目了然。Release Note主要包括三方面的内容:Fixed,New Features,Known Problems。其中,Fixed部分写明此版本修复了上个版本中存在的的哪些比较大的bug;New Features部分写明此版本新增加了哪些功能;Known Problems部分写明此版本尚存在哪些比较大的问题,有待下个版本改善;或者列出需求不太明确的地方,有待客户给出明确答复意见,在下个版本中完成。

4. 需求管理

采用敏捷开发模式的项目中,客户对于需求的变更很频繁。因此,需求管理是十分必要和重要的工作。整个项目进行过程中,对不断变化的需求,一定要作跟踪,每次的需求变更都要

篇五:敏捷测试流程

敏捷测试流程

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

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

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

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

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

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

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

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

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

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

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

体裁作文