文档库 最新最全的文档下载
当前位置:文档库 › 组织敏捷测试

组织敏捷测试

组织敏捷测试
组织敏捷测试

组织敏捷测试

在上两篇文章《什么是敏捷软件测试》与《自动化测试-敏捷测试的基石》中,我们阐述了敏捷测试的概念,并简单介绍了敏捷测试中的自动化测试观点。在这篇文章中,我们将围绕“测试组如何在组织中组织敏

捷测试”这个话题来展开讨论。

传统的软件测试有非常明确的测试阶段划分和测试过程定义,按照时间顺序开展每个阶段的测试,以及按照时间顺序组织每个阶段的测试构成了传统测试的主要组织方式。按照传统的软件测试阶段划分,软件测试可以在时间序上被分为单元、集成、系统与用户验收测试,分别对应软件的编码、设计与需求阶段。这种按照时间顺序的测试阶段划分对传统软件开发而言非常适用:测试的每个阶段用于对开发相应阶段的产出进行校验和确认,阶段之间通过固定的输入(通常以文档体现)和输出(例如测试报告)进行衔接。而传统的软件测试过程则一般被定义成测试需求、测试计划、测试设计、测试执行与测试评估总结这五个时间序的步骤,用以指导每个阶段中的测试。

在传统的软件开发模式中,这种明确的测试阶段划分和测试过程定义工作得非常好,但在敏捷的环境中,这种模式受到了很大的挑战。挑战首先在于测试阶段的划分上,敏捷测试鼓励为产品建立各层面的验证体系,从某种程度上来说,也可以将其对应到单元测试(代码级别的测试)、集成测试(接口与服务测试)、系统测试(UI级别的测试、系统性能测试等)以及用户验收测试(接受测试)上,但在敏捷环境下,各测试阶段间严格的时间顺序不复存在,敏捷开发鼓励并行,因此在一个敏捷项目中,单元、集成和系统等测试在时间顺序上通常是同时发生的。其次,挑战来自于敏捷中所采纳的方法:TDD、BDD和ATDD

等技术的应用使得敏捷环境中的测试成为了超越“验证和确认开发阶段产出”的存在,测试一方面是验证和确认,另一方面是设计。在这种情况下,一定要将测试划分为时间序上的测试阶段是非常不合理的。因此,在敏捷测试中,我倾向于抛弃单元测试、集成测试与系统测试的概念,而代之以代码测试、服务/接口测试、系统测试——后者突出的是测试的对象,而非阶段。总而言之,在敏捷测试范围内,我们不需要过多的关心什么类型的测试应该在什么时候发生,而是始终秉承“设置尽可能多的不同层次的测试”的理念,在整个开发过程中为产品设置尽可能多的测试。

相较于传统软件测试的测试过程而言,敏捷中的测试并不特别注重过程,但这并非意味着敏捷测试不需要过程的控制。实际上,如果考察敏捷开发的一个迭代,在一个迭代中发生的测试与传统软件测试在过程管理上还是有诸多类似之处的。通常一个迭代中的测试目标相对固定:针对迭代定义的新功能的验证、针对原有功能的验证、以及保证开发过程中的持续的开发质量。与传统的软件测试相比,在验证方面,敏捷测试的一个迭代的测试目标与其基本一致;另一方面,由于测试执行活动仍然需要依赖计划、用例等,对传统软件测试的过程稍加修改就可以将其应用在每个迭代的测试活动中。我建议在一个迭代中,针对验证目标的测试仍然按照测试需求、测试计划、测试设计与执行、以及测试评估总结的过程方式来管理,但

是由于敏捷测试本身的特性(迭代周期短,因而每个迭代中新增内容的验证不多;大量依赖自动化测试;依赖沟通而非文档等),在具体的操作上有一些区别。以下是本人建议的在一个迭代中针对验证与确认工作的测试流程:

● 测试需求

收集和整理本迭代中的所有需求(主要体现为新增功能和原有功能的修改),建议以在线文档(例如google的google docs)的方式管理每个迭代中的需求变化。通常需要对来自产品的需求进行一定程度的细化,细化到本产品的测试工程师能够清楚理解需要验证的点即可。测试需求通常需要与产品负责人和开发组确认(非正式评审)。

● 测试计划

“一页纸(One Page)”的测试计划是一个很好的实践。测试计划中只需要包含本次迭代的目标,以及简单的时间和资源计划即可。

● 测试设计与执行

敏捷测试中的测试设计与执行通常是交织在一起的,对于新功能,测试工程师通常通过对新功能的使用和尝试来了解之,然后为其设计测试用例并用脚本(手工测试用例或自动化脚本)的方式将其固定下来;而对于原有功能的测试主要依靠自动化测试来进行。在测试设计阶段,测试工程师需要维护验收测试,以保证其准确地反映了每个迭代的目标。推荐使用在线表格或是轻量的用例管理软件对用例进行管理,在自动化程度比较高的情况下,甚至可以直接依赖测试需求列表和自动化测试脚本,而无需创建手工用例集合。

● 测试评估总结

测试评估总结意味着对每个迭代中进行的测试进行评估与总结。与传统的测试相同,敏捷测试中评估的主要目的同样是获得被测产品质量与测试质量的度量,但在具体方法上与传统软件测试有一定的差别。

在系统测试层面上,在传统的软件测试中,我们通常定义从测试需求到测试用例的跟踪矩阵,基于这个矩阵计算测试覆盖率,据此获得测试质量度量,但在敏捷测试中,一方面,敏捷测试并不鼓励建立完整的从测试需求到测试用例的跟踪矩阵,因此很难的到一个精确的测试覆盖度量;另一方面,敏捷测试大量使用探索性测试的方法,由于探索性测试在覆盖方面的随意性,也很难准确度量得到覆盖率。因此,我倾向于通过“保证验收测试的完备性”和“在更低层次衡量测试覆盖率”作为测试质量评估的标准。由于一个迭代的周期很短,因此一个迭代中能够被添加和修改的功能较少,在这种情况下,维护完备的验收测试应该不是非常困难;而在更底层的测试中,通过接口或是代码覆盖率来衡量已建立的测试的完备性是更合理的方式。

对于被测产品的质量评估则完全依靠为产品建立的各种不同层次的测试。与传统软件测试相比,敏捷测试有两个主要的不同:首先,敏捷测试中的质量评估遍布整个开发过程,代码评审、持续集成、开发测试、接口测试等各种测试遍布在整个开发过程中,通过这些评审和测试,能够在各个维度上建立针对产品的质量评估;其次,敏捷测试通常非常看重产品的可测试性,因此,在整个质量评估体系中,对产品可测试性的评估是一个不能被忽略的因素。对产品可测试性的评估通过代码评审、代码测试覆盖率(通常具有好的可测试性的代码更容易达到更高的测试覆盖率)或是使用其他相关工具进行评估。

