敏捷激流中的测试

敏捷开发
• 阅读 257

敏捷开发浩浩荡荡流行了20多年,彻底改变了软件研发行业。如果说敏捷开发对产品、开发和测试这三种类型的工作哪一个影响最大,我会选择测试

因为敏捷开发模式下迭代周期缩短,很多问题会更集中地暴露出来,比如用户故事拆分往往不够细致精确、开发和测试无法并行展开、开发人员的测试意识薄弱等。诸多问题都会累积到测试环节集中爆发,所以从这个角度来讲,敏捷开发对测试的影响会更大。

可能你已经注意到,我说的是测试环节,并没有说测试人员。原因在于敏捷开发模式下质量保证应当由整个团队来负责,而不应该单单是测试团队的职责。

之前我到杭州出差,和原来阿里妈妈的同事聚会,聊到了阿里在推动去测试化,由研发团队自己来做测试工作。我在网络上搜索了下大厂的去测试化相关的话题,也是众说纷纭,实际情况就不得而知了。不管怎么样,开发模式的变化、技术的变化,都给测试工作带来了越来越多的挑战。业内也有很多老师对测试工作有很好的论述,比如全程软件测试、测试左移右移、质量内建等等,大家可以自行搜索下这方面的资料书籍。本篇文章更多地想从项目、产品、开发和测试这几个角度来谈谈禅道团队在做的实践。

首先来说说项目的多快好省。这是大家耳熟能详的一个组合,也代表了管理层对项目的期望。希望可以有高产出,又快又好,同时又节省成本。但我认为这只是一个美好的愿望,现实情况中往往是事与愿违。应该按照好快省多的方式来进行。

第一要紧的就是质量,项目交付的东西一定是要有价值、有质量保证的,这是大前提;然后是,用小步快跑的方式加快交付速度,及时获得用户的反馈来调整产品方向;在这个过程中,要尽量减少浪费,达到控制成本的目的;最终积少成多,达到多的客观效果。

如何做到好快省多呢?那就需要整个团队都重视质量,重视测试。这个团队包括产品经理、开发人员和测试人员。每个角色都需要增强质量意识和测试意识,来保障自己交付物的质量。

我们先来看产品经理应当如何增强质量意识和测试意识。敏捷开发模式下面产品经理主要的输出物是用户故事。输出精确定义过、有明确验收标准、方案可行的用户需求,并能及时参与沟通并确认需求,是产品经理质量意识和测试意识的最好体现。

首先是把用户故事拆细,定义清楚。我们团队今年新入职了很多产品经理,他们之前更习惯于画原型图。我就逼着大家先写用户故事,训练大家能够把用户故事拆分出来。然后再训练大家能够用简单直白的文字将需求表达清楚,如以下要求:

  • 需求标题尽量用动宾结构,少用复杂的语法结构。
  • 用户角色要认真思考,真正站在真实用户的视角考虑问题,而不是笼统地用“用户”来代替。
  • 用户故事应当保持独立,不要将若干个事情放在一块来描述。
  • 尽量使用短句,不要用长句。有一些众所周知的定语状语可以省略,以减少理解成本。
  • 要有清晰明了的验收标准。验收标准是对需求场景化的描述,是对需求描述很好的补充,研发人员和测试人员可以通过验收标准加强对需求的了解。

关于验收标准如何撰写,可以参考融项目管理实践库里面的实例化需求实践。

对产品经理进一步的要求是懂点技术。对于禅道这样的技术性比较强的产品来讲,如果不懂技术很多需求提不出来。提出的需求要想办法保证解决方案是可行的,比如可以在计划会议前找研发骨干确认方案可行性,避免开发过程中才发现不可行或实现成本高,毕竟重新调整需求的成本远高于最初就确认好。

除了上面的工作外,产品经理还应当积极参与日常的沟通并及时确认需求。产品经理再怎么优秀,也是无法把所有的细节都考虑到的,这就依赖于日常的沟通和需求的及时确认。尽早的发现因为需求不完善或者开发人员理解不一致导致的问题。可以节省大量的成本。

一位产品经理能够做到上述几点,我们可以认为他具备了足够的质量意识和测试意识。

我们再来看开发人员如何培养质量意识和测试意识。很多开发人员从来没有站在测试角度考虑问题,只考虑功能实现,往往会忽略很多异常情况、边界值、安全、性能等问题。

为了解决这个问题,我们采取的措施是让开发人员每天开始编码之前写测试用例,然后进行评审,这样可以训练开发人员的质量意识和测试意识。具备质量意识和测试意识之后,再做其他的实践就更容易:做单元测试,测试用例的覆盖情况就比较充分;做结对编程也可以站在不同的角度思考;做代码评审可以看出更多的问题。在这个基础上我们也在要求开发人员做单元测试,做好自动化测试的覆盖。将来条件成熟的情况下,我们会尝试下TDD开发。

对开发人员更进一步的要求是拥有用户意识,能够站在用户的角度来考虑问题。产品经理整理的需求再怎么完善,也会有涉及不到的地方。这时候就很考验开发人员的综合能力,要尽量站在用户角度提出自己的建设性的意见,帮助产品经理弥补需求的不足,或者完善细节的体验和交互的问题。

如果一位开发人员具备了比较好的质量意识和测试意识,同时也能够站在用户角度思考问题,他所开发的产品的质量和用户体验是有保障的。

测试人员角度来讲,我觉得最大的挑战就是快速响应能力,即如何在短周期迭代里面能够按期、保质地完成迭代的测试任务,保证产品的质量。想要达到这样的效果,测试人员除了提升自身的业务能力之外,还需要掌握足够的自动化以及自动化测试的能力。业务能力包括对功能熟悉程度、学习能力、缺陷判分析、沟通表达能力等,就不再赘述。下面重点说一下自动化和自动化测试的能力。

