敏捷团队中的QA由来

QA,全称为Quality Analyst,即质量分析师(有些称为Quality Assurance,即质量保证师)。为什么它总跟质量扯在一块?感觉这个角色明明做的都是测试的事情,为什么不直接叫做tester那?敏捷项目中的QA日常都做什么事情那?可能一大推问题都会冒出来。别急,跟着我这篇文章来一步步的回答这些问题。

假设现在有一个保险公司,他想找一个软件公司做一个在线卖保险的系统。那么这个系统从开始到完成至少需要三个角色。

Business owner -> developer -> end user

  • Business owner即保险公司的人,也是我们的需求来源,由他来提出业务需求。
  • developer即软件开发工程师,根据客户的需求做出客户期望的产品,最终交付给客户。
  • end user即产品的最终用户,在本例子中即有意愿在网上买保险的人。这个系统到底好不好用,他们最有发言权。(有的时候end user和business owner有可能是同一批人,比如开发的是一个内部公司使用的OA系统)。

只有这些角色能够顺利、成功的完成一个产品吗?实际操作中肯定会遇到很多问题。这些问题会集中在两个地方。

第一个问题出在Business owner和developer。在沟通需求的时候他们彼此会发现太费劲了。Business owner张口就来的quote、premium、policy这些名词软件开发工程师不懂什么意思,因为他们没有保险行业的背景知识,而软件工程师喜欢说的MVC、BDD、Java之类的,Business owner也搞不懂,并且人家对这也不感兴趣。那么软件开发工程师想,如果有人能即懂得保险行业知识,又具有IT背景,那么分析需求肯定会顺利不少。这样的人在敏捷团队中就叫做BA(Business Anslyst,业务分析师)。BA会理解并挖掘客户的需求,然后将需求转变为具体的AC(验收条件,Acceptance critirial),再交由开发工程师来实现。同时他也可以将业务知识最大化的传递给开发工程师,保证开发工程师能够准确的理解需求(为什么不让Business owner直接将业务知识传递给开发工程师那?原因很简单,人家可是一秒钟几十万上下的主,那里有这么多闲工夫。)

所以系统从开始到完成变成了这个样子。

Business owner -> BA -> developer -> end user

另一个问题就出现在了developer和end user之间。开发工程师完成的系统能够直接拿给最终用户用吗?如果你说能,要么你是对自己的产品信心十足,要么就是盲目乐观。我想大多数情况是后者。因为开发工程师在将业务需求转换为编码实现时,一方面由于理解的问题,实现或多或少可能会与需求有所偏差。另一方面由于自身思维的局限性,会导致系统隐含了一些缺陷。假如最终用户在使用系统时,发现在线支付有问题,或者页面在自己所用的浏览器下不能正常显示,你觉得他们还有兴趣使用你的系统吗?这就相当于把最终用户当做系统的测试者,人家不收钱还帮助我们发现bug,那里有这好事?系统的问题要尽可能的避免暴露给最终用户。那么在软件开发工程师和最终用户之间应该再加一个角色,就是tester。tester的主要职责就是按照AC,对系统进行功能性测试,确保功能的正确性,另一方面是针对一些非功能性测试(比如安全性测试,性能测试),保证系统的健壮性。

Business owner -> BA -> developer -> tester -> end user

做到这些的tester还不能称之为QA,因为它的角色更像是软件质量的看门人,最终把关者,还达不到测试分析的要求。

现在新的问题来了,到底tester什么时候该开始对软件的测试那?

一个极端情况是等developer把所有的功能完成以后,再交给tester来测。这样会造成很多问题。

  1. 如果开发者需求理解有偏差,需要重新返工。
  2. 软件中发现了bug,该功能是很久以前开发完成的,developer定位和修复要花很长时间。
  3. 有太多的功能需要测试,tester要花很长时间,developer又要修复发现的bug,这段时间不可预估,虽然是属于项目上线的最后时刻,但是整个系统始终处于一个不稳定的状态。

大家都知道在软件工程中,需求变更发生的越晚,bug发现的越晚,会软件开发的影响会越大。这种极端情况的做法是不可取的。

那么应该怎么做那?我们可以将整个系统的功能细分成很多小功能点,每一个小功能点都是独立可测的,那么一旦开发工程师完成此功能点,tester立马就可以拿去测试。每一个小功能点就是敏捷中所说的用户故事(user story)。

