聊聊用户故事与测试启发

news2024/9/28 0:53:41

这是鼎叔的第六十六篇原创文章。行业大牛和刚毕业的小白,都可以进来聊聊。

欢迎关注本公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。

用户故事的概念于1998年被正式提出,在2001年开始逐步成熟。目前,市面上有关讲解用户故事方法的著作不少,在Scrum流程中配合使用,效果显著。我们先回顾一下用户故事最核心的知识内容。

用户故事核心知识

用户故事用来描述对用户有价值的特性或功能,相对于传统的需求规格说明书,它用简化的形式促进团队交流,降低修改的成本,能灵活的调整以响应变化。通过用户故事的验收标准驱动,让所有敏捷团队成员和干系人,对最终目标达成共识。

用户故事的描述格式通常为:As(特定的用户),I want(具体场景下实现的某个功能),So that(获得某种目的/价值)

用户故事要符合3C原则Card(卡片,上面是一句话概述,能让成员快速识别),Conversation(通过产品和技术的直接对话,了解背后的需求细节),Confirmation(验收条件- AC:Acceptance Criteria,确保清晰无歧义)。通常我们可以在一张Card的正面写上用户故事的描述,背面写上测试如何验收,因为空间有限,验收描述必须非常简洁。

用户故事也要符合INVEST原则Independent(彼此独立,相互间松散耦合,尽量减少依赖),Negotiable(用户故事可以协商,不是一成不变的,需要PO和成员以及客户的坦诚交流), Valuable (能体现对客户的明确价值),Estimable(能够被开发团队合理估算的), Size Appropriately(大小合适,能够在迭代中完成,如果偏大需要拆解用户故事),Testable(故事有明确无歧义的验收条件,能被明确客观的测试用例验证)。

用户故事鼓励推迟细节考虑,因此在进行讨论时不要过早涉及用户界面,也不用给用户故事卡片编号。

推荐学习书目:Mike Cohn的《用户故事与敏捷方法》。

测试启发

一、所有用户故事的验收标准是否明确,团队是否对验收测试用例达成一致?

验收标准通常写成GWT的格式:

Given(什么场景或条件下,如在首页新闻的搜索框)

When(采取了什么行动,如输入了品牌关键词)

Then(得到了什么结果,如输出了该品牌直接相关的热门新闻,可以浏览点击)

示例:

验收标准可以避免团队成员对需求理解的偏差,帮助测试人员快速掌握测试范围。但验收标准不是验收测试,验收标准定义了用户故事完成的标准,验收测试要基于验收标准,但是验证的具体场景更广,建议每个用户故事验收的测试用例不超过6个(通常是1-6个之间)。

特性团队对具体的验收测试用例达成一致,最大程度上保障开发人员能更好地进行验收测试驱动开发,交付的初版质量也会更高,更容易一次性通过验收。甚至在整个迭代的活动中,验收测试用例都可以作为团队统一的沟通语言,降低不同角色对需求理解的不一致性。

注意:验收测试用例不等于完整的测试设计用例,它通常仅仅只是完整用例集的子集,优先级很高。

二、所有用户故事是否具备可测性。

我们是否能明确测试它们的工具方法,判断测试通过的指标,如有疑问,需要在评审中和文档中获得澄清。

特别小心需求描述中不清晰的定义,比如性能要增加50%(具体什么场景,什么指标?),安全性要提升(具体哪一项产品规格的安全性,要通过什么工具的安全检查?)。

三、用户故事估算排期,必须考虑测试完成任务的耗时。

用户故事在迭代中达到“完成”的定义,通常是包含“相应测试任务完成”的。所以在估算时要纳入相应的开发自测和专业测试时间。

针对被拆解的用户故事,也需要我们在本迭代中对测试工作量做好评估。故事被拆解后,有利于测试工作量的评估更加精准。从故事验收及回归测试的经验来看,开发工作量在2-3人天的用户故事,其测试验收的效率是最高的,可以在收到版本的当天完成用例集测试反馈,便于开发快速修复问题。

如果评估出来的测试任务人手不足,需要采取一定的补救措施,如安排开发人员支持测试、降低非核心功能用例覆盖等。

针对客户端版本和重要服务的重构版本,正式发布的准备成本比较高,风险也比较高。我们通常会预留一个迭代做发布前的准备,包含缺陷修复和集中的系统测试投入,如兼容测试、回归测试和核心指标性能测试等。这个迭代就建议尽量不安排新功能的开发和测试了。

四、产品经理的需求文档是否支撑了各个用户故事需要的三要素信息?尤其是否说清楚了-对什么用户提供了什么价值?

我希望推动产品经理在需求文档中给出明确的用户价值描述,原先觉得这个要求是不是略高,但结合用户故事的核心知识,我认为这是非常有必要的基础要求,因为需求就是由一系列用户故事组成。既然能说清楚其单个故事的价值是什么,当然能进一步度量最终交付的效果并改进。

五、技术需求也应该拆解为技术故事。故事作为团队展开工作的基本单元,它不仅仅是功能描述,还可以是性能,安全,技术债务改造描述。举例如下:

