敏捷的最佳实践-2

第二部分:方法与实践

敏捷测试的实质

测试不仅仅是测试软件本身,还包括软件测试的过程和模式。产品发布后才发现很多问题,很可能是软件开发过程出了问题。因此测试除了需要确保软件的质量,即软件做了正确的事情,以及软件做了应该做的事情以外,敏捷的测试团队还要保证整个软件开发过程是正确的。

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

敏捷测试的方法与实践

  1. 敏捷团队组织构成,敏捷测试团队的任务和使命;
  2. 敏捷开发团队以测试为驱动的开发方式——测试驱动开发,这是种独特的测试?还是开发?
  3. 递增型的迭代测试,它首先是对敏捷测试过程活动和生命周期模型的介绍,通过学习经典的敏捷增量测试模型,我们将敏捷测试的各类活动有机的组合到了一起。在此之上,对定制后的独特敏捷增量测试模型的分析和理解,帮助我们理解测试活动的规划和管理;
  4. 以 及需要特别关注的递增型迭代测试的关键活动之一——“静态测试”;这也是笔者认为的最高难度、最具影响力的敏捷测试活动。它将测试团队最早的引入产品开发 环节,测试人员以第一用户的角度判断设计的有效性,此活动较早的暴露了设计缺陷、避免了团队对目标的不一致理解等,是测试活动中最有创造性价值的部分;
  5. 最后,笔者将谈谈测试活动中的测试计划和管理,即关于测试任务估计,测试活动计划,各个重要测试活动时间分配与安排的介绍。

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

敏捷团队

笔者曾共事的整支产品开发团队被划分成 4 个相对独立的敏捷开发队伍,而每支队伍拥有相同配置的 7 名成员,他们分别具有不同的职能属性。

每支敏捷队伍组成成员角色包括:

1 名 UCD(User Centered Designer),主要负责产品的主要设计,其工作主要包括界面设计、用户的用例设计等等;

1 名 Visual Designer,主要负责产品界面的色彩搭配、控件的外观设计和 UCD 界面设计方案的初步实现和美化;

1 名 Information Developer,主要负责产品中信息的编辑和重要文档的撰写工作;

3 名开发人员,主要负责产品的实现;

1 名 Tester,主要负责产品质量的保障。

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

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

敏捷原则告诉我们敏捷团队是高度协同、民主和平等的团队,为了让团队中每个人充分高效的工作。相同职能下的组员至多不好超过 3 名,最佳配置也是不同职能下配置 1 个人头。因此、在这样一个小型、平行的组织结构里,沟通更加易于建立,沟通复杂度也相对较低,相比
17、20 人的团队组织,沟通的代价也小很多。相反,很难想象在一个敏捷团队中会拥有诸多不同风格的执行者,决策者将是个怎样的混乱情况。

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

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

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

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

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

测试驱动开发

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

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

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

静态测试

一个好的测
试人员能够第一时间找到需求分析、设计中的模棱两可,遗漏,错误的地方,能够促进团队前期工作的高效完成,将很大程度降低将来产品的质量缺陷的数量,积极
影响了敏捷开发的最终输出。这部分工作是测试团队,开发、设计团队最默契合作的阶段,交流非常频繁,正是通过积极的沟通和及时的修正与团队目标“误差”使
得团队更加明确其方向,更有凝聚力和也得以发挥了团队的最佳战斗力。在笔者的项目经历中,往往这个阶段会需要一个迭代周期
1/4 左右的时间。这同时也说明了静态测试在敏捷测试类型中的重要性。

在敏捷开发过程的静态测试即项目迭代开发前期测试人员的最主要工作。值得再次强调的是,在这段时期测试人员的工作重心是认真了解需求和用例设计,并针对设计的可行性,可用性进行验证,确认设计是对需求的准确实现,最佳实现。

测试人员应
该领导团队帮助明确出用例更多的细节。比如,在一次设计用例讨论中,设计者提出“我需要一个
Overlayer”。那么测试人员应该要问:“如何打开这样一个 Overlayer,如何关闭?”“这个 Overlayer
需要多大平面尺寸,是否支持调整,是否支持对屏幕大小的自动适应”,“Overlayer
的打开和关闭是否需要有动态渐变的效果?”,“Overlayer 的是否需要滚动条?”,等等。

这个过程能够帮助团队发现早期的设计缺陷,通过发现问题,并定制新的设计方案,团队也通过这个过程,更好的了解了测试的重要性,也摒除了可能存在的对需求的种种“假设”,因而更加明确了团队的目标和方向。这是个非常关键的过程。尤其是对测试人员而言,任何“假设“都是有害的,所以一定需要把不清楚和模棱两可的问题从一开始就理清楚。

时间: 2024-10-13 02:11:33

敏捷的最佳实践-2的相关文章

敏捷的最佳实践-1

第一部分:敏捷的实质 敏捷开发有益于个人发展 就 测试而言,测试人员就是好比一辆跑车里的唯一的驾驶员,项目就好比这辆跑车,测试人员需要及时修正行驶方向的偏差,确保这辆车在正确的道路上稳步前行.如 果,测试人员没有具备足够的责任心和领导力,只是人云亦云,恐怕这种测试要与不要没什么分别,敏捷项目的质量也更让人担忧,而敏捷也就失去了原有的意义. 因此,作为唯一的测试人员,他(她)将拥有对测试的所有权,计划.设计并且执行所有的测试工作.而也因为拥有了更多的主人翁精神,积极的工作热情,测试人 员勇敢的面对

