这两天在学习用户故事拆分,突然感觉它和MFQ是存在着那么多的相似性,故在此简单谈谈我的感想。

一.思维方式

2015年外部教练邰晓梅在她授课过程中分享了TED的一段脱口秀视频,视频中揭示了成功人士的思维方式,如下图所示:

  • 成功人士在做一件事情的时候总会先思考意义是什么(Why)?其次是如何去做(How)?在这个基础上才去考虑做什么(What)?非成功人士思考方式可能截然相反。

联想到我们的测试设计和故事拆分工作的思维方式何尝不是这样呢?

1.1测试设计的思维方式

新手在做测试设计时会基于对被测系统有限的信息“拍脑袋”直接给出测试测试设计用于,稍好些会套用一些诸如“等价类、边界值…”这样测试设计技术。但这些测试用例是否足够?哪些地方冗余?能否覆盖到用户最关心的功能点?这些都是很难得到保障的。而在现有的敏捷背景下的测试人员/QA越来越提倡的是做缺陷预防,在做测试设计之前先做被测对象和需求相关的信息收集和分析。在这个基础上得到正确的测试策略,甚至通过在需求澄清阶段就提前介入将缺陷直接扼杀在摇篮。

1.2故事拆分活动的思维方式

再来看下故事拆分活动。在需求分析和故事拆分阶段常出现的问题是喜欢用研发的语言去交流需求,一来上就直接从方案出发,特别是在已有系统上做需求尤为明显。比如:“当前我们XXX模块当前的处理流程是什么样的,这个需求就是要增加YYY结构,ZZZ流程”。也就是说通过现有系统能提供什么反推如何去满足用户的需要。而成功的需求工作应该是从用户价值出发,采用用户的思维和语言去考虑和描述,然后才是特性和设计。

二.协作方式

回想一下敏捷模式和传统模式下的研发的协作方式的差异无非就是横向切蛋糕和纵向切蛋糕的差异,如下图所示:

分层的思想随处可见,比如OSI 7层协议和TCP/IP 5层协议。分层的好处就是每层可以专注自己的事情单一职责,避免受其他层的影响,但也由于这个封闭性,每一层获得的上下游信息是是否有限的。现实中很多事情并不是局部最优解全局就是最优解,在越来越讲究协作的今天也很难没有任何依赖仅凭借一个人(或相对小的工作单位)就把一个庞大的事情搞定。正所谓群狼猛于虎。

2.1开发工作的协作方式:

在以往的研发工作的协作方式称作WBS(Work Breakdown Structure),创建WBS是把项目可交付成果和项目工作分解成较小的,更易于管理的组成部分的过程。WBS是把项目可交付成果和项目工作分解成较小的,更易于管理的组成部分的过程。WBS是把项目可交付成果和项目工作分解成较小的,更易于管理的组成部分的过程。如下图所示:

Created with Raphaël 2.1.0原始需求需求交付方案讨论分解实施

图2.1.1 WBS交付流程

以往的开发工作中,需求分析这块相对比较薄弱,接到原始需求之后直接进入方案讨论,总体方案确定之后横向切蛋糕,将任务分解为上层业务、底层平台来实现,而平台再继续切蛋糕分解到各个子系统分别完成,完成后再进行联调,各个子系统的团队都专注自己的任务而整体上考虑用户价值(WHY)比较少,而蛋糕层与层之间的交流成本却很高。

而在现有的敏捷研发流程是纵向切蛋糕,更加强调完整团队和从用户价值出发。更强化需求管理是保证团队从Why的角度,从用户价值出发去做产品,而完整团队是保证信息顺畅的传递和更好的协作。在敏捷背景下的DOD交付过程大致是这样的,如图2.1.2所示:

Created with Raphaël 2.1.0需求研讨需求分析澄清和故事拆分需求开发需求验收交付

图2.1.2 DOD交付流程

2.2测试工作的协作方式:

传统瀑布模型中测试工作即是横向切蛋糕的过程,分部门分团队进行单元测试->集成测试->系统测试逐层进行,但每一层的测试聚焦在自身有限信息和范围的基础之上,比如单元测试聚焦代码逻辑和流程测试,系统测试基于前端的软件系统测试,但都缺乏对于对于整个交付流程信息完备的了解,虽然进行了分层但单元测试、集成测试、系统测试的覆盖依然会存在重复和遗漏。而敏捷背景下应用MFQ要求QA在前端的需求研讨、需求分析、需求澄清和故事拆、需求开发阶段都要介入。首先要站在用户视角发出自己的声音,为缺陷预防贡献自己的力量。还需要不断收集信息,结构化的整理到KYM中,并作为测试策略、测试设计的依据,如图2.1.2:

  • 需求分析阶段:
    TS/QA做KYM,测试方案,反馈问题缺陷预防
  • 故事澄清和拆分:
    TS/QA做KYM,TCO,反馈问题缺陷预防
  • 需求开发:
    QA更新KYM,TCO信息TCON->TC,自动化用例开发,反馈问题缺陷预防
  • 需求验收:
    QA执行手工测试用例,将自动化用例部署到CI,反馈问题缺陷预防