一个user story的典型的生命周期是这样子的。

  • backlog -> BA将刚建好的story卡放置在backlog list里
  • Analyse -> BA细化story卡,完成验收条件等内容的编写
  • development -> 开发人员进行开发工作
  • testing -> 测试人员进行测试
  • UAT -> 用户验收测试,Business owner会对功能进行确认
  • Production -> Business owner准许后,将功能发布到生产环境

如果只是实现这样的流程,那么这个团队还不算是真正的敏捷团队,这里的tester也不算是真正的QA。因为业务需求通过Business owner到BA再到DEV到tester,是一个衰减的过程。小时候我们玩过一个游戏,老师让一群人排成一排,他会给第一个人说一句悄悄话,然后让第一个人偷偷讲给第二个人,第二个人再原封不动的讲给第三个人..直到最后一个人把这个悄悄话讲出来和老师的原话比较,我们往往发现最后一个人的话很难和老师的原话保持一致,甚至意思会大相径庭。那么这就意味着tester在做测试的时候他不一定能够真正了解业务的实际需求,所以在测试时难免会出现纰漏。这样的卡最后让business owner确认时,很难避免给business owner “惊喜”。

所以为了解决需求衰减的问题,tester要尽早的介入到的story的前期工作。在BA分析故事卡的时候,tester就可以根据卡的内容准备测试策略、测试环境,甚至准备测试数据。在开发人员领取卡的时候,tester可以从测试的角度给开发人员提供一些建议。而在开发人员开发卡的时候,tester可以和开发人员一起pair编写自动化的测试用例。开发人员开发完毕后,tester可以在开发人员的本地环境中快速验证其是否满足所有验收条件,必要的自动化测试是否已经完成等。在UAT环节,tester又可以帮助business owner进行sign off。

这个时候需求的传递已经不是一个简单的链式的行为,测试人员作为连接器把需求良好地串联了起来。测试人员的职责范围已经超出了我们通常所理解的范围。这个时候再用tester这个称呼已经无法涵盖该角色的职责了。所以就有了QA(质量分析师)这一角色。可以看出在敏捷团队中QA并不是质量的最终把关者,而是在项目开始就参与到了质量的控制当中,一直贯穿到所有环节。

如果想了解敏捷团队中QA的具体职责,可以参见我司的同事的文章《敏捷中的QA》.
如果你想知道自己适不适合QA,请参见我司另一位同事的文章《敏捷QA,从入门到放弃》

时间: 2025-01-30 00:17:43

敏捷团队中的QA由来的相关文章

如何在大型开发组织的敏捷团队中实施CMMI

近年来,敏捷开发方法能够更好地适应现代软件开发,逐渐发展成为一种主流开发方法,也正在改变着软件开发过程.然而,敏捷开发方法常常被认为同CMMI过程无法共存,因为CMMI被看做是以规格化方法控制软件开发过程. 2008年,Hillel Glazer, Jeff Dalton, David Anderson, Mike Konrad 和 Sandra Shrum出版了<CMMI和敏捷方法:为何不彼此相容>一书,为那些既想保持项目过程可控又想体验敏捷开发灵活性的开发组织开启了一扇窗口.CMMI过程管

敏捷时代的建模:敏捷团队的扩张除了代码还需要什么?

敏捷方法已经成为了当前软件开发的主流模式,可工作的代码(以及自动化测试)被认为是团队最重要的产出. 那么是否不再需要建模了呢?UML真的已死?我并不这么认为. 在本文中,我将探索在敏捷时代,建模方法依然适用并且扮演关键角色的所在.尤其在开发规模扩张到多个团队后,对整个系统的"Big Picture"达成共识将变得非常关键. 敏捷中的"设计"在哪里 虽然代码表现了事实,但它并没有表现事实的全部 – Grady Booch 在开篇部分,我将描述一个使用Scrum的敏捷团

简述测试在敏捷项目中的重要性

本文是一位测试专家对该文做出的回应. 就如同已经灭亡的皇室(国王已经消逝了,但是皇后却将永存),我们 的软件开发正传递着类似的呼声:"测试已死,我们再也不需要测试人员了!"但随之你会发现,哎呀,客户不满意,最后 又回到"测试万岁",但这次是更好,更完整,更有效的测试.就如同历史上众多的复辟王朝(我最喜欢皇后伊丽莎白1世 )一样,测试将强有力地帮助重新定义事物完成的方式以及它们的工作原理. 我打赌你现在正在想这不过 是自我吹嘘而已,但是,事情是这样发生的: 让我们讨论