敏捷遇上UML-需求分析及软件设计最佳实践(郑州站 2014-6-7)

邀请函:尊敬的阁下:我们将在郑州为您奉献高端知识大餐,当敏捷遇上UML,会发生怎样的化学作用呢?首席专家张老师将会为您分享需求分析及软件设计方面的最佳实践,帮助您掌握敏捷.UML及两者相结合的实战技巧.时间:2014.06.07(周六),上午9:00-12:00,下午14:00-17:30(时长6.5小时)地点:郑州市畜牧路16号牧业经济学院实验楼B座2518(可乘坐B11.909.962.47路等公交车到老长途汽车北站下车畜牧路向东300米路北)软件知识原创基地www.umlonline.or

规模化敏捷开发的10个最佳实践(上)

[编者按]软件开发和採购人员常常会对现有软件开发方法.技巧和工具产生一些疑问.针对这些疑问,Kevin Fall 整理了五个软件方面的话题:Agile at Scale,Safety-Critical Systems.Monitoring Software-Intensive System Acquisition Programs,Managing Intellectual Property in the Acquisition of Software-Intensive Systems.以及

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

简介: 敏捷软件开发是目前十分流行,并在业界逐步推广的软件开发模式.不同与传统的软件开发模式,敏捷开发模式有着自己鲜明的价值和方法.其中,敏捷测试部分也同以往的软件测试流程有所不同.这对测试人员提出了新的要求,带来了新的挑战.本文将结合一个软件项目实例,基于项目开发的不同阶段,详细介绍每个阶段的主要测试活动.文中将分析每个主要测试活动的前提条件和目标任务,并根据实例推荐最佳的解决方案. 第一部分:敏捷软件开发简介 敏捷软件开发(Agile Software Development)初起于九十年代

《敏捷测试的最佳实践》学习笔记

第一部分:敏捷的实质 敏捷开发有益于个人发展 就测试而言,测试人员就是好比一辆跑车里的唯一的驾驶员,项目就好比这辆跑车,测试人员需要及时修正行驶方向的偏差,确保这辆车在正确的道路上稳步前行.如果,测试人员没有具备足够的责任心和领导力,只是人云亦云,恐怕这种测试要与不要没什么分别,敏捷项目的质量也更让人担忧,而敏捷也就失去了原有的意义.因此,作为唯一的测试人员,他(她)将拥有对测试的所有权,计划.设计并且执行所有的测试工作.而也因为拥有了更多的主人翁精神,积极的工作热情,测试人员勇敢的面对工作中的

App 后台架构设计方案 设计思想与最佳实践

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/53933096 做App做的久了,就想研究一下与之相关的App后台,发现也是蛮有趣的.App后台的两个重要作用就是 远程存储数据 和 消息中转.这里面的知识体系也是相当复杂,做好一个App后台也是需要长期锤炼的.本篇文章从 App 后台架构 的角度介绍.好了,下面进入正题: 说起架构,我们先看一下何为架构,百度百科是这样说的:架构,又名软件架构,是有关软件整体结构与组件的抽象描述,

开发者最佳实践日·第 13 期-实践微服务架构

随着Docker及以移动化浪潮的冲击,系统的架构与设计成为系统构建中重要环节,微服务架构这一全新的企业架构模式也越来越受到关注,使用容器技术实施微服务架构转变,如何更好的利用计算资源,以及更方便的维护越来越复杂的应用程序,微服务作为一种更灵活.可靠.开放的架构的应用实践也越来越多. 微服务架构如何让应用程序的代码库更加敏捷?如何快速迭代和扩充一个代码库并大幅提升开发者生产效率?微服务架构可以让开发团队在研发过程中更加的敏捷和灵活.想要知道更多关于微服务架构的知识,这一场沙龙你不可错过. 开发者最

最重要的 Java EE 最佳实践

参考:IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践 IBM WebSphere 开发者技术期刊: 最重要的 Java EE 最佳实践 2004 年 IBM? WebSphere? 开发者技术期刊中曾发表过一篇名称类似的文章,本文是其更新版本.这个修正版中考虑了一些不断变化的技术趋势,更重要的是推荐了一些作者认为应当广泛遵循.但尚未广泛遵循的实践. 2 评论: Keys Botzum, 高级技术人员 , EMC Kyle Brown, 杰出工程师, EMC Ru

反对把"最佳实践"、"方法论"、"框架"挂在嘴边

用户体验是一个很大的话题,先从一个故事说起.周末参加了两天的PMP培训,听课期间注意到老师的一个细节,在讲选择题的时候,选项A.C读音正常,而"B"老师读为Boy,"D"老师读为Dog.刚听到的时候大家莞尔一笑,以为这是个善意的玩笑.但是以后的题目都是这样读音.很快,我想明白了,B和D的发音类似,容易混淆:Boy和Dog是简单的单词,发音能够明确区分,也没有类似Bog和Doy的读音混淆.这是什么?这就是用户体验. 用户体验这个词似乎突然流行起来,似乎因为以前过苦日子