内容简介:敏捷软件测试之道——单镜石在软件团队当中,敏捷软件测试的主要目的是构建一个高质量的软件产品,这也是软件测试团队的主要任务。尤其是在迭代较短的软件项目中,敏捷测试团队要保证应用程序处于最佳的质量状态。因为敏捷测试团队是高度跨职能的,所以在迭代测试团队当中,无论是测试人员还是程序开发人员都要和其他团队的相关人员在项目中通力合作,保证各种测试技术都能得到广泛和充分的利用,用以保证软件产品的更高质量,因此在如此紧张的项目时间里,持续的自动化测试和团队的统一协作是必要的。综上诉述,优秀的敏捷团队不断的不断地通过持续构
编辑推荐: |
本文来自百度知道,本文主要简单介绍了作为敏捷测试团队能否取得成功的6个必要因素。希望对大家的学习有所帮助 |
敏捷软件测试之道——单镜石
在软件团队当中,敏捷软件测试的主要目的是构建一个高质量的软件产品,这也是软件测试团队的主要任务。尤其是在迭代较短的软件项目中,敏捷测试团队要保证应用程序处于最佳的质量状态。因为敏捷测试团队是高度跨职能的,所以在迭代测试团队当中,无论是测试人员还是程序开发人员都要和其他团队的相关人员在项目中通力合作,保证各种测试技术都能得到广泛和充分的利用,用以保证软件产品的更高质量,因此在如此紧张的项目时间里,持续的自动化测试和团队的统一协作是必要的。综上诉述,优秀的敏捷团队不断的不断地通过持续构建软件产品的高质量,展现团队的最新成果和进展,同时又能提高团队成员的技术能力,使用最新的测试技术展现成果,是好的团队组成形式。
对于大多数公司和团队来讲,作为敏捷测试团队的成员需要清楚地认识到自己在团队中所担任的角色是什么,担当工作的具体程度是什么,而作为团队的领导者来说,敏捷团队的目标是什么,如何带领自己的团队走向成功,都是面临的首要问题。
敏捷软件测试的定义如下。
在敏捷软件开发过程中开展的测试被称作敏捷测试(AgileTesting)。它是测试的一种,原有对测试定义中通过执行被测系统发现问题,通过测试得到的数据为被测试系统提供度量等概念仍然适用。敏捷测试是遵循敏捷宣言的一种测试实践。
(1)强调从客户的角度,即从使用系统的用户角度来测试系统。
(2)重点关注持续迭代测试新开发的功能,而不再强调传统测试过程中严格的测试阶段。
(3)建议尽早开始测试,一旦系统某个层面可以展开测试,比如增加了模块功能,就要开始模块层面的单元测试,同时随着测试的深入,持续进行回归测试从而保证之前测试过的内容的正确性。
敏捷测试的实质如下。
敏捷测试不仅包含测试软件本身,还包含了软件测试的过程和模式。多数产品在发布后才发现很多问题,而多数问题可能是在软件开发过程中出现的,因此敏捷测试除测试软件本身,即验证软件的功能是否正常、是否达到预期的结果外,还要保证整个软件开发过程是正确并符合用户需求的。
敏捷开发的最大特点是髙度迭代,有周期性,并且能够及时与持续地响应客户的频繁反馈。敏捷测试是通过不断修正质量指标,正确建立测试策略,从而确认客户的有效需求得以圆满实现,确保整个生产过程的安全并及时地发布最终产品。因而敏捷测试人员需要在活动中关注产品需求、产品设计和解读源代码,在独立完成各项测试计划和测试执行工作的同时, 需要参与几乎所有的团队讨论和团队决策。作为一名优秀的敏捷测试人员,需要在有限的时间内完成更多测试的准备和执行工作,并富有极强的责任心和领导力。更重要的是,优秀的测试人员需要能够扩展来做更多与测试无关,但与团队共同目标直接相关的工作,例如帮助团队其他成员解决困难,帮助其实现预期目标。发扬高度协作精神以帮助团队最终获取成功。需要指出的是,团队的高度协作既需要团队成员的主动配合和帮助。
1.不可忽视的集体力置,做到人人参与
如果由敏捷测试团队中的开发人员主导软件的测试和质量管控,那么作为团队领导者来说,可供选择的技术和团队成员将会变得多样化,对于测试过程中出现的各种问题,处理手段也更丰富,因为对于开发人员来说,测试代码的编写与自动化测试实施不是难题。因此, 将软件测试置于团队的最髙优先级,使团队成员均参与到测试中来,才有可能开发出更髙质量的软件代码和测试代码。
但是团队中的测试人员需要更多的培训和技术支持,才能提高他们的技术能力,更好地适应敏捷开发的快节奏,实现与开发人员和客户团队的紧密协作。
因此,假如你作为敏捷团队的管理者,要努力实现团队以统一的整体的方式参与到项目中,明确敏捷的真正目的是软件的质量而非速度。在团队中要消化和理清客户的需求,用于有效地指导测试。同时鼓励大家互相为对方提供帮助,努力使大家能够把自己最擅长的技术和知识分享给周围的其他人,尤其是在纯手工测试的项目中,团队的合作尤为重要,消除团队中的短板,培养技术人才,带领大家完成一个又一个任务的场景最能使团队振奋。
但是,如果你是敏捷团队中的测试工程师,那么在一些重要议题的会议中,应当把自己的真实想法和质疑提出来,放到每日会议(如图12-9所示)中去讨论,尤其是在有测试、开发、需求或客户在场的情况下,把自己针对需求中的质疑,或者测试过程中的不当之处表达出来,让自己的问题成为整个团队中首先要解决的问题,同时尽可能地消化和吸收其他人提出的问题和讨论解决问题的方法,用于指导今后的测试工作。
2.建立并实践敏捷测试的思维
作为敏捷团队中的一员,必须明确个人能够对项目的成功产生巨大的影响。在敏捷团队 中每一个人都是一名测试人员,任何人都可能去承担相应的测试任务,因此遵循以下法则对敏捷测试人员尤为重要。
提供持续的结果反馈。
为客户创造价值。
简单化。
持续改进。
响应变化。
自我组织。
关注人的作用。
享受工作的乐趣。
因此在敏捷团队中,开发人员作为测试人员参与到测试当中,可以做任何事情去帮助敏 捷团队产生高质量的交付结果。
敏捷测试的态度是前瞻性的,富有创造性的,充满着新的思维与解决问题的新思路,是喜欢接受挑战任务的。敏捷团队的成员需要使用敏捷准则和敏捷的价值观来指导自己的工作, 尝试去使用更多简单而又有效的方法满足测试需求,实践新的技术和想法,关注测试结果,尽量多与周围的同事交流对问题的看法和解决的手段,不断灵活地应对项目上的变化,尤其是来自需求变更带来的影响。时刻调整自己的工作方向,谨记敏捷测试是以人为本,享受工作的快乐,即使工作中遇到了质疑的声音,也要尝试用敏捷准则和价值观来决定处理的方法。
敏捷测试的重要性还体现在敏捷团队中的成员要具有敏捷思维,即不断沟通、不断学习、不断为团队提供新的业务价值。为了满足上述的要求,团队可以组织内部培训,或让成员参 加技术沙龙,学习新的测试技术和方法,使用新的测试工具。敏捷测试人员自身也要有提高技能的意识,广泛地参与到技术讨论中,例如参加技术分享会、自由讨论、加入微信或者QQ 讨论群以及关注技术达人的博客等,获取新知识和新技术的方式是多样的。
而作为敏捷团队的管理者,敏捷测试的思维更注重对方法的实践,不但要为团队成员尽可 能地多提供一些内部培训的机会,更要消除工作以外的障碍因素。除此之外,要给予团队成员鼓励,鼓励他们实践新的技术和方法,不要怕担责任,新技术也许会给项目带来一些不好的结果甚至是失败,但是我们可以在短期迭代项目当中先做一些有意义的尝试,因为这些小的项目 适合快速试错,当一个方法被证明是错误的时候,我们可以快速尝试其他解决问题的方法。
3.提高测试效率,回归测试自动化
敏捷测试团队最为成功的要素之一,就是在整个项目过程中,持续地以自动化回归测试推进整个项目。
每一个敏捷团队的成员都会发现,当项目中的应用软件规模越来越大的时候,自动化回归测试能够带来很多直观的变化,虽然很多敏捷测试团队中仍然保留有部分手工测试的内容, 但是这种变化是显而易见的,比如,敏捷团队每天要在迭代结束时提交产品级的应用成果,自动化回归测试节省了时间,提高了测试的效率,提供了持续的测试反馈,让测试人员能设 计更多有针对性的测试场景,更好地诠释敏捷测试中测试先行的理念。当敏捷团队中有更充 裕的时间时,团队成员更能关注自动化回归测试如何能更好地构建和部署,这是一个正向的 推动力,版本控制和监控也起到了效果,降低了测试的风险,同时测试先行的方法还能够帮 助程序开发员更好地理解用户需求,设计精准有效的代码,持续集成运行所有的单元测试和 回归测试,还有更多的探索性测试。
我们看到,在敏捷团队中,应将更多的关注点放在对缺陷的修复和对软件新功能的自动化测试设计上,不为单纯地测试而测试,只考虑优秀的编码和优秀的测试。但是,自动化测试工作在开展的最开始阶段需要克服的困难较多,作为敏捷团队的管理者,应确保在时间上 和团队的内部培训上给予足够的支持。如果没有初始的自动化测试团队,则开发人员的开发进度可能会受到影响,因为他们不得不中途停下来考虑如何进行测试。因此,可尝试从管理 层或团队成员中获得大家的支持,先期开展小规模的自动化测试。
4.持续获得反馈,重视反馈带来的重要价值
大家都知道,反馈是敏捷的核心价值,持续的反馈在敏捷的短期迭代中可以帮助团队不 断修正自己的运行轨迹,保证正常地运转。我们可以通过多种方式获得反馈。
(1)从代码中得到持续的反馈。
使用测试驱动开发(TDD)的方式(如图12-10所示),站在使用者的角度看待代码,消除代码中的不良的或者是复杂的设计,设计具有针对性的单元测试代码、具有针对性的场景,保证测试结果的真实有效以及测试过程的有条不紊。
(2)从测试进度中获得持续的反馈。
在敏捷团队中,对工作量的预估是项目开始前的必要工作,但是预估并不能起到真正的作用,相反,很多工作都是在预估的情况下比预期时间延长甚至是不能如期完成。因此可以使用迭代式增量软件开发过程(Scrum,如图12-11所示)框架中的评估方式来评估项目的复杂程度,绘制燃尽图(如图12-12所示),看到团队的真实工作效率和进度,避免陷入无休的争论当中。
(3)从客户那里获取持续的反馈。
简化沟通渠道,争取能和客户一同工作,从用户那里收集项目应用上关于业务功能的使用反馈,确认已经完成的功能是否达到可以交付的状态,是否是客户所希望的。
(4)从同事那里获得持续的反馈。
确认从客户手里拿到的需求是否是正确的,设计的测试用例是否具有针对性,开发是否得到了足够的信息理解需求并进行编码,必要的时候通过的时候召开技术会议讨论上述问题,并得出解决方案。
5.重视敏捷当中的关键环节,杜绝疏漏
敏捷团队中,无论开发还是测试都要明确,如果不重视敏捷中的关键技术环节,是不能制造出高质量的软件产品的。这些关键环节是敏捷软件开发的重要节点。
(1)可控的测试环境。
没有可控的酒试环境自然就无法开展有效的测试,敏捷团队成员需要知道当前的测试环境部署了哪一个版本的待测环节,使用的版本控制 工具 是什么,访问方法是什么。尤其是现在开源软件越来越多,遇到的问題也越来越复杂,需要保证一旦问題出自测试环境,团队成员能够迅速加以解决。
(2)使用持续构建。
敏捷团队需要代码管理和持续集成(如图12-13所示),有效测试的前提是知道自己在测试 什么。如果测试团队无法配置代码,则测试工作无法开展。在短期迭代的模式下,团队成员至少每天一次导入自己的工作,每一次的集成必须通过自动化测试进行验证,例如使用Jekins实现持续集成。实现持续集成是敏捷团队中优先级最高的事情,必须每日构建用于验证和交付的版本。
(3)采用增量工作。
可以采用启发的方式告诉团队成员,采用逐步推进、小规模的方法代替一下子开发一大块功能的方法建议团队成员编写任务列表展示板(如图12-14所示)来进行编码增量和测试增量,并记录下设计概念、确认测试、回归测试和自动化测试的实施策略。敏捷测试可以先针对小部分的内容,随着功能的增加,不断展开增量测试。
(4)缺陷的有效管理。
敏捷团队随时都会感受到时间的压力,据我所知的敏捷团队,无一不抱怨时间紧迫。随着代码越来越混乱和难于维护,代码中的缺陷越来越多,变得难于及时有效的处理,导致团队的进度慢了下来,缺陷不解决,就不能添加新的功能。所以我们的团队必须实时进行技术评估,减少和避免缺陷积累导致上述问题的产生。
自动化回归测试可以提高测试的覆盖率,可以在每个迭代中设置构建自动化测试,通过测试反馈知道代码的重构,从长远来讲,敏捷团队工作速度能够变得更快。
(5)开发和测试是合作的关系。
要知道在敏捷项目中,测试人员必须贯穿整个迭代和整个开发过程,否则项目有可能失败。
测试人员通过理解客户的需求编写测试用例,协助开发人员理解需求并完成代码的开发, 这提供了一种协作的契机,客户、开发与测试要紧密合作。开发人员向测试人员提供最新的软 件代码和实现软件功能,测试人员负责对软件代码进行检测并提供反馈,开发人员修正缺陷,使其通过更多的测试,并持续进行编码,每一个敏捷迭代包含了上述的过程,持续的、快速的 与增量的测试一代码构建一测试一代码构建一测试。若是这种合作的方式被外部原因打断,例如缺陷没有及时被修复,或者发现了上一次代码重构时遗留的缺陷等,都会使项目停滞不前。
在软件开发中,缺陷发现得越早,修复的成本越低。当代码的开发由测试来指导,并同时进行测试,则未来的软件产品就越有可能达到用户的预期,满足用户的需求。
6.保持与客户的合作,将客户纳入到团队之中
测试人员在敏捷测试团队中理清客户需求并设置需求的优先级,并将需求通过预期行为和用户场景等方式展示给开发人员,并将这些内容转换为可以执行的测试。
作为团队管理者,要鼓励开发、测试和客户的直接沟通,使用三方协作的方法,解决需 求或者前后不一致与描述有误的情况下,建议使用多种方式沟通,例如电话会议、邮件等。
作为敏捷测试团队中的一员,只有在实践中不断充实对敏捷测试的理解,不断总结归纳新的思路与方法,才能引导自己的团队不断成功。例如很多敏捷团队已经将TDD和BDD(行为驱动开发)结合,获得了不错的反馈,类似的新技术和新方法的案例非常之多。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Web测试入门——软件测试员必知的50个常见测试点
- 测试人必须了解的软件测试流程及5大测试过程模型,经典干货分享!
- 软件测试中服务器稳定性测试方法
- 从功能测试转成自动化测试,软件测试工程师该如何成功转型?
- 软件为什么要做异常测试?测试员必知的22个测试点总结!
- 为什么软件测试很重要?5步帮测试小白走出误区!
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。