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,从入门到放弃》

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

  1. 敏捷组织中PMO应遵循的准则

    敏捷改变了人们的工作方式,不仅仅是开发部门,而且还包括其它的部门,例如HR.财务以及PMO等.在大多数组织中,PMO是一个控制体.它指导项目团队的规范.模板以及流程.目前,大多数的IT组织都敏捷化了. ...

  2. 浅谈敏捷组织中PMO的角色

    所谓的"敏捷组织"其实并没有标准的模式,而且PMO(项目管理办公室)并没有一个标准的角色定义.有一个非常普遍的误解,公司在选择"敏捷"或者"瀑布&qu ...

  3. 敏捷团队的组织与管理--- MPD软件工作坊培训感想(下)

    注:由麦思博(MSUP)主办的2013年亚太软件研发团队管理峰会(以下简称MPD大会)分别于6月15及6月22日在北京.上海举办,葡萄城的部分程序员参加了上海的会议,本文是参会的一些感受和心得. 今年 ...

  4. 【 腾讯敏捷转型No.4 】为什么敏捷团队不要超过15人

    早期,腾讯公司的架构是比较简单的.从上至下分别是:公司——商业单元(BU)——部门——组——员工,每个部门基本上就是负责一个大的产品,每个组都是按照专业进行分工和管理,例如:产品组.终端组.后台组.设 ...

  5. 敏捷转型中why与how的总结

    敏捷转型參考框架: 为了成功顺畅地推行敏捷开发.下面将对整个敏捷转型參考框架作个整体说明.为企业进行敏捷转型提供基本方法參考.整个敏捷转型參考框架主要包括5个步骤,前两个步骤主要是回答 Wh y的问题 ...

  6. 【Sprint3冲刺之前】敏捷团队绩效考核(刘铸辉)

     TD学生助手团队已经在4.22~4.30完成了为期9天的Sprint2计划,并在Sprint2总结会议中安排了五一放假每个人的任务分配,下面发布下Sprint2冲刺周期的阶段性成果. Sprint2 ...

  7. 敏捷开发中如何做好Sprint规划?

    什么是Sprint规划? Sprint规划是scrum中用来启动Sprint的事件.迭代规划的目标是定义Sprint可以交付的内容,以及如何完成各项工作.迭代规划需要整个scrum团队合作完成. 与体 ...

  8. Scrum Master如何让敏捷团队正常运转?

    官方<Scrum指南>中定义:Scrum Master在Scrum团队中属于服务型领导,负责践行和支持<Scrum指南>中定义的Scrum,要帮团队的每个人理解Scrum理论. ...

  9. Scrum 敏捷实践中的三大角色

    在我过去的近两年工作中,我们一直在应用 Scrum 敏捷项目管理方法来开展工作,今天,我先从它的角色划分来讲起,毕竟这可是它最鲜明的特征. 首先,为什么这种项目管理方法叫 Scrum ? Scrum ...

随机推荐

  1. 【AR实验室】ARToolKit之制作自己的Marker/NFT

    0x00 - 前言 看过example后,就会想自己动动手,这里改改那里修修.我们先试着添加自己喜欢的marker/nft进行识别. 比如我做了一个法拉利的marker: 还有网上找了一个法拉利log ...

  2. Swift3.0服务端开发(一) 完整示例概述及Perfect环境搭建与配置(服务端+iOS端)

    本篇博客算是一个开头,接下来会持续更新使用Swift3.0开发服务端相关的博客.当然,我们使用目前使用Swift开发服务端较为成熟的框架Perfect来实现.Perfect框架是加拿大一个创业团队开发 ...

  3. 为C# as 类型转换及Assembly.LoadFrom埋坑!

    背景: 不久前,我发布了一个调试工具:发布:.NET开发人员必备的可视化调试工具(你值的拥有) 效果是这样的: 之后,有小部分用户反映,工具用不了(没反应或有异常)~~~ 然后,建议小部分用户换个电脑 ...

  4. nodejs之get/post请求的几种方式

    最近一段时间在学习前端向服务器发送数据和请求数据,下面总结了一下向服务器发送请求用get和post的几种不同请求方式: 1.用form表单的方法:(1)get方法 前端代码: <form act ...

  5. kafka配置与使用实例

    kafka作为消息队列,在与netty.多线程配合使用时,可以达到高效的消息队列

  6. 简单搭建 nuget 内部服务器

    搭建 nuget 内部服务器,最好的方式是使用 ProGet,参考博文<用 ProGet 搭建内部的 NuGet 服务器>,好处非常多,但需要使用 SQL Server 数据库,如果不想使 ...

  7. ES6的一些常用特性

    由于公司的前端业务全部基于ES6开发,于是给自己开个小灶补补ES6的一些常用特性.原来打算花两天学习ES6的,结果花了3天才勉强过了一遍阮老师的ES6标准入门(水好深,ES6没学好ES7又来了...) ...

  8. BPM配置故事之案例13-触发消息通知

    老李:小明! 小明:--见你就没好事,又要我干嘛? 老李:额,小事小事,最近很多部门都觉得Boss的审批速度太慢了,能不能以后给审批人一个消息提醒? 小明:--有一种不太好的预感 老李:怎么,很困难么 ...

  9. Java 教程整理:基础、项目全都有

    Java 在编程语言排行榜中一直位列前排,可知 Java 语言的受欢迎程度了. 网上有很多 Java 教程,无论是基础入门还是开发小项目的教程都比比皆是,可是系统的很少,对于Java 学习者来说找到系 ...

  10. 14门Linux课程,打通你Linux的任督二脉!

    Linux有很多优点:安全.自主.开源--,也正是这些优点使得很多人都在学Linux. 虽说网上有大把的Linux课程资源,但是对很多小白来说网上的课程资源比较零散并不适合新手学习. 正因为此,总结了 ...