业务分析师在敏捷项目中的作用

敏捷http://www.aliyun.com/zixun/aggregation/13764.html">软件开发实践的文化中存在着一个断层,该断层同样体现在许多敏捷团队中.这个断层就是业务分析人员在敏捷项目中的角色--谁来担任这个角色?它的作用 和价值是什么?它又是如何发生改变的?这种情况的潜台词(其实我曾至少听人说过一次)就是:"我们不需要什么见鬼的分析师!".无需赘言,我当然认为这是 大错特错!在本文中,我证明如下观点:只要以正确的方式向业务看齐,业务分析师就可

分布式团队中的敏捷

为了在一个分布式环境中获得更好的团队效能,并让敏捷可以很好地发挥作用,团队需要协同运转,而团队合作是核心. Richards指出,你需要消除文化和流程限制,这样才能实现团队之间以及团队内部的协作. 关于如何在远程工作时保持联系,Pilar Orti在接受InfoQ采访时就如何处理远程团队的跨文化问题提出了建议: 我认为,这里有两个不同的场景需要考虑:一是和总部设在另一个国家的团队打交道:二是和分散在世界各地的个体共事. 在第一种情况下,团队成员都位于一个和你不同的国家,他们的工作方法.就餐时间等

独立软件测试团队在敏捷开发中的几个特别实践

最近读了<测试人与敏捷团队的五个约定>,很是赞同.但发现其并没有紧扣敏捷开发测试的特点,这五个约定在传统开发中已经早有实践,也有相关论述.哪么在敏捷开发的测试方面有没有不一样于传统开发测试的并且是有效的实践? 从敏捷团队的组建上来说,敏捷团队并没有要求安排专门的测试人员,甚至于在某些的方法中不建议清楚的区分开发人员角色和测试人员角色. 本文讨论的是已经存在独立测试团队的情况,如何在敏捷开发中进行高效的测试. 实践1:测试保护开发 通过快速的自动化测试跟进开发,保证新增和修改不破坏已经获得的成果

快速迭代的开发方式中的QA实践方法

背景 尽管"小步快跑"的快速迭代开发方式早已成为互联网软件开发的主流指导思想,但大量开发团队在落地这一开发方式时最常遇到的问题就是"如何QA",因为,传统软件行业的QA方式(手动测试,回归测试等)无法适应每天多次上线的迭代节奏.这时,开发团队往往会面临这两种窘境: 要么是为了速度不顾质量,导致线上故障频发:要么是为了质量而固定发布窗口,导致业务不够敏捷. 那么,在快速迭代的开发方式下,究竟应该采用怎样的QA实践才既能控制住风险又能跟上节奏? 本文对小博无线技术团队在

敏捷过程中的需求分析

[摘要] 在日趋激烈的电信业竞争态势下,持续而快速地发掘和响应商机成为新的课题.作为响应机制中的关键环节,需求工程应用敏捷过程方法,以关注商业价值.快速响应.持续迭代的特征来应对变化和难测的未来,是尝试提高组织敏捷能力的核心.在这其中,作为沟通桥梁的需求分析同样可以应用敏捷的过程方法参与到生命周期的演进.敏捷需求分析将在需求时机与过程.文档要求.变更.参与者角色等方面展现其不同传统的特性.本文将结合电信业背景及企业实际情况,对敏捷需求分析作出初步的探索. 1.敏捷需求分析:电信行业背景与敏捷过程

敏捷实施中的学习与阈限

给读者的话:如果你是首次接触开放式敏捷实施的一系列文章,你可以先回过头去看看这一系列文章的第一部分.第二部分和第三部分.上篇文章(第三部分)描述了阈限(Liminality)的概念,在阅读本文之前,先读一读这些概念是非常有必要的. 阈限状态中的稳定性 阈限是令人不安的,并且还会产生压力.关于开放式敏捷实施的一个设想是,在典型组织里引入敏捷会产生组织级的阈限.如果使用过渡仪式的方式来处理这个阈限,那么创造一个快速而持久的敏捷实施还是有可能的. 开放式敏捷实施背后的核心概念就是认清和解决阈限问题可以