对于通用型的非功能需求,即适用于所有用户故事的质量标准,如性能指标不低于多少,合规不违反,不能有资金损失等,可以用相应的约束卡片来书写,让团队在迭代活动中能关注到,但约束卡片的故事点是0。

测试技术故事也要能识别,合理排期。

测试技术故事通常是重要不紧急的事项,而且不太好通过用户视角来描述其价值和验收标准,因此很容易被PO和团队忽略。测试人员需要主动澄清这个故事对特性团队的长期收益。越早还债,收益越大。

比如,基本接口的自动化测试覆盖,引入更好的性能测试工具和漏洞扫描工具,给看板增加质量告警等。测试技术故事也需要每个迭代能看到具体的成果,避免团队对未来的故事排期失去耐心。

有同学可能会问,有些技术需求很难估算到底需要多少时间完成,怎么办?那我们就用探针法拆解它:当前这个迭代只安排该需求的调研分析(我们称之为探针需求),输出关键结论报告,例如技术背景、行业案例、建议的实现方案及其风险等。下个迭代再根据调研结论进行一定开发工作量的技术故事实现。

六 用户故事描述中的角色(As Who),团队可以为角色建模,从而避免用户故事的角色遗漏。

通常建模的流程是:集体脑爆出角色集合,用人物卡片的方式展现。在根据使用频率、使用水平、使用目的来区分典型人物,同时保留一定的极端人物(有利于发现更多体验风险)。根据最后精选出的代表人物创造虚拟身份信息和形象,这样可以提升生动性,让成员们有代入感。

七、鼓励客户参与用户故事及验收条件的编写,客户可以用更商业化的语言来描述。

技术人员很多时候是无法直接接触到用户的,那如何获取有用的需求信息呢?我们可以和下面这些角色合作获取信息,但是要小心不同角色出发点的局限性。

和客户销售人员合作。要注意销售人员会更关注收入和利润,对用户价值可能会短视。

和领域专家或分析师合作。专家角色会带来很多洞见,但也可能不接地气,忽视用户真实细节。

组建用户代表团。需要注意代表团成员的差异性,比如,是否兼顾收费和免费用户,是否充分包含了不同背景的用户,是否熟悉竞品等。

八、用户故事不是什么。

用户故事不是国际软件需求规范(IEEE830),用户故事基于敏捷会严格控制成本。IEEE830侧重于需求清单,而不是用户目标,每个需求成本是不可见的。

用户故事也不是记录系统需求的用例,用户故事比系统用例小,后者往往是完整需求中的多个场景的大而全描述。用户故事寿命短,不包括界面细节,更关注商业目标。用户故事更能传播隐形知识,但是在大型团队还需要把重要交流记录下来。

缺陷集合也可以当成一个用户故事。

九、用户故事和XP/Scrum的关系。

用户故事起源于XP实践,其方法体系非常契合XP的价值观。

用户故事方法和Scrum流程深度融合。比如我们在scrum站会中会同步上一天的故事进展。高层管理者可以参加站会,但是不能提问打乱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/737684.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【G431】DAC+DMA输出正弦波

文章目录 前言1.CubeMx的配置步骤3.测试代码4.演示效果 总结 前言 之前有试过用纯的DAC输出正弦波但是效果不是很好,波形不连续,可以很明显的看出断层 之后尝试了DMA传输,发现波形明显变得更加顺滑。 1.CubeMx的配置步骤 下面以主频150MHz…

Avalon总线协议(二)

4.Avalon中断接口 中断接口允许从组件(agent components)能够向主组件(host components)发送事件信号。 例如,DMA控制器可以在完成一个DMA传输后中断处理器。 4.1 中断发送器 中断发送器将单个中断信号驱动到中断接收器。irq信号的时序必须与其相关联时钟的上升…

学位论文查找下载数据库

中文学位论文可去知网、万方查找下载。 外文学位论文可去ProQuest学位论文全文数据库查找下载。 没有知网、万方、ProQuest等数据库使用权限可去文献党下载器使用这些数据库查找下载学位论文。 文献党下载器首页下载客户端,登录客户端进入资源库,在资…

Prometheus 联邦集群配置及应用

目录 前言一、Prometheus 联邦配置1.1 安装 Prometheus1.2 配置 Prometheus 二、Prometheus 联邦验证 前言 什么是 Prometheus 联邦集群?又是在什么样的场景下应用呢?首先,我们知道 Prometheus 是一个强大的监控平台,它是针对容器…

抖音seo源码--矩阵系统开发者日志

这是矩阵系统源码开发者的日志分享,我们致力于为开发者们提供优质的SEO源码。我们研究用户行为、数据分析和搜索引擎算法,以提高内容的搜索排名和曝光度。通过不断优化关键词、元数据和链接策略,我们帮助抖音用户更好地被发现和分享。这个日志…

安卓JNI从0到1入门教程(二)