敏捷中的测试总结工作则主要是收集整理各次迭代中可复用的测试资源,从探索性测试中总结发现缺陷的模式,以及从缺陷分析中获得预防缺陷的信息。

当然,除了在每个迭代中针对迭代的目标建立和执行测试外,敏捷测试还意味着对产品质量和生产率的不断促进和提升。我个人倾向于使用任务列表来描述敏捷测试中的相关任务:

● 建立和维护持续集成,建立基于持续集成的质量控制和发布规则

● 持续改进产品的自动化测试框架,提高自动化测试的稳定性,降低自动化测试成本,不断提高测试覆盖率

● 发现值得关注的测试切入点

● 持续推动可测试性的提高

● 通过缺陷成因分析获得避免缺陷的信息,设立规则和实践避免缺陷引入

● 提高探索性测试应用能力,通过探索性测试发现更多的缺陷

● 创建更高效的工具,尽量将测试推动到上游

围绕提高生产率和提高质量这两个目标,敏捷测试是一个持续的自改进过程,这就意味着敏捷测试中的测试工程师必须采用与传统测试中不同的方式,持不同的测试理念和对待测试的态度。敏捷测试并非是一个面向过程的活动,一言以蔽之,在敏捷测试中,我们需要尽一切可能去考虑、去推动生产率的提高和质量的提升,将目光从单纯的关注发现缺陷本身移出来,去发现更多、更远、更有价值的需要去推动的事情。

相关链接:

什么是敏捷软件测试

自动化测试——敏捷测试的基石

基于VMD开发工具的敏捷测试实施研究.doc

基于VMD开发工具的敏捷测试实施研究 摘要 P8_VMD可视化开发工具旨在代替传统的Eclipse,为P8平台应用开发人员提供一个可视化图形配置的操作环境。经过实践,传统的测试方法很难满足在VMD开发工具开发过程中,需求持续变化,模块功能不断迭代、版本变吏速度快的特点,为了进一步提高测试效率, 规范测试流程,充分利用开发工具开发过程特点,VMD测试小组将对比传统测试方法的不足,探索新的测试方法,基于敏捷测试理论进行测试实施,以满足当前开发过程中的测试需求。 本文通过介绍新职员赵筝在VMD小组的参与情况,结合敏捷测试的技术特点,深入探讨在vmd工具的开发过程中如何应用敏捷测试提高测试效率,其与传统测试的过程与结果的对比,以及详细的可行性分析。 关键词:VMD可视化开发工具、敏捷测试

目录 目录 1绪论 (2) 1.1研究背景 (2) 1.2研究意义 (2) 1.3研究内容与难点 (3) 1.4论文结构 (3) 2敏捷测试技术理论及工作流程 (4) 2.1敏捷测试介绍 (4) 2.1.1敏捷测试的概念 (4) 2.1.2与传统测试对比 (5) 2.2VMD开发工具与当前测试情况 (7) 2.2.1VMD工具架构 (7) 2.2.2VMD目标及使用 (7) 2.2.3VMD角色管理 (9) 3VMD测试实践总结 (9) 3.1VMD1.0版本测试情况介绍 (9) 3.2VMD1.0版本测试总结 (11) 4基于敏捷测试的VMD3.0版本测试分析 (12) 4.1VMD3.0版本的敏捷开发的背景 (12) 4.2依赖VMD开发的敏捷测试设计 (12) 5总结与展望 (16) 5.1 展望及改进建议 (16)

敏捷测试感悟(转)

敏捷测试感悟 发布时间: 2009-11-16 17:34 作者: 关河来源: 51Testing软件测试网采编 注:转自https://www.wendangku.net/doc/d516143066.html,/html/47/n-186647.html Agile testing(敏捷测试)基本上是伴随着敏捷开发的概念成长起来的,但在受关注程度上,远远不及敏捷开发本身。自然,开发队伍从数量和活跃度上来讲大于测试队伍,是其中的一个原因;除了这个原因之外,“敏捷测试究竟如何在项目中发挥作用”这个问题可能也是导致敏捷测试概念的流行度远远不如敏捷开发的原因之一。 关于敏捷测试,我能找到的较早的比较系统化的描述文档应该是2002年的这份PPT,这份PPT定义了敏捷测试的两个主要特点:“遵循敏捷宣言的测试实践,将开发当成是测试的客户”(Testing practice that follows the agile manifesto, treating development as the customer of testing),以及“在使用敏捷技术的项目中的测试实践”(Testing practice for projects using agile methodologies)。敏捷开发宣言中提到了敏捷开发的四个核心价值观:简明(Simplicity)、沟通(Communication)、反馈(Feedback)、勇气/决断(Courage)─ 如果我的翻译有错,请指正─毫无疑问,从开发的角度来说,很容易理解这四个核心价值观对应的行为(敏捷开发的best practice),但从测试的角度来说,“简明”和“勇气”就很难对应到具体的测试行为中。 既然难以清楚的寻找敏捷测试的实践行为,我们先尝试来寻找另一个问题的答案:“敏捷开发究竟会给测试带来哪些改变(相对于传统的测试)?”如果可以找到这个问题的答案,我们应该可以顺藤摸瓜的找到敏捷测试中对应的best practice。这里有一段有趣的视频,是在某个敏捷开发大会上对许多嘉宾的采访,采访的主题就是“How does Agile affect testing”,从回答中你会发现,似乎没有任何人能够准确的回答这个问题。从采访片段中我听到的观点有: 1. 敏捷开发有不同模型,不同的模型会以不同的方式影响测试(废话─我的comment) 2. 敏捷测试需要工具的支持…(貌似卖工具的厂商喜欢隐晦的这么表达) 3. TDD方法要求测试优先,其实除了测试优先外,我认为测试也可以和开发同时进行; 4. 敏捷过程中的测试是一个integration的任务,在不同层面(单元测试,集成测试,系统测试,用户验收测试)均需要按照敏捷的方式组织测试,目的是符合敏捷方法的价值观。 在这些观点中,我最喜欢的是第4个观点,这也是一直以来我的认识,其实敏捷本质上并非是一个过程,而是一种理念。至于敏捷测试这个敏捷开发的同源产物,自然也会继承其中的“目标驱动”而不是“过程驱动”的特性。

敏捷测试的最佳实践(第三部分)向敏捷测试转变(一)