三.语言:

3.1用户故事的描述语言:

在故事卡上我们采用如下格式做用户故事的描述:

As a Role For Value I want to do

这是一种站在用户视角的描述方式,As代表用户角色,用户是谁。For代表的是用户价值,do代表的是用户场景。

3.2 MFQ中TCON的描述语言:

TCON在MFQ框架中的含义是测试条件/测试场景,它的三段式描述如下所示:

GIVEN:用户场景 WHEN:用户行为 THEN:用户期待/价值

它也是一种基于用户视角的描述方式。

我们发现它们的共同点是描述语言基于用户语言,也就是研发和用户采用“统一语言”,统一语言的意义同样是拉近用户和研发的距离,能够更好的沟通。

四.准则:

用户故事的拆分和编写需要满足INVEST准则:

  • I:Independent 独立:
    可以独立交付,避免和其他故事产生依赖。依赖会妨碍优先级的的判定和 开发计划的评估。

这一点和MFQ中M单功能的划分类似,在MFQ中M也被认为是可以独立验证的软件功能。但MFQ中是可以存在功能交互的,我们称为F。F功能交互的测试也会比单功能的测试相比M来说难度也更大(更复杂的测试环境,测试人员需要了解的被测对象的领域知识更丰富)。非独立的故事多了是否也会导致测试设计阶段F类型的测试点增多,增加测试难度呢?MayBe….

  • N:Negotiable 可协商的:
    用户故事是可协商可调整的。

现有敏捷实践都主张“拥抱变化”,主张的是与用户沟通和调整而不是通过合同和条款制约。同样MFQ也需要是拥抱变化的,KYM和TCO梳理出来后并不是一成不变的需要根据需求的变化调整,在整个开发过程中当获得更多的信息后也需要进行调整。

  • V:valuable 有价值的:
    用户故事是端到端的要能够体现出用户的价值,不能体现出用户价值的工作可以考虑合并或用任务的方式进行跟踪。

测试中的价值体现在项目”风险”和“价值”。测试是无穷尽的,测试策略、设计和执行都应该向“风险”和“价值”倾斜。

  • E:Estimatable 可估算:
    用户故事要用于迭代计划,只有可估算才能保证团队开发节奏的稳定。故事不可估算的原因可能为领域知识不足、缺乏技术能力无法准确估计故事的工作量,缺乏封闭性。

  • S:Small 足够小:
    故事要足够小,能够在一个迭代内交付。

在MFQ中M也是要求划分为足够小的能够被独立测试的功能单元。但这个大小应该是根据功能的重要程度来决定,它是相对的。从测试策略的角度来说对于一个重要的单功能,我们需要拆分更多小的单功能,对于一个低风险的单功能我们可能不需要再继续进行拆分。

  • T:Testable:
    故事要有明确的验收条件,能够被测试和验收。需要用测去试证明一个故事满足客户的期望。

五.层次

分层细化的思想随处可见,用户故事和MFQ也都应用着这样的思想让需求的交付和测试过程可控。

5.1用户故事的层次

如上图所示用户故事分为迭代内的、发布的,和史诗故事。

5.2MFQ的层次

如上图,在做TCO的时候我们也会将一个大的单功能M进行拆分为M1.1,M1.2…等等。

六.优先级

在故事卡和测试用例中我们都会存在优先级的标识来决定重要程度和执行顺序。用户故事的交付和测试优先级的排定都应该是基于风险和价值的,他们优先级排定都可以用下图来表示:

用户故事拆分与MFQ相关推荐

  1. 用户故事拆分方法总结

    如何拆分用户故事 一.用户故事的定义 二.拆分用户故事的目的 三.用户故事拆分原则 四.用户故事拆分方法 1.工作流 2.操作 3.业务规则 4.数据 5.用户界面 6.主要工作 7.简单复杂 8.性 ...

  2. 实例化需求:用户故事拆分的更好线索

    GitChat 作者:吴穹.雷晓宝.张刚 原文:实例化需求:用户故事拆分的更好线索 关注微信公众号:「GitChat 技术杂谈」 一本正经的讲技术 [不要错过文末彩蛋] 用户故事拆分是敏捷实施的入门实 ...

  3. 【华为云技术分享】如何拆分用户故事

    提起用户故事拆分,我们听得最多的就是INVEST原则(关于INVEST原则可以参考文章"用户故事等于需求说明"--你一定没有写好用户故事),但很多人面临的问题是拿到一个较大的用户故 ...

  4. 【DevCloud·敏捷智库】如何利用用户故事了解需求

    背景 很多团队在应用敏捷开发时,对估算经常感到困惑.这里所说的估算是指产品列表条目(PBI, Product Backlog Item)的估算 .比如,估算以什么标准进行?开发.测试的工作量都要估算进 ...

  5. 如何对一个产品编写完整的用户故事?

    用户故事是敏捷项目管理的核心实践之一,除了定义.表达"公式",本文将给大家分享用户故事的价值,比如用户故事在非技术的角度告知研发团队需求背景是什么,让研发团队更轻松的了解用户需求场 ...

  6. 产品:详解史诗、用户故事、拆分、验收标准、待办事项、用时预测、故事卡

    目录 一.史诗(Epics) 二.拆分 (break down ):史诗-用户故事 三.验收标准(Acceptance Criteria) 四.待办事项列表(Backlog) 1. 优先级(Prior ...

  7. 怎么用leangoo做需求管理?(用户故事地图)

    用户故事是在敏捷开发中表达需求的主要方式,我们在做敏捷开发的时候都有需求池的概念,在Scrum中这个需求池就是产品backlog,需求池里面是条目化的需求,每一条通常是一个用户故事.按照Scrum的定 ...

  8. 让用户故事真的像故事那样

    早期用户故事写在卡片上,只需一个句子.随着越来越多的系统和产品采用敏捷开发,对于有些复杂长生命周期的系统和产品而言,用户故事的内容值得积累,以便后续追查和修改.另外一个情形是为了确保用户故事真的完成, ...

  9. 划分用户故事(user-story)的原则

    在敏捷开发过程中是通过用户故事来将需求具体化成可以进行迭代开发的一个个现实的可见的开发任务.因此在敏捷软件的开发过程中,用户故事的划分对于迭代和开发起着举足轻重的作用. 用户故事从其名字来看是站在用户 ...

  10. 今天谈谈用户故事地图,不是用户故事

    摘要:用户故事地图其实并非是将描述好的用户故事汇总在地图上.而是通过分析.梳理,将用户故事展现出来,进而汇成了一副用户故事地图. 本文分享自华为云社区<浅谈用户故事地图>,作者: 敏捷的小 ...

最新文章

  1. 标签之美三——超链接的嵌入
  2. 对凸优化(Convex Optimization)的一些浅显理解
  3. 最简单的基于FFMPEG的推流器附件:收流器
  4. flash中的渐变滤镜GradientGlowFilter
  5. 加载不同linux内核,Linux内核加载过程
  6. scheduledexecutorservice 的使用_java中ThreadPool的介绍和使用
  7. C++递归或非递归实现求斐波拉契数列第n项
  8. day55-负载均衡之lvs
  9. 广播与点播、单播与组播
  10. 【简历优化】如何写好项目的亮点难点?项目经历怎么写最好?
  11. mongodb 配置文件
  12. TOP15 科幻小说系列
  13. springboot hikari数据库连接池死链 出现异常
  14. 同一个无线局域网(wifi)内,两台电脑无法通过ip通信
  15. Wampserver 80端口被占用
  16. 【OKR】11-12双月 OKR复盘
  17. 【原创】Moon在2005的辉煌
  18. 转 CSS兼容技巧整理--从IE6-IE9 火狐谷歌浏览器兼容
  19. 把手机自带计算机软件,如何删除手机自带软件,小编告诉你手机自带软件如何删除...
  20. 【vbs脚本】02.高级

热门文章

  1. Windows系统下载Android源码
  2. 超标量处理器设计 姚永斌 第10章 指令提交 摘录
  3. 新书即将上市:《善用佳软:高效能人士的软件应用之道》
  4. ExtJS2.0 可编辑表格EditorGridPanel
  5. SQL Server 2008 R2安装
  6. cisco2811 一对一IP地址映射
  7. pcie转sata3硬盘不启动_XPS 笔记本: 排除对 BIOS 默认设置的更改导致无法开机自检/无引导/硬盘或未检测到 SDD 问题...
  8. Electron实现桌面日历
  9. 【云驻共创】华为云文字识别服务的体验之旅
  10. mui登录模板源码解