自动化是指充分地利用各种各样的工具来减少重复、提高效率的能力。我们对测试同事的训练就是让大家把测试环境都迁移到Linux下面,平时测试都是使用Shell + Vim工作。我们还给大家买了很多必读的书,定期组织大家学习,写读书笔记。实际的效果还是很明显的,我们很多测试同事刚加入团队的时候基本上没有用过Linux,现在都可以熟练使用Linux来完成日常测试。

对测试人员更进一步的要求就是全自动化测试。从迭代最初就开始准备自动化测试,比如测试环境开通的脚本、测试数据的准备、测试方法或者工具的寻找到自动化测试方案的设计、抽象、实现以及规模化脚本的开发和维护。

如果能够做到这一点,就可以真正做到持续集成、持续测试了。当然做到这一点确实很难,但确实也是可以做到的。通过充分的自动化测试的覆盖,我们才可以提高回归测试的效率,进而有更多的时间来做探索性的测试,挖掘更多有价值的缺陷。

敏捷开发浩浩荡荡,越来越流行,要想好快省多地完成项目,就需要整个团队提升测试意识,做好各自分内的工作,保证自己环节交付物的质量。与大家共勉。

点赞
收藏
评论区
推荐文章
【敏捷研发系列】前端DevOps流水线实践
软件开发从传统的瀑布流方式到敏捷开发,将软件交付过程中开发和测试形成快速的迭代交付,但在软件交付客户之前或者使用过程中,还包括集成、部署、运维等环节需要进一步优化交付效率。因此Devops的产生将敏捷的相关理念扩展到运维侧,从而将产品、设计、开发、测试、运维团队更紧密的结合在一起。而从交付给客户产品视角看,前端研发通常又是在整个产品设计开发链条的最终节点,意味着前端团队受到上游变更的影响是最大的,并且从经营理念效率出发,提升前端交付效率是至关重要的。
开发者测试你必须知道的7件事
好买网(www.goodmai.com)IT技术交易平台摘要:开发者测试是现代软件工程中非常重要的一环,敏捷开发、主干开发这些先进的项目管理方法和流程都基于完善的开发者测试。一、“开发者测试”就是“开发者来测试”开发者测试是现代软件工程中非常重要的一环,敏捷开发、主干开发这些先进的项目管理方法和流程都基于完善的开发者测试。当每个月甚至每周都要交付一个版本
待兔 待兔
3年前
敏捷软件开发背景下的软件设计
在目前大部分的软件开发组织中,敏捷开发已经成为毋庸置疑的标配。随着数位技术大神和布道师的宣扬和数量庞大的敏捷教练的身体力行式推广,商业环境和客户需求变更速度的日益加快,采用端到端交付周期更短的敏捷开发过程基本已经成为项目成功的必要条件。软件设计的刚需被敏捷了吗?工作流程的变更以及开发节奏的加快并不能绕开一个很核心的问题
Stella981 Stella981
3年前
DevOps中的测试工程师
尽管DevOps仍需要手动测试,但测试人员能做的还有很多。DevOps需要在各个阶段进行协作,因此,使开发人员和测试人员从敏捷孤岛式转变为一个在各个阶段中所有成员不断参与的运营已变得非常具有挑战性。传统上,给测试人员提供产品,他们的任务是测试产品中的错误,并将发现的结果报告给开发团队。但是使用DevOps,测试已经涉及整个开发生命周期,而不仅仅是
敏捷开发 敏捷开发
4个月前
实践了上万次,原来这些才是敏捷测试需要遵循的原则
与传统的阶段性测试不同的是,敏捷测试能够将测试集成到整个软件开发过程中,尽早、及时地发现缺陷,帮助交付有价值的高质量产品。传统测试与敏捷测试的比较大的区别在于:在瀑布方法中,测试只能在开发结束后进行;在敏捷方法中,测试是贯穿在整个开发过程中的,同时可以在需
敏捷开发 敏捷开发
4个月前
敏捷团队的最佳测试实践:自动化金字塔
自动化测试和敏捷软件开发常常是成对出现,但敏捷中的自动化往往说起来容易做起来难。大多数开发人员都已经认识到测试自动化的好处:它加快了测试速度、降低了成本、增加了覆盖率等。但是,许多人从未超过开始所需的初始投资。就像这幅漫画中的穴居人一样,许多团队陷入了困境
京东云开发者 京东云开发者
10个月前
【低代码】低代码平台协同&敏捷场景下的并行开发解决方案探索 | 京东云技术团队
低代码开发平台的出现,大大地提高的产品交付效率,但是在协同开发、敏捷迭代的场景下,也暴露出了一些问题。本文将根据不同诉求,渐进式的讨论支持并行开发的各种解决方案。
陈哥聊测试 陈哥聊测试
9个月前
如何选择合适的自动化测试工具?
自动化测试是高质量软件交付领域中最重要的实践之一。在今天的敏捷开发方法中,几乎任一软件开发过程都需要在开发阶段的某个时候进行自动化测试,以加速回归测试的工作。自动化测试工具可以帮助测试人员以及整个团队专注于自动化工具无法处理的各自任务,但困难的部分就是选择
敏捷开发 敏捷开发
7个月前
敏捷开发模式下如何快速提升产品质量
在团队选择敏捷开发模式下,敏捷测试部分也同以往的软件测试流程有所不同。如何平衡敏捷的快速迭代开发和解决Bug的矛盾?