引言 简洁,轻量的敏捷开发模型是为了提供给软件开发团队一种迅速应对客户需求变化,能够高效完成项目工作,降低整体风险的开发模式。敏捷的测试也是服务于这个目标的测试团队对测试工作的敏捷定义。 传统测试模式下成长起来的测试团队要如何转向敏捷,从个人和团队的两个层面又要做出那些转变呢?有什么方法和标准衡量敏捷测试团队的绩效?如何帮助团队的每个人规划正确的发展路线?团队在部署敏捷的过程中又会遇到哪些问题呢?本文主体就这些问题展开论述。 有关敏捷测试团队和个人的绩效 在我们过去一年多开发敏捷项目的令人难忘的经历中,测试团队携手开辟了一条新的道路,并发展至今。测试团队也曾多次因其突出的能力,积极的态度以及卓有成效的工作成果屡受嘉奖。今天我们仍然在思考怎样做好敏捷测试,因为我们仍然遇到更新的问题,我们在积累成熟经验的同时也在不断尝试改进原有方式和突破对新问题的困扰。在这里,我们的实践或许因基于幸运的历史背景和人文环境,能够基本成功的部署敏捷,但我们对敏捷测试在整个软件开发过程中的角色定位,和职责的理解,仍然对将要采用敏捷测试,以及感兴趣于敏捷的测试团队,和对那些需要从传统测试转变到敏捷测试模式的团队起到参考作用。 “如何看待敏捷测试和对测试人员做绩效考评呢?”——敏捷团队中无论开发还是测试都不是个人的开发和测试,这是团队的工作。一名好的测试人员除了能够做好本职测试工作外,表现为愿意并能够做超出原有范围的工作,能够并愿意帮助团队其他成员解决其他复杂问题,实现团队的共同目标。测试人员能够主动发现并弥补团队中的重要缺失的环节,帮助团队其他成员完成工作任务。 测试团队的职责也从仅仅发现问题的工作中向着眼于整个项目质量保障转变。因此不难得到结论,在敏捷团队中,优秀的测试人员身上有其他成员的影子。在时间紧迫的情况下,他能转变成其他角色,做出更多的创造性的成绩。充分地发挥了个人战斗力,在帮助他人的同时,自信的态度和各项工作中的技能得到增强,自身也可以获得更大发展。 在一次关于敏捷开发、测试经验交流中,我们认为敏捷测试团队更需要其他团队的协助,在设计测试用例时,团队的设计人员应该帮助测试团队设计测试用例,并帮助测试团队做更多的面向客户环境的真实测试。开发团队也要确保开发任务的按时推进,和测试团队保持紧密的合作,在测试任务紧要时,也能够转变其职能帮助测试团队完成测试任务。 测试人员向敏捷转变所需要的技能储备 这引出我们今天要探讨的一个问题,测试人员如何在技能上做好准备以面临敏捷开发的全新挑战。我们认为,一名优秀的敏捷测试人员,需要有较强的学习能力,至少有主动学习的意愿。除了需要了解各种类型测试以及各种测试工具,测试技术外,也需要了解项目中软件设计模式,软件语言,以及项目的程序组织架构以便建立和团队的共同语言空间。 因为敏捷团队是一个高度协作的团队,在这样的团队中工作需要很好的沟通技巧,语言能力和协作能力。 除此之外,团队的每个成员,都应该认真学习并努力寻找适合自己团队的敏捷模式,并沟通以达到团队成员对敏捷开发模式的统一认识,使得团队其他成员对自己工作的充分理解和建立起成员之间的相互信任。 测试人员向敏捷转变所需要的方法 培养好的敏捷测试人员,需要培养其技术能力,也需要用正确的培养成员的敏捷思想。敏捷的方法指导敏捷团队行动,是敏捷测试原则的实践。从一开始,就深刻影响着团队中每个人。当然,方法不是放之四海皆准的,需要团队对敏捷原则深入理解,执行敏捷测试实践后逐渐形成的规律。而一个传统的测试团队,在固有的行为规律下,在成熟的产品线里,

腾讯移动游戏用户研究大揭秘:研究思路、方法、案例及步骤

腾讯移动游戏用户研究大揭秘:研究思路、方法、案例及步骤 摘要:用户研究繁琐而复杂,虽然游戏公司都有类似的分析,例如竞品,但真正的分析研究需要专人或是部门负责,并不适合大部分的公司,但是研究的结果却对产品立项研发以及用户体验方面有重要的价值。腾讯众多游戏成功的背后,离不开基于大量数据和用户的研究分析,而本次分享中涉及到的移动游戏用户研究思路、研究方式、研究结论以及具体案例中都有许多可借鉴参考的地方。以下是游戏陀螺整 ... 用户研究繁琐而复杂,虽然游戏公司都有类似的分析,例如竞品, 但真正的分析研究需要专人或是部门负责,并不适合大部分的公司,但是研究的结果却对产品立项研发以及用户体验方面有重要的价值。 腾讯众多游戏成功的背后,离不开基于大量数据和用户的研究分析,而本次分享中涉及到的移动游戏用户研究思路、研究方式、研究结论以及具体案例中都有许多可借鉴参考的地方。以下是游戏陀螺整理筛选的具体内容。 围绕主题:游戏体验与设计的4W 1.谁在左右移动游戏的体验与设计(WHO)–三“对象” 2.如何做到接地气的游戏体验与设计(HOW)–三“对象” 3.如何通过研究来完成游戏的体验与设计(HOW)–分析研究、宏观微观 4.游戏体验与设计的增值空间是什么(WHAT)–创新设计 一、谁在左右移动游戏的体验与设计(WHO) 左右移动游戏的体验与设计,其实就是与产品相关的人。 有两个方面要看: ?过程参与角色有那些? ?他们的重要性和影响力? 除了产品本身的开发人员外,我们在做重度手游新手引导研究时,还有来自三方面的调研。 1、玩家访谈,玩家行为与需求的挖掘

招募不同类型的玩家进行实验室研究,收集玩家对现有的新手引导意见,并挖掘玩家对新手引导的需求; 2、竞品分析,设计案例分析 通过对竞品的深入体验。分析主流游戏新手期设计思路与细节设计手法; 3、专家评估、专家焦点小组输出可落地的设计建议 听取专家对案例、设计新手引导过程的思考点与经验总结,为归纳设计原则及评价方法提供专业意见。 二、如何做到接地气的游戏体验与设计(HOW) 设计与产品的问题在于缺少细节处的结合,过于高端。研究人员与实际研发人员常有分歧,虽然研究内容结果很好,但开发人员并不会采纳,这与是否“接地气”有直接关系。 首先必须有:观点与心态的调整 1.是否有价值(定位-有价值) 玩家是产品成功与否的最终评判和使用者;重要性,“接地气”和“高大上”的价值有差异; 2.为什么产品不接受(换位思考) 缺少游戏体验的专业认识;正常的个人偏好和经验主义;不接受,不理解,效果不够直观的原因; 3.最终利益(共同立场-在线和收入) 与产品统一目标;精品时代的超出预算;产品只有在玩家满意和喜欢的条件下才可能有好的在线和收入;游戏的KPI和用户的游戏目标是相辅且成冲突关系; 游戏体验与设计接地气“三对象” 理解对象:我们的目标是一致的

