传统企业敏捷转型纪实(二)
这是启动会议结束之后一周内发生的事。我们现在有了迭代计划,一堆的story和一堆迷茫的人。接下来怎么做开发?本系列目前有两篇:
迭代开始
上次刚刚理清楚了各组自己的需求,但是组员们并不是都完全了解。Ken先把所有人都召集起来,告诉大家:现在需求不仅仅是BA的事情了,需求不清是开发和测试的责任,大家有义务互相协作,把需求理清楚。各个PO开始讲依赖:有没有依赖于其他组的story?有没有依赖其他人(比如整个大组只有一位安全专家,可能有些story会对这个人有依赖)?PO们讲完了,有的组可能就凭空多了几张被别的组所依赖的卡,优先级还都比较高。所以需要重新安排一下迭代。计划调整完后,各个PO依次大致地给SPO讲一下自己组第一迭代的主要功能和风险,在获得SPO的认可之后,第一个迭代的计划就算确定下来。
然后就该每个组员认领story了。Ken要求每个story都要有对应的开发和测试人员,从新人开始认领。每个成员自己想学什么,想做什么,职业规划是什么,按照它们来决定自己要开发的story。这样的目的是激发每个人的潜能,提高团队的能力,而不仅仅是着眼于这个版本的交付。同样的,每个成员,都不仅仅是开发这个版本,而是开发一个产品。现实中,可能会出现胡乱挑卡的情况,比如说A卡可能很适合甲来做,但是乙是新人,抢先把卡挑走了,这时候就需要PO来与大家沟通,做决策。
落实完了每个人的工作,Ken又把大家叫到一起,问:你们对按时发布有没有信心?5分就是信心指数最高,1分最低,大家一起伸手指示意。大部分人都举4或者5,也许是无所谓,也许是还没适应一个有话就应该讲出来的环境。有个别成员伸3个指头的,就需要解释一下为什么信心不足,SPO需要当场把问题解决,尽量做到所有人都信心爆棚,起码看上去得是这样。
需求分析
到了具体开发阶段了,怎么做呢?第二天就是一堂需求分析的课程。大家探讨一下开发和测试怎么协作,需求应该怎么分析,测试用例应该怎么写。对于一个story,开发人员需要知道怎么测,做出来的东西由谁来用,才有能力开发。Ken引入了场景树来做需求分析。举个栗子:一个买手机的story。看起来好像需求很明确,但是具体做就会有各种问题:到底对方要的是什么样的手机?所以开发前必须搞清楚,这个story的目的是什么。买手机是内容,不是目的。用5个为什么来深挖,可能就能得到这样的目的:女朋友手机坏了,让我买个新手机。然后我们可以画出这样的图:
第一个步骤可能就是去取款准备买手机。这个步骤可以用活动、实体、结果来建模。活动应该是动词,描述一个活动:取款。它产生了一个名词实体:人民币。校验这个实体可以得到结果,结果具有若干维度。有点晕?看图:
取款这个活动,产生了人民币这个实体。结果的维度是金额。取完款之后,去手机店的动作,产生了手机店这个实体。结果的维度有哪家店和日期时间。到店之后,购买手机的活动产生了手机这个实体。结果的维度有品牌、型号、价格等等。这些维度越清晰,这个需求分析的质量越好。如图:
有的朋友可能会问:除了最后得到新手机,是不是也得校验我取的款花了多少,那怎么体现在图里呢?这个还是看需求。如果必要的话,可以在购买完手机后増加一个计算余额的活动。
测试用例
画完场景图之后,就能比较容易地根据实体和维度导出测试用例来。还是以买手机为例:首先验证第一个实体:人民币。画张表格如下:
金额 | 预期结果 | 备注 | |
---|---|---|---|
人民币 | 1000 | OK | |
人民币 | 0 | NG | 银行账户余额不足 |
从Given、When、Then的角度上看,再加上Given,这就是一个很具体的单元测试用例。然后是手机店:
哪家店 | 日期时间 | 预期结果 | 备注 | |
---|---|---|---|---|
手机店 | 国美 | 2016/01/20 10:00:00 | OK | |
手机店 | 苏宁 | 2016/01/20 22:00:00 | NG | 下班了 |
手机店 | 苏美 | 2016/01/20 10:00:00 | NG | 没有这家店 |
最后是新手机:
品牌 | 型号 | 价格 | 预期结果 | 备注 | |
---|---|---|---|---|---|
新手机 | 小米 | Mi Note | 1999 | OK | |
新手机 | 魅族 | MX-5 | 1799 | NG | 没有这个型号 |
新手机 | 华为 | Mate8 | -3199 | NG | 价格不正确 |
新手机 | 小魅 | MiMX | 999 | NG | 没有这个品牌 |
从上面这几张表我们也能看出来,维度越多,测试案例也就越多,所以说需求的质量就会越高。