从测试看需求

一、用户故事,敏捷环境

将所有的需求拆解成用户故事,从用户角度对系统的某个功能模块所做的简短描述(需求文档刚好相反,关注的是系统功能,很少会提及用户场景)。一个好的用户故事包括三个要素:

角色:谁要使用这个功能,

活动:需要完成什么样的功能。

商业价值:为什么需要这个功能,这个功能能带来什么样的价值。

例:

作为信用卡客户Jack

希望可以从取款机中用信用卡取现金

这样能够购买只能用现金购买的商品

二、验收条件(Acceptance Criteria)


在对齐用户故事的过程中,我们可以通过上图的方向进行思考和提问,以达到澄清需求的目标。至于用户故事的最终呈现形式,并不是那么的重要。

三、用户故事地图

如上图,用户故事地图,就是一堵用户故事墙,大级别的用户故事排在第一列,根据优先级,描述用户需求。对第一排故事成纵向分解。通过地图方式,可以让团队能够有一个空间充分思考各类可行方案,从而找到一条可以最大化投入产出的路子。可以让各种干系人对功能需求有相对一致的理解和整体认识。同时,根据这些故事排列出每个迭代的用户故事优先级。

用户故事地图还可以传送出很多的信息,比如它的橫纵坐标,其实是非常有意义的,横轴代表了用户的使用路线图,纵轴代表了需求的优先级。那几条红色的虚线,就代表了每个迭代需要做的基本内容了,相当于一个粗粒度的迭代待办列表(Sprint Back log)。

注意:这个地图是动态变化的。每经过一段时间,团队都应该重新审视这张用户故事地图,看看我们的规划是否发生了偏差?还有哪些需要补充的?有没有更好的意见或者建议?是否有些功能是不必要的?

四、实例分享

内部关于需求的管理方式,基于Confluence工具,模板如下图:

通过下面这个文档,我们可以很清晰的知道用户故事的信息:在哪个迭代被研发,需求内容是什么,如何去做验收。

·需求说明

·工作流程

(泳道图/交互图等

·验收条件

GIVEN             WHEN                     THEN                         REMARK

·原型/UI设计

五、延伸:用户故事的六个特性

好的用户故事满足INVEST原则

Independent   独立性

Negotiable      可协商

Valuable          有价值

Estimable       可估算

Small               足够小

Testable          可测试性

独立性:要尽可能地让一个用户故事独立于其他的用户故事。用户故事之间的依赖使得制定计划,确定优先级,工作量估算都变得很困难。通常我们可以通过组合用户故事和分解用户故事来减少依赖性。

可协商性:一个用户故事的内容要是可以协商的,用户故事不是合同。一个用户故事卡片上只是对用户故事的一个简短的描述,不包括太多的细节。具体的细节在沟通阶段产出。一个用户故事卡带有了太多的细节,实际上限制了和用户的沟通。

有价值:每个故事必须对客户具有价值(无论是用户还是购买方)。

可以估算性:开发团队需要去估计一个用户故事以便确定优先级,工作量,安排计划。通常让开发者难以估计故事的问题来自:对于领域知识的缺乏(这种情况下需要更多的沟通),或者故事太大了(这时需要把故事切分成小些的)。

短小:一个好的故事在工作量上要尽量短小,最好不要超过3天的工作量(我们的实践,具体可根据团队自行定义),用户故事越大,在安排计划,工作量估算等方面的风险就会越大。

可测试性:一个用户故事要是可以测试的,以便于确认它是可以完成的。如果一个用户故事不能够测试,那你就无法知道它什么时候可以完成。

六、小结

在需求评审的阶段,从用户使用场景的角度出发,通过提问,把需求逐步澄清,并形成验收条件,产、研、测三方共同确认,形成共识,以保证大家对需求的认知不发生偏差,为后续团队正确的做事提供有价值的指导。根据用户故事的基本特性,做到业务可验收、研发可实现、测试可验证、部署可交付。

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容