综合实践测试总结及反思

综合实践测试总结及反思 一、试题分析 1、题型结构稳定,题量,难度适中。 本次试题从题型结构上看,题型为:判断,简答,实话实说。题量,难度基本适中。 2、在注重基础知识和基本技能的考查同时,又体现了综合实践活动课程综合性、实践性、开放性、自主性的特点。 本次试题中判断题,主要以基础知识为主,但大多数以活题的形式出现。这些题型均来自课本,主要考察了学生对所学知识的理解应用能力。第四个简答题是一道调查问卷题,重在考查学生对综合实践课活动的研究情况。 3、注重理论联系实际,体现“育人”目的 综合实践活动是基于学生的直接经验、密切联系学生自身生活和社会生活、体现对知识的综合运用的课程形态。这是一种以学生的经验与生活为核心的实践性课程。本次试卷很多题目就着重联系生活实际,检测学生的综合应用能力。 二、卷面分析及对今后的教学的思考 1、深入学习课标,增强新的教学理念 在今后的教学中,要充分强调综合实践课在素质教学中的作用,积极改进教学方法,努力探索适应当地情况的教学模式。 2、在教学过程中,注重学生的能力培养

本次试卷内容涉及范围广,题量难易适中。但学生对基础知识掌握不够,不能灵活应对。这就要求我在今后的教学过程中,注重知识传授的同时,更应注重学生的能力培养。 3、培养学生的创新精神 综合实践活动会给教师的教法带来新的变革,更会给学生的学法带来新的变革。今后,在教学当中要注重培养学生的灵活性和敏捷性,要理论联系实际,培养学生的创新精神。 不开口,没有人知道你想要什么;不去做,任何想法都只在脑海里游泳;不迈出脚步,永远找不到你前进的方向。其实你很强,只是懒惰帮了你倒忙。

AgileTest

Agile testing(敏捷测试)基本上是伴随着敏捷开发的概念成长起来的,但在受关注程度上,远远不及敏捷开发本身。自然,开发队伍从数量和活跃度上来讲大于测试队伍,是其中的一个原因;除了这个原因之外,“敏捷测试究竟如何在项目中发挥作用”这个问题可能也是导致敏捷测试概念的流行度远远不如敏捷开发的原因之一。 敏捷测试和传统测试观点最大的不同在这几个地方: 1.敏捷测试并不倾向于严格区分开发和测试角色,全体工程师对于质量具有同等的责任, 测试任务由开发和测试工程师共同完成; 2.敏捷测试的迭代周期很短,为了在很短的迭代周期中完成测试任务,要求建立“足够好” 的验收测试,建立足够的自动化测试; 3.敏捷测试不严格依赖于文档(需求,设计等),测试角色必须和其他成员以及客户有 良好的沟通,以保证建立的质量标准符合用户的需求,以及能够使用项目中的相关知识建立合理的测试框架; 4.关于底层测试和关于代码质量是敏捷测试中的一个非常好的实践。 其中,对传统测试观点最大的冲击是第1和第3点,打破测试角色和开发角色之间的严格限定,用沟通而不是文档作为建立测试的基础,这些的确会让一个熟悉传统测试环境的测试工程师骤然间不知所措。 敏捷测试的要点之一就是,不依据于角色而是依据于任务来考虑整个开发过程中的测试。但是,对一个开发组织来说,组织中一定存在开发工程师和测试工程师的角色划分,作为一个敏捷团队中的测试工程师,他的主要工作职责是什么呢?或者说,他可以在哪些工作上发挥自己的作用呢? 敏捷过程中与测试相关的任务很多,概括说来有如下一些: 1.建立不同级别的测试验收标准(也就是test suite),包括单元测试、集成测试、系 统测试等各个层面的验收标准; 2.推动整个组织的质量文化,保证整个组织的成员在质量责任与目标方面达成一致; 3.通过技术或是管理的手段,保证产品、代码具有良好的可测试性; 4.通过自动化测试手段缩短每个产品发布周期中测试所需的时间; 5.与客户沟通确认客户可接受的软件质量标准,并建立针对此标准的验收测试; 6.深入了解应用系统和业务需求,通过探索性测试方法设计有效的测试用例,发现产品 中的缺陷; 7.建立对整个团队可见的质量度量体系,保证整个团队能够随时看到产品的质量度量值。 这些工作都可以是敏捷团队中测试工程师角色的工作任务,但显然,在现实中,不太可能要求所有这些工作都由测试工程师来承担─同时,让测试工程师承担全部这些工作任务也并不合理,某些工作由开发工程师角色,或是由开发工程师和测试工程师共同承担更为合理。 接下来,把列出的这7项工作更详细的划分成“测试工程师必须完成的工作”,“测试工程师需要去推进的工作”,以及“能为项目带来巨大价值的工作”。 1.测试工程师必须完成的工作: 1.与客户沟通确认客户可接受的软件质量标准,并建立针对此标准的验收测试;

HR十种高效选聘新员工的方法

HR:十种高效选聘新员工的方法 绝大部分公司在招聘过程中广泛采取的方法是非结构化面试,几个面试人员,一般包括用人部门的经理和人力资源部执行人员,向应聘者提出一系列自己认为重要的问题(多半是临时想出来的),再结合学历、工作经验、谈吐和感觉形成各人的判断,然后汇总意见加以讨论,确定最终入选者。 这种方法的能选对人吗?能,不过只能选对20%,和抽签的结果差不多。我们必须重新思考人员选聘的流程有效的步骤与方法。 选聘流程的五个步骤 这五个步骤可以确保你设计出高质量的选聘程序,避免在技术上可能出现的“误伤”(拒绝了合适的人)或“走眼”(选错了人),并能建立起一个持续改善选聘效果的循环。 步骤一:分析工作 首先要撰写工作描述和职位说明书,并确定该职位的关键指标(KPl)。这里要规定胜任工作所必须的个人品质和技能。例如,候选人必须具有进攻性吗?是否需要速记?候选人必须能够将细小的、琐碎的要素组织起来吗?这些要求就是测试的预测因子,它们应能预测个体工作绩效的个体品质和技能。 在第一步中,还必须定义成功地执行工作的标准。成功的标准可以是生产相关效标 (Production―relatedcriteria),如数量、质量等;也可以是数据,如缺勤、服务期等,或(监督人员等的)判断。 人们往往仔细挑选预测因子,却忽视选择好的绩效效标,这样做是个错误。在后面我们会看到人才选聘和绩效考核实质上是一项工作。没有好的绩效标准会导致选聘方法的有效性大打折扣。 步骤二:选择选聘方案 接着要选择、设计能够测量预测因子的测试方法。测量不同的预测因子,例如进取性、外向性和数字能力等,需要不同的方法和工具。例如装配线工作岗位,最有效的测试是斯特隆伯格敏捷性测试(Stromberg dexterity test)。 每种不同的选聘方法对不同的指标敏感程度不同,有效性也不同,后面会详细介绍17种选聘技术的适用范围和有效性。我们常常会组合多个工具测量不同的指标,最后形成一个完整的选聘方案。 步骤三:实施选聘方案 主持选聘的人员和场地很重要。一般来说,所有候选人应该在同样环境下、被同一组选聘官测试。而且接受过专门训练的测试人员可以显著提高选聘的有效性,这是因为培训鼓励面试人员遵循最优化程序,从而使偏见和误差出观的可能性降到最小。 步骤四:把选聘结果与工作中的绩效联系起来 精心选聘的目的是希望能找到高绩效的员工。当员工进入公司或调任另一新岗位后,应持续追踪他的绩效水平,并检验选聘结果和实际绩效之间的关系。