经过上一篇《安卓JNI从0到1入门教程(一)》介绍,我们对JNI有了初步认识,接下来我会从ndk-build方式和cmake方式分别来介绍怎么构建native库: 一、ndk-build ndk-build依赖配置文件Android.mk,存放代码的位…

机器学习概括

文章目录 一、机器学习是什么?二、模型训练YouTube流量预测1. 先写一个具有未知参数的函数(Function)2. 定义损失(从训练数据进行计算)3.最优化4.结果分析 Back to framework1.带有未知数的函数:2.定义损失…

20.自定义tabBar(使用vant中的tabbar)

自定义tabBar就是不用官方提供的tabBar了,而是自己搞 目录 1 配置 2 使用vant组件库做TabBar 2.1 引入组件 2.2 使用组件 2.3 自定义图标 2.4 把info与store进行绑定 2.5 tab页面的切换 2.6 改变激活状态下的文本颜色 1 配置 首先你需要在项目根…

4.2 “ P4G42_V1

P4G42_V1 产品参数 产品型号 P4G42_V1 尺寸(mm) 124*90*12mm(不含安装支架) 屏幕尺寸 4.2 inch 显示技术 电子墨水屏显示 显示区域(mm) 84.6(H) * 63.4(V) 分辨率(像素) 400*300 像素密度 120dpi 显示颜色 黑/白 外观颜色 白色&…

springMVC(二)—— 进阶

一、解决中文乱码问题 解决中文乱码问题的关键在于判断字符是什么时候乱码的 先在java程序里刚生成这个值的地方打印一下,如果在控制台输出就乱码了,那就排除浏览器和jsp页面的编码出问题。否则 看浏览器的编码 看这个jsp页面的编码是否设置好了 一般不用…

Python启动TCP服务并监听连接,从客户端发送消息

下面是一个简单的例子,演示如何在Python中启动TCP服务并监听连接,以及如何从客户端发送消息: TCP服务端代码: import socketHOST 192.168.6.211 PORT 8888server_socket socket.socket(socket.AF_INET, socket.SOCK_STREAM) …

electron的(maximize)最大化方法会导致头部白色横条以及四周大黑边

参考文章:https://www.w3cways.com/2505.html 感谢这位博主 我在使用win.maximize()后发现应用程序虽然最大化了,但是四周和顶部有一定宽度的黑边白边,在百度一段时间后没有发现其他人有这个问题 😔唉 必现步骤: 只要…

禁止 input 输入框显示历史记录

问题概述 在 HTML 开发中会 input 标签是非常常用的, 当在 input 标签 输入数据后,再点击输入框会显示原来输入过的内容,还会出现下拉的历史记录。让使用人员感觉比较恶心。 解决方案(隐藏记录框) 隐藏记录框 aut…

环二肽试剂:7451-73-2,CYCLO(-GLY-TRP),环(甘氨酰-L-色氨酰)

资料编辑|陕西新研博美生物科技有限公司小编MISSwu​ CYCLO(-GLY-TRP)环二肽,含有(甘氨酰和色氨酰基团),色氨酸又名α-氨基吲哚基丙酸,分子式:C11H12N2O2,白色至黄白色晶体或结晶性粉末。无臭或微臭,长时间…

Apifox详细使用教程 -- 有这一篇就够了

文章目录 Apifox简介 Apifox的安装与新建项目 Apifox编写接口文档 总结 四、Apifox的使用快捷键 一、Apifox简介 是 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台,更先进的 API 设计/开发/测试工具,定位 Postman Swagger Mock J…

SpringBoot + Kotlin 中使用 GRPC 进行服务通信

示例项目见:kotlin-grpc 一、导入依赖: import com.google.protobuf.gradle.* plugins { id("org.springframework.boot") version "2.3.1.RELEASE" id("io.spring.dependency-management") version "1.0.9.REL…

面试官常问的一些初中级前端知识点

CSS 1. 介绍下 CSS 盒子模型 回答到以下两点就可以: 一个盒子由四个部分组成:content、padding、border、margin。两种盒子模型:W3C 标准盒子模型、IE 怪异盒子模型标准盒子模型 width / height 只是内容高度,不包含 padding 和…

平板ipad触控笔是哪几款?苹果笔性价比高的推荐

实际上,现在市场上许多产品都有各自的特色,一些注重产品外观,一些注重产品功能。就相当于ipad上所搭配的电容笔。所以,在购买电容笔的时候,必须对电容笔有一些认识。在选购前,必须先了解各种类型的电容笔&a…

7-8 程序员买包子

7-8 程序员买包子 分数 10 全屏浏览题目 切换布局 作者 陈越 单位 浙江大学 这是一条检测真正程序员的段子:假如你被家人要求下班顺路买十只包子,如果看到卖西瓜的,买一只。那么你会在什么情况下只买一只包子回家? 本题要求你考…

线程 线程池

线程和进程的区别? 进程是正在运行程序的实例,进程中包含了线程,每个线程执行不同的任务 不同的进程使用不同的内存空间,在当前进程下的所有线程可以共享内存空间 线程更轻量,线程上下文切换成本一般上要比进程上下文切换低 创…