实例详解敏捷测试实践

实例详解敏捷测试 第一部分:敏捷软件开发简介 敏捷软件开发(Agile Software Development)初起于九十年代中期。最早是为了与传统的瀑布软件开发模式(waterfall model)相比较,所以当时的方法叫做轻量级方法(Lightweight methods)。二十世纪初,17 位该方法的倡导者建立了敏捷联盟(Agile Alliance),并将该软件开发方法命名为敏捷软件开发过程。 敏捷联盟在成立之初总结了四条基本的价值原则: 1.人员交流重于过程与工具(Individuals and interactions over processes and tools) 2.软件产品重于长篇大论(Working software over comprehensive documentation) 3.客户协作重于合同谈判(Customer collaboration over contract negotiation) 4.随机应变重于循规蹈矩(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。

敏捷实践经验总结

1 敏捷成果展示关于本章 本章描述内容如下表所示。

1.1 对比数据 敏捷前后的数据比对如表1-1所示。 表1-1数据对比 1.2 敏捷成果总结 通过此次敏捷项目迭代开发,我们认识到以下几点: 1.持续集成是一个在实践中不断发展和完善的过程。对于一个团队而言,引入持续集 成对于提高开发效率和规范开发过程是必需的。ICP构建是整个持续集成的依据。 2.结对编程作用是尽量减少BUG率和提高工作效率,同时结对人员相互间也能提升 技能。 结对编程虽然很好,但不需要整个迭代过程中都使用结对开发,如下两种情况: ?修改BUG或维护系统时,开发人员并不太希望结对,因为这种情况下全部盯着 调试代码没什么太多好处。 ?迭代期间的重复工作,问题解决方案已经明确确定,结对的意义也不是太大。 3.信息共享和沟通非常重要。敏捷项目想获得成功,项目组成员之间必须保持良好的 沟通,共享彼此的信息。良好的沟通可以保证理解需求的时不会出现太大偏差,编 码时也不会出现修改了别人的代码,而别人却不知道的情况产生。

2 敏捷经验总结关于本章 本章描述内容如下表所示。

2.1 项目实施流程 2.2 设计人员在项目中扮演的角色以及经验总结 缺少

2.3 项目负责人在项目中扮演的角色以及经验总结 在项目实施过程中,项目采用敏捷迭代开发模式。初次尝试敏捷开发模式,对各方面流 程都不熟悉,只能在实践中摸索前进。项目进行过程中,采用了头脑风暴、故事卡、故 事墙、站立会议、结对编程等一系列敏捷流程,头脑风暴让大家对需求有了一个更好的 掌握。故事卡、故事墙、站立会议让大家可以对项目每个Story的进度有了一个直观的 知晓,结对编程从一方面来说减少了BUG率,也从另一方面加强了结对人员间的沟通 能力。 2.4 开发人员在项目中扮演的角色以及经验总结 敏捷中开发人员主要工作流程任务模块的认领→头脑风暴→Story编写→故事卡→结对 编程(功能的实现)→单元测试→功能测试。 1.参与头脑风暴之前要对自己负责的模块充分了解。并有自己的实现思路,在头脑风 暴中可以将自己的思路结合SE的讲解将需求进一步明确。作为开发人员头脑风暴 之后的效果应该是绝对明确自己的功能需求,并且有清晰的实现方案。 2.敏捷中的功能点一般都是划分的很细小,所以在Sotry中要尽量的将功能点提醒清 楚的描述出来,相关测试人员应该也要提供相应的测试方案在Story上面体现。 3.故事卡的编写,需要用最简单明了的语言展现出自己的功能点需求。 4.结对编程在互相学习和积累经验的同时,沟通尤为重要。所以在明确需求的情况下, 对于实现方案的问题上还是要注意与相关结对人员做好沟通的,要在意见统一的情 况下在进行实施,并且一定要严格监督对方的代码质量。 5.站立会议,就是把自己的进度报告给组内的其他人员,并且关注他们的进度变化, 另外如在开发的过程中遇到的问题也可以及时在会上沟通交流。 6.单元测试就是根据自己的代码做有针对性的测试,单元测试绝对不只是一种形势, 测试要求覆盖到每个代码分支,毕竟有些代码实现上的Bug隐患不一定是测试能够 覆盖到的。 2.5 测试人员在项目中扮演的角色以及经验总结 1.敏捷使测试人员更活跃与项目当中。 2.头脑风暴,让测试对功能点了解更清楚,对测试的点把握更准确。 3.敏捷过程中,每个功能按照story划分后,每个story的方案设计和UT测试都参与 进来,让测试对需要测试的代码流程和测试方案设计有很大的帮助。

敏捷测试建议

敏捷测试的方法和实践: 有一次,当开发人员完成当前Sprint 任务的代码之后,测试人员、开发人员和产品经理一起来浏览产品、从头到尾走一遍,产品经理发现了问题,认为需要对功能进行比较大的修改。 这时开发人员估计需要两天时间才能完成代码,但测试人员反对这样做,我们本来只有5天测试时间,加上这次新做的功能比较多、开发代码质量不高,验收测试已经很紧张。如果再延迟两天,测试没法完成。产品经理说,你们不是在用敏捷测试方法,应该测得很快,三天应该能完成测试工作啊! 什么是敏捷测试呢?敏捷测试当然不能简单地理解为测得更快,绝对不是比以前用更少时间进行测试,也不是将测试的范围缩小了或将质量降低来减少测试任务。也有人说,只有敏捷开发,没有敏捷测试。下面我们将要讨论一下: ?究竟什么是敏捷测试? ?敏捷测试有哪些流程改进? ?测试人员如何面对敏捷测试的挑战? ?在敏捷测试中如何制定相应的自动化测试策略? 什么是敏捷测试 假如将过去传统的测试流程和方法硬塞入敏捷开发流程中,测试工作可能会事倍功半,测试人员可能会天天加班,而不能发挥应有的作用。敏捷测试应该是适应敏捷方法而采用的新的测试流程、方法和实践,对传统的测试流程有所剪裁,有不同的侧重,例如减少测试计划、测试用例设计等工作的比重,增加与产品设计人员、开发人员的交流和协作。在敏捷测试流程中,参与单元测试,关注持续迭代的新功能,针对这些新功能进行足够的验收测试,而对原有功能的回归测试则依赖于自动化测试。由于敏捷方法中迭代周期短,测试人员尽早开始测试,包括及时对需求、开发设计的评审,更重要的是能够及时、持续的对软件产品质量进行反馈。简单地说,敏捷测试就是持续地对软件质量问题进行及时地反馈,如图1所示。

敏捷开发特点

敏捷开发特点: 根据维基百科上的定义:“(敏捷)更强调程序员团队与业务专家之间的紧密协作、面对面的沟通(认为比书面的文档更有效)、频繁交付新的软件版本、紧凑而自我组织型的团队、能够很好地适应需求变化的代码编写和团队组织方法,也更注重做为软件开发中人的作用。” 上述特征并不是仅限于敏捷开发团队。有的时候软件开发项目需要更多的规程,有的时候则相反。但只要遵循敏捷开发最基本的规程,无论是何种软件开发过程,都可以称之为敏捷软件开发过程。 在敏捷方法中,开发人员的主导作用更明显,讨论需求、实现需求,再修改需求、再实现、再重构,不断完善产品,测试人员容易边缘化。 在敏捷方法中,测试人员的价值又如何体现? 1、首先在需求讨论上,测试人员可以站在客户角度上来阐述自己的观点,和产品人员、开发人员等进行充分的交流和讨论,使自己在用户体验、业务逻辑等等方面的经验充分体现出来。 2、在开发过程中,测试人员不仅扮演“用户代表”角色,而且可以及时提供更全面的质量反馈,包括代码质量、接口一致性等。测试人员不写代码,可以参与代码复审(code review),将质量问题及时提交给项目组,保证在产品构造的整个过程中质量受到足够的关注,提高质量改进的持续性和可视性。 3、测试人员还是可以参与单元测试。即使单元测试由开发人员做,测试人员可以推进开发人员进行单元测,检查单元测试状态,如确保单元测试达到80%以上覆盖率,以及帮助开发人员开发出具有良好可测试性的代码。 4、即使在敏捷方法中,集成测试、端到端(end-to-end)测试、性能测试等是不可少的。因为在敏捷方法中,往往将一个大的系统开发分解成多个小的子系统(模块/组件),集成测试和端到端(end-to-end)测试显得更重要。测试人员在功能测试上工作量会降低,但在这些测试上发挥更大的作用。 5、随着迭代的不断深入,回归测试的工作量很大,这也是测试人员的用武之地。测试人员可以针对稳定的产品特性开发自动化测试脚本,这也是一种持续的努力,使回归测试自动化。测试人员对缺陷进行分析,总结出一些规律,帮助开发人员建立良好的习惯,改进代码的质量。 而且: 在敏捷方法中,我们也要采用敏捷测试,不要再写几十页的测试计划书,而是在每个迭代周期,写出一页纸的测试计划,将测试要点列出来。 在敏捷测试中,可能不需要测试用例,而是针对use case 或user story直接进行验证,并进行探索性测试。而节约出来的时间,用于开发原有功能的自动化测试脚本,为回归测试服务。

敏捷开发与敏捷测试

敏捷开发与敏捷测试 摘要:敏捷开发是一个过程,不是一个事件。它是一个持续的应用原则、模式以及实践来改进软件的结构和可读性的过程。它致力于保持系统设计在任何时间都尽可能得简单、干净和富有表现力。本文主要阐述了敏捷开发和敏捷测试的概念,敏捷开发测试的原则和敏捷开发的理念,着重介绍了敏捷测试用例设计,敏捷开发以及敏捷自动化测试。 关键字: 敏捷开发、敏捷测试、敏捷原则、敏捷理念、敏捷测试用例设计 Agility tests and Agile development Guolei Liu (China University of Petroleum (East China) College of Computer and Communication Engineering, Qingdao 266555) Abstract:Agile development is a process, not an event. It is a continuous application principle, mode and practice to improve structure of software and the readability of the process. It is committed to maintaining system design in any time as far as possible simple, clean and expressive. Key words:Agility tests 、Agile development 、Agile principle 、Agile concept、Agile test case design 引言:敏捷开发其实借鉴了大量软件工程中的方法。迭代与增量开发,这两种在任何一本软件工程教材中都会被提到的方法,在敏捷开发模式中扮演了很重要的角色。再向前追溯,我们还也可见到瀑模型与快速原型法的影子,也许还有多改善,而非创新。敏捷开发可理解为在原有软件开发方法基础上的整合——取其精华,去其糟粕。因此敏捷开发继承了不少原有方法的优势。在敏捷开发的过程汇总,通常都会用到一些可以交流工作的软件,它主要是利用非常短的循环,使终端客户可以及时、快速地看到软件的的构建成果。 1.敏捷开发与敏捷测试的相关概念 敏捷开发:敏捷开发是递增式的、迭代的、不断调整的开发模式。我们逐渐地建立起软件系统,能看到系统在成长,能展示进度。通过多次发布或项目的阶段检查点,每一次都比上一次靠近目标。迭代包括需求的开发和测试。目标随着从上一次的迭代中学到的东西、反馈以及商业机会而调整。在敏捷开发中,工作被分解成“故事”,也叫特性或用例,组合成任务分派给不同的程序员。定义好接受标准,开发直到单元测试和接受测试通过才算完成。敏捷开发讲求合作,结对进行编程,避免个人拥有专门的知识,代码属于项目组共有。 在敏捷开发中不存在回退,讲究持续地集成,单元测试(通常使用测试驱动的开发方式),持续地进行回归测试。故敏捷开发有一下特点: 1.敏捷型开发方法是“适配性”而非“预设性”。传统型方法试图对一个软件开发项目在很长的时间跨度内作出详细的计划,然后依计划进行开发。这类方法不具有普适性。而敏

敏捷开发模式下的质量管理

敏捷开发模式下的质量管理 前几天,笔者与一位在大型互联网公司从事质量保证的朋友交谈,作为互联网产品质量和测试的负责人,他最近负责的质量管理方面遇到了很多困难。主要有: 1)测试团队在敏捷开发模式下的价值非常有限; 2)开发人员只顾自已写代码,没有任何文档,测试人员无从下手, 3)由于进度的原因,测试人员测试的时间非常有限,上线后出现很多问题; 4)由于测试人员得不到开发团队的认可,离职率非常高; 5)质量部门无法收集到数据,不能进行质量度量; 6)测试团队也有一批自动化测试专家,但派不上用场…。 这些问题可能很多开发团队都会遇到,总结一下,大致是这几个方面: 1、越来越多的企业希望采用,但没有把握 2、习惯于传统的瀑布式产品开发流程已不满足快速发展需要,但大规模改动不现实 3、缺少敏捷软件开发专家和人才 4、技术人员需要观念的转变和方法培训 5、缺乏相应的质量控制方法 6、需要经常的和及时的质量度量、测试、决策 7、自动化测试不能落到实处,每日构建仍是纸上谈兵 在现在行业中,需求变化太快,不管我们怎么努力去做,发现还是不能满足客户的需要,不管需求搞得多么细,到交付产品给客户的事情,总是有这样那样的问题,这个时候就不得不去修改我们的软件,这是目前很多企业尤其是互联网公司面临的一个挑战,如何解决这个问题? 笔者先后在华为、阿里巴巴软件质量部门任职,最近也深入研究了腾讯敏捷开发平台TAPD(腾讯敏捷产品开发)和IGD(集成游戏开发)一些资料,对国内敏捷项目的质量管理有很多独到的见解,结合汉捷咨询公司多年的项目经验,总结如下: 1)QA角色的转变

QA要从警察的角色转变到一个教练的角色。在以前,团队实施CMM的时候,QA更多的是一个警察的角色,他整天拿着一个checklist、报告什么的到处去团队里面看,你是否ok,不ok就要怎么怎么样,整天就干这个活,但是引入敏捷之后,QA就觉得有点失落,都敏捷了,我都不知道该怎么下手了,在著名的通信企业华为的做法是将QA转变了一下,将QA更多的充当教练的角色,充当SCRUMMaster的角色,他去指导项目团队该如何去开这个站立式会议,该怎么去做迭代的计划等等指导性的工作,这样QA 也觉得挺好,这样他能参与到在不同的团队中去,QA的角色更多的偏向于全过程的敏捷活动指导,以提高产品开发效率和质量。QA在这个过程中也能得到一些数据,如代码缺陷率,版本的不良率,上线遗留问题数,团队成员配合度等等。 2)要使敏捷团队整体参与 QA和测试人员也是敏捷团队的一部分,作为敏捷教练,要向他提供支持和训练,以使作们适应开发的快节奏。比如,如果你是敏捷团队中的测试人员,并且计划会议和设计讨论没有邀请你,或者业务用户正在独立定义故事和需求,那你应该主动站出来和团队的其他成员交流,并偿试“三方协作”,即测试人员、开发人员和业务专家。腾讯公司把业务专家称为BA,即BussinessAnalyst,BA和开发人员DE、测试人员TE组成了敏捷开发团队,这些成员不仅仅把都在忙着最终的交付而努力,他们还乐于收集和分享信息,与客户或者产品负责人协作以帮助他们充分展示自已的需求,从而得到他们的需要的功能,同时向所有人提供项目进展的反馈。 3)自动化回归测试 敏捷团队没有自动化会成功吗?可能也会成功,但我们所知道的成功团队都依赖于自动化回归测试,如腾讯和支付宝公司的Selenium框架,阿里巴巴和淘宝网的QTP框架。汉捷咨询认为,敏捷开发利用测试来指导开发,为了编写的代码使测试通过,需要快速而简单地运行测试,没有短期反馈周期和安全的回归测试,团队将很快陷入技术债务,缺陷不断增加,速度越来越慢。 4)提供并获取反馈 反馈是敏捷的核心价值,敏捷的短期迭代可以提供持续的反馈以帮助团队正常运转,测试人员则通过自动化测试结果、探索性测试的发现和系统实际用户的观察结果的形式帮助提供支馈。如你怎么知道客户手里拿到了预期行为的正确示例?你怎么知道编写的测试用例正确地反映了这些示例?开发人员通过查看测试用例能够理解应该编写什么代码吗?QA和测试人员应该询问开发人员是否得到了足够的信息以理解需求并是否能够指导编码,询问客户是否理解质量标准,应花时间参与迭代计划会议和回顾会议以讨论这些问题并提出改进方案。 5)构造核心的敏捷实践活动

敏捷测试的思考和新发展

敏捷测试的思考和新发展 2010年为《程序员》杂志写了一篇《敏捷测试的方法和实践》,我们可以回过头来,看看过去的一年,敏捷测试发生了哪些变化。首先,我做了一个实验,分别打开2010年和2011年的“STAREAST Conference at-a-Glance”,输入Agile,2010年显示10个结果,而2011年显示17个结果,有一个很大的增长,说明敏捷测试越来越引起大家的关注。这只是一个表面的现象,我们还需要真正了解发生了哪些实质性的变化。 举一个例子,《敏捷测试:测试人员和测试团队的实践指南》的作者Lisa Crispin在StarEast 2011上有一个演讲——Agile Testing: After the First Year, What’s Next? 其中提到,我们从传统开发方法转向敏捷方法,由于开发人员掌握了测试驱动开发(TDD,Test Driven Development),而测试人员部分地实现了验收测试和回归测试的自动化,所以我们活下来了,但我们在接下来深入实施敏捷测试时,还会面临新的挑战,甚至要克服更大的困难。当测试人员有了一年的经验,并拥有了敏捷方法的价值观、原则和实践之后,我们还不得不考虑如何不断改进持续的发布、如何有效地管理技术债务、如何对客户的需求有更好的理解,这就要求我们掌握更深的敏捷测试技术,例如将“精益(Lean)方法”用于改进敏捷测试的绩效,以及重构自动化测试的设计或脚本以提高投入产出比。 TDD 向ATDD、BDD转化? 以前人们谈到敏捷方法,就会谈到TDD或UTDD(Unit TDD),但是究竟有多少个公司在采用TDD方法来写代码?而在采用TDD开发方法的公司中,又有多少程序员在全面使用TDD方法呢?TDD是一个纠结的问题。一方面,TDD的确是一个好东西,先写测试用例、后写代码,保证程序员第一次就把代码写对,也彻底解决了代码的可测试性问题,在代码层次上把缺陷的预防做到淋漓尽致。另一方面,多数项目很紧张,不可能给程序员足够时间去实施TDD,程序员对实现有极大兴趣,而对测试缺乏兴趣,多数程序员也不愿意或不会主动去做TDD。这样,TDD实践还存在较大困难,有比较多的争议。我看到一位作者写道:组里头TDD 说了3年,据我所知,看完两本TDD名著,并坚持写单元测试的人只有我一个(我组里有开发人员15名)。 为了解决TDD实施不力,在过去一年,越来越多的人关注ATDD,即验收测试驱动开发(Acceptance Test Driven Development)。从2003年开始,人们逐渐实践TDD,而ATDD 是在2007年Lasse Koskela写了一本书《测试驱动:Java 开发人员的TDD和ATDD》,才开始引起大家的更多关注。从那时算起也有四年了,但在国内,则是最近一两年的事。当然,我们可以将TDD和ATDD结合起来使用,形成一种混合的方法模型。TDD和ATDD之间的关系,可以用图1来描述。

敏捷开发学习总结

以下4点是敏捷开发的特殊实践: 1、迭代-增量开发模式 2、测试驱动开发 3、持续集成 4、面对面交流 1、迭代-增量开发模式 迭代-增量开发模式的优点包括: 在早期的迭代中就可以减少或消除最高的风险。 计划与评估的信心随着迭代一次一次地增加。 根据以往的迭代成果,可以决定完成日期的趋势。 完成就是完成,不是90%完成。 士气通过不断的反馈而增加。 针对迭代开发实施其实是重复和半并行的开发活动,同时在迭代一次完成后针对二次迭代前有一个重大的活动:反馈环。从传统开发转移到敏捷开发是一个包括顾客在内的过程,在每次迭代中干系人将通过反馈塑造迭代范围增量的方向。关键要控制这个反馈之间的周期 2、测试驱动开发 敏捷开发推动一种称为测试驱动开发的实践。这个实践背后的思想是:开发人员在编写实际代码之前先编写单元测试。如果不知道测试什么,怎么能知道为什么而编码呢?结果就是一个能测试实际对象但不会干扰对象本身的单元测试。测试对象包含所有不同守卫和条件的消息,能够确保对象按计划动作。在敏捷项目中,这些单元测试通常是自动化的,包括代码覆盖率在内。于是,项目团队可以监视类的数量和单元测试的数量。如果单元测试数量要比类的数量少,那么团队中就有人没有按照测试驱动开发的实践工作,未经检验的代码可能已经进入代码库。测试驱动开发对项目的质量有显著的正面影响。测试用例随着迭代的进行而演化,所以,在每次迭代之后所产生的代码库都经过了测试。 测试驱动开发背后的思想是单元测试代码要与实现功能的组件分开,位于单元测试自己的组件中。编写测试代码和功能代码的活动几乎是并行的,其中测试代码的编写稍微提前一些。单元测试和功能经常由相同的开发人员(开发人员对)开发。两个组件都经过编译,单元测试执行组件的行为。结果要么通过要么失败,都会得到记录。通过将测试和功能分开,生成结果和发布版最终可以很容易地组装在一起,而测试对象只需扔在后面即可。这也意味着不需要重新编译组件,确保时间戳最新的组件肯定是通过测试的组件。 由于在敏捷方法中测试用例与实际代码并行存储,所以要自动执行这些单元测试只需一小步。这正是敏捷开发人员在特定触发器发生时使用工具做的事情 3、持续集成 组件的集成以及随之而来的测试对软件工程师来说并不新鲜。而敏捷开发真正的不同在于其持续的方法。将集成测试拖延到项目的最后阶段进行并且期望整个架构能够井井有条是传统方法的一个主要问题。实际上,项目可能就在预算和时间都快用完的最糟糕的时刻出现问题。带有临时解决方案的问题补丁和平庸的方法可能可以帮助整个系统完成开发阶段,但新的问题随时可能出现。必须要有更好的方法才行。迭代-增量开发的一种方法是在每次迭代的末尾将条目集成,但这

敏捷开发总结分析解析

Intro: 简单的说,敏捷开发是一种以人为核心、迭代、循序渐进的开发方法。在敏捷开发中,软件项目的构建被切分成多个子项目,各个子项目的成果都经过测试,具备集成和可运行的特征。换言之,就是把一个大项目分为多个相互联系,但也可独立运行的小项目,并分别完成,在此过程中软件一直处于可使用状态。敏捷开发是由一些业界专家针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则,并于2001初成立了敏捷联盟。他们 正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。 敏捷开发(agile development)概念从2004年初开始广为流行。Bailar非常支持这一理论,他采取了"敏捷方式"组建团队:Capital One的"敏捷团队" 包括3名业务人员、两名操作人员和5?7名IT人员,其中包括1个业务信息指导(实际上是业务部门和IT部门之间的"翻译者");另夕卜,还有一个由项目经理和至少80名开发人员组成的团队。这些开发人员都曾被Bailar送去参加过" 敏捷开发"的培训,具备相关的技能。 每个团队都有自己的敏捷指导(Bailar聘用了20个敏捷指导),他的工作是关注流程并提供建议和支持。最初提出的需求被归纳成一个目标、一堆记 录详细需要的卡片及一些供参考的原型和模板。在整个项目阶段,团队人员密切合作,开发有规律地停顿--在9周开发过程中停顿3?4次,以评估过程及决定需求变更是否必要。在Capital One大的IT项目会被拆分成多个子项目,安排给各"敏捷团队",这种方式在"敏捷开发"中叫"蜂巢式(swarming)",所有过程由一名项目经理控制。 为了检验这个系统的效果,Bailar将项目拆分,从旧的"瀑布式"开发转变为"并列式"开发,形成了"敏捷开发"所倡导的精干而灵活的开发团队,并将开发阶段分成30天一个周期,进行"冲刺"--每个冲刺始于一个启动会议,到下个冲刺前结束。 在Bailar将其与传统的开发方式做了对比后,他感到非常兴奋--"敏捷开发"使开发时间减少了30%-40%有时甚至接近50%提高了交付产品的质量"不过,有些需求不能用敏捷开发来处理。"Bailar承认,"敏捷开发"也有局限性,比如对那些不明确、优先权不清楚的需求或处于"较快、较便宜、较优" 的三角架构中却不能排列出三者优先级的需 求。此外,他觉得大型项目或有特 殊规则的需求的项目,更适宜采用传统的开发方式。尽管描述需求一直是件困难的事,但经过阵痛之后,需求处理流程会让CIO受益匪浅。 敏捷开发是由一些业界专家针对一些企业现状提出了一些让软件开发团队具有快速工作、响应变化能力的价值观和原则,并于2001初成立了敏捷联盟 他们正在通过亲身实践以及帮助他人实践,揭示更好的软件开发方法。通过这项工作,他们认为: 个体和交互胜过过程和工具 ?可以工作的软件胜过面面俱到的文档 客户合作胜过合同谈判

相关文档
相关文档 最新文档