聊聊需求评审与验收测试

news2024/9/23 19:21:14

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

欢迎关注本专栏和微信公众号《敏捷测试转型》,星标收藏,大量原创思考文章陆续推出。本人新书《无测试组织-测试团队的敏捷转型》已出版(机械工业出版社),各大电商平台热销中,30万字350页,“阅读原文”有官方购买链接。

验收测试是质量左移的利器,也是团队各角色对需求形成共识的“语言”。遗憾的是大多数团队没有好好利用这个武器,仅仅把验收测试当成P0用例,在流程最后才使用。

需求评审前给出验收测试点

在产品经理组织需求评审会之前,我们是否就可以对需求定义的概念进行“逻辑测试”?

我们可以提前和产品经理沟通需求规格文档,提出修改意见,或者抛出有针对性的验收测试点请对方确认。如图:测试和产品在特性需求评审前的讨论流程。

图片

在需求评审会议上,我们也许可以一边看着需求规格说明,一边看着需求对应的验收测试点,甚至列出了包括历史上真实发生过的关联缺陷!这个时候,开发还没有开始思考如何实现呢!如下图所示,是需求和验收测试的二合一表格示范,以方便团队在需求评审时,同步核对质量风险和验收测试点,提高评审效率。

图片

这种创新措施的好处就是,开发把测试要验证的关键场景早早地记在脑里,再交付时几乎不会出现对于测试人员而言很低级的质量问题。

需要说明的是,测试提前梳理的这些测试点,可以经过产品确认后成为用户验收测试用例(UAT),也可以细化为(方便开发自测的)普通验收用例(AT)。验收测试的基本介绍在这里:聊聊用户故事与测试启发。

在聊聊Scrum三大角色的质量意识和文化建设提到过,敏捷研发团队针对需求评审完成条件可以设置准入门槛,定义为DoR(Definition of Readiness),这也是团队共同遵守的纪律。DoR中通常都会要求用户故事的“验收测试用例”必须由团队确认完成。一旦验收测试用例成为团队各个环节的“交付共同语言”,将极大地推动各个角色从一开始就重视质量,并且清楚自己的工作是如何对齐质量要求的,避免不同角色对于需求质量的理解差异太大。

在需求讨论中,不同角色自以为“理解”了需求,实际上想的可能并不一致。

图片

下图展示了在迭代的各个环节,验收测试用例作为共同语言贯穿全流程。

图片

需求评审的质量把关

首先要明确,需求的设计质量并不是只由产品经理负责,特性团队的每个成员都可以对需求设计的高质量负责。很难有人能够通过市场、用户和技术等方面的全盘思考,拿出一个高品质的产品设计方案。团队需要群策群力,帮助产品责任人快速提升需求设计的质量水平,并且定义达成足够水平的文档质量标准。

敏捷团队不追求文档的详尽,而是要求定义清楚边界和风险。具体纳入哪些“必填内容”,可以由一线团队根据自己业务特性和规模来定制纪律,例如针对初期上市产品,需求评审更关注主打什么功能,而不是缺失什么功能。

以下是本文推荐的需求文档质量把关项:

1)需求的上线背景和商业目标是否明确?需求的来源和交付日期是否明确?

2)如何评估本需求带来的商业价值?上线应关注的产品健康度指标有哪些,期待值范围是多少?

3)针对本需求的市场分析和竞品分析(可选)。如果需求规格复杂,需要提供业务逻辑图。

4)本需求在哪个主体上实现,它的上下游是谁?本需求对上下游主体有什么影响,交互逻辑是什么?本需求的成功上线依赖哪些服务,具体依赖关系如何?

5)本需求是否涉及性能变化,稳定性风险或者资金安全风险?如果是,请给出详细分析(可请开发人员给出)?

6)所有需求的优先级是否明确且唯一?

7)本需求的上线策略是怎样的?

最后,除了上文提到的,把“完成验收测试用例”这一条纪律纳入DoR,我们还可以把其他有利于需求质量提升的好纪律都纳入DoR,让团队共同为需求的精益化负责。DoR全部完成,才意味着需求评审阶段全面完成,可以进入开发设计环节。下图是一个团队设计的完整DoR例子。

图片

我们可以用这两个度量指标来牵引团队在需求评审和验收测试的效果产出:

验收测试覆盖率:评审需求中,有多少比例的需求有给出明确的验收测试用例?

需求前置缺陷数(建议数):有多少设计缺陷(建议)在需求评审中被提出,并接受(修改需求文档)?

俗话说“磨刀不误砍柴工”,澄清需求过程中多一些思考碰撞,未来构建产品质量的成本就会低很多倍。

UAT(用户验收测试)效果保障的关键

UAT该怎么做?

在行业公司的实践中,UAT通常是产品发布前的最后一道关卡,让最终用户通过验收测试,确认产品能否满足需求,同时让产研团队得到有价值的反馈,明确后面的改进方向。最终用户应该是本产品典型的真实使用者,也是合同交付的支付方(如有)。

如果我们无法引入真实的用户参与UAT,我们应该模拟用户来完成测试(小心,假扮用户并不容易)。我们需要识别不同用户的类型和角色,并在UAT中覆盖这些角色:即“角色扮演探索测试法”,思考这类用户最看重什么,会如何行动。

下面是James Bach在《HTSM-启发式测试策略模型》对UAT的定义:

图片

在很多公司,UAT的成本是非常高的,因为要引入业务方代表或者真实用户进行测试,如果收益效果达不到预期,就会怨声载道,阻碍产品交付市场的时间。

对于产研部门在国内的海外业务而言,UAT更是非常重要但耗时耗力的过程,国外UAT人员确实能发现不少海外市场独有的问题,但时差、语言、网络环境、跨国沟通和产品熟悉程度,都成为阻碍UAT的拦路虎。

从产研团队的视角,收集用户对产品的反馈方式有多种,其优缺点各不相同,如:

第一种,用研当面访谈。优点是可以直接观察用户表情和真实使用状态,感受用户的心声。缺点就是成本很高,预约一个用户的花费不菲,访谈设计和分析的专家成本很高,不可能应用于大量需求或大量用户的调研。

第二种,产品AB测试。通过一定的用户流量导入,在两种不同的界面观察用户的选择,看看那种界面转化率更高。这个方式优点是实现成本低(需要先有一个AB实验平台),结论可量化,放心。缺点是AB设计场景有限,需要设计者有一定的敏锐洞察,也无法拿到用户真实的心声描述。

第三种,产品灰度+自动反馈搜集。通过灰度放量,以及强大的反馈入口(埋点系统和APP反馈框),快速搜集大量用户的试用意见和数据。优点是成本低,技术成熟,能搜集到用户的行为大数据,避免风险事故蔓延。缺点是依然有线上风险可能,且大量反馈数据是极低价值的,处理效率低。

第四种,产品Showcase,给用户或业务代表完整演示待发布功能。优点是耗时少,反馈简单直接。缺点是组织成本略高,用户仅仅单向反馈意见,没有充分试用,容易掩盖各种问题。

和上面几种反馈方式对比,UAT的优点是能集中搜集一批真实用户的详细反馈意见,确认需求上线前无明显遗漏问题。缺点是会延长全量发布时间,组织UAT的成本高,反馈问题的含金量通常有限。

如果不能打造高效率的UAT,就难以达成产研侧和业务侧同时满意的效果。

高效UAT的组织纪律

一个可持续的高效UAT机制,重点是形成几个关键纪律:

1 选择哪些产品需求发布一定要做UAT,那些发布不用做UAT。

鼎叔的观点是:从0到1的核心产品版本,交互界面变化巨大的卖点内容,涉及客户操作流程巨大变化的需求,涉及大额资金的营销活动需求等,以及其他安全/经营高风险的需求,应该做UAT。

其他的需求发布,如日常迭代的稳定期产品需求,难以从用户视角观察到的需求,健康度监控完善的产品,不需要做UAT。

2 明确UAT通过标准。

因为UAT需要用户代表(业务方)确认通过,为了不影响发布节奏,我们要明确不通过的红线,如基本业务逻辑不通过,阻塞型缺陷,涉及舆情公关的安全/合规缺陷等。

互联网产品讲究小步快跑和试错,因此对于非红线的普通缺陷或体验问题,产品负责人应该作为是否在发布前修复的决策人。

业务方(用户代表)应该在需求讨论阶段可以就看到需求文档,并对上线功能范围进行确认,甚至有机会参与迭代版本的演示。这样可以提前反馈意见,避免到了UAT阶段再提出新需求。

3 对参与UAT人员的要求

为了提高UAT执行效率,UAT团队如果不是由最终用户组成,则应该尽量稳定,有一部分人能熟练使用产品,如果能提前阅读需求文档/操作手册更好。

UAT团队应在规定时间内反馈问题。从探索式测试的组织经验来看,把团队集中在现场,进行有奖比赛式的UAT是效率最高的。正如聊聊集体缺陷大扫除所说,计划好的验收测试用例只是底线,我们更鼓励UAT人员尽量大胆地探索产品问题。

现场应该有一位UAT组织者,负责介绍流程,维护纪律,控制时间,拉通产研和业务双方就分歧快速达成一致,缩短反馈处理周期,这样执行效率会高很多。

4 技术保障效率

考虑到UAT执行的高成本,技术侧应该在UAT执行前准备好测试环境,测试账号/数据,技术答疑指南,并提供高质量的UAT待测版本。因为这个阶段已经临近发布了,版本内部测试应该很充分了,已有端到端的质量保障。

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

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

相关文章

【3D分割】GARField: 辐射场的物体分组

题目:GARField: Group Anything with Radiance Fields 来源:UC Berkeley 和 Luma AI 项目: https://www.garfield.studio/ 文章目录 摘要一、前言二、相关工作2.1 层次分组2.2 NeRF的分割2.3 3D 特征场 三、method3.1 2D Mask 生成3.2 Scale-…

2.6两个线程实现同步代码示例

#include<myhead.h> //1、定义无名信号量 sem_t sem; //定义生产者线程 void *task1(void *arg) {int num 5;while(num--){sleep(1);printf("我生产了一辆飞机\n");//4、释放资源sem_post(&sem);}//退出线程pthread_exit(NULL); } //定义消费者线程 void …

电机粘性阻尼系数D

P31-电机粘性阻尼系数D P43-电机粘性阻尼系数D P47-电机粘性阻尼系数D

SQLite database实现加密

注意&#xff1a;以下操作以VS2022为开发工具&#xff0c;以C#为开发语言。 数据加密原因 软件在使用的各个场景&#xff0c;很多都需要数据具有保密性&#xff0c;于是对于数据库就需要加密。特别是在某些特定领域或存储敏感数据尤其如此。 SQLite加密实现 SQLite加密有两种…

CCF-B类COLT’24 2月9日截稿!春节也是创新季!学术思维不休假!

会议之眼 快讯 第37届COLT( Conference on Learning Theory)即国际学习理论大会将于 2024 年 6月30日至7月3日在加拿大埃德蒙顿隆重举行&#xff01;COLT是机器学习重要的国际会议之一&#xff0c;专注于机器学习理论方向。作为机器学习领域的重要学术盛会&#xff0c;COLT聚集…

【实训】自动运维ansible实训(网络管理与维护综合实训)

来自即将退役学长的分享&#xff0c;祝学弟学妹以后发大财&#xff01; 一 实训目的及意义 1.1 实训目的 1、熟悉自动化运维工具&#xff1a;实训旨在让学员熟悉 Ansible 这一自动化运维工具。通过实际操作&#xff0c;学员可以了解 Ansible 的基本概念、工作原理和使用方法…

树型结构构建,模糊查询,过滤

一、前言 1、最近在做甘特图&#xff0c;有些需求和树型结构要求很大&#xff0c;看的是 pingCode&#xff0c;有搜索 2、还有抽取一部分树型结构的&#xff0c;如下是抽取上面的结构类型为需求的&#xff0c;重新组成树型 二、构建多颗树型结构 1、某些业务下&#xff0c;从…

springboot与Elasticsearch版本兼容对比

首先 大家在下载 Elasticsearch 时 最好先弄清楚版本 因为 如果 Spring Boot 版本 不兼容 Elasticsearch 那就是到头一场空了 Elasticsearch 版本 6.x 可以兼容 Spring Boot 2.x Elasticsearch 版本 7.x 可以兼容 Spring Boot 2.x 3.x 4x Elasticsearch 版本 7.x 以及 8.x 可以…

基于SSM的实习管理系统(有报告)。Javaee项目。ssm项目。

演示视频&#xff1a; 基于SSM的实习管理系统&#xff08;有报告&#xff09;。Javaee项目。ssm项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系结构&#xff0c;通过Spring Spri…

安卓动态链接库文件体积优化探索实践

背景介绍 应用安装包的体积影响着用户下载量、安装时长、用户磁盘占用量等多个方面&#xff0c;据Google Play统计&#xff0c;应用体积每增加6MB&#xff0c;安装的转化率将下降1%。 安装包的体积受诸多方面影响&#xff0c;针对dex、资源文件、so文件都有不同的优化策略&…

麒麟信安战略投资湖南超能机器人技术有限公司,加速布局无人智能系统、自主可控机器人操作系统赛道

为进一步完善产业布局&#xff0c;推进战略规划稳步实施&#xff0c;近日&#xff0c;麒麟信安与湖南超能机器人技术有限公司&#xff08;简称“超能机器人”&#xff09;及其原股东签署了《增资协议》及相关配套协议&#xff0c;麒麟信安成为超能机器人股东。 战略投资超能机…

打包 iOS 的 IPA 文件

目录 摘要 引言 准备 选择证书类型 创建应用程序 设置应用程序标识和证书 配置构建设置 构建应用程序 导出IPA 签名和导出 代码案例演示 完成 总结 参考资料 摘要 本篇博客将为您介绍如何打包iOS的IPA文件。从APP提交、创建应用程序、设置应用程序标识和证书、配…

【详解】斗地主随机发牌项目

目录 前言&#xff1a; 1.初始化牌 2.洗牌 3.揭牌 总代码&#xff1a; Card类&#xff1a; CardGame类&#xff1a; Main类&#xff1a; 结语&#xff1a; 前言&#xff1a; 斗地主是全国范围内的一种桌面游戏&#xff0c;本节我们来实现一下斗地主中的简单初始化牌、…

20240202在WIN10下部署faster-whisper

20240202在WIN10下部署faster-whisper 2024/2/2 12:15 前提条件&#xff0c;可以通过技术手段上外网&#xff01;^_ 首先你要有一张NVIDIA的显卡&#xff0c;比如我用的PDD拼多多的二手GTX1080显卡。【并且极其可能是矿卡&#xff01;】800&#xffe5; 2、请正确安装好NVIDIA最…

BEV感知算法学习

BEV感知算法学习 3D目标检测系列 Mono3D(Monocular 3D Object Detection for Autonomous Driving) 流程&#xff1a; 通过在地平面上假设先验&#xff0c;在3D空间中对具有典型物理尺寸的候选边界框进行采样&#xff1b;然后我们将这些方框投影到图像平面上&#xff0c;从而避…

【Vitis】HLS高层次综合的优势

高层次综合 (HLS) 是自动设计进程&#xff0c; 利用数字系统的抽的象行为规范来生成寄存器传输级结构&#xff0c; 以实现给定行为。 使用 HLS 的典型流程包含下列步骤&#xff1a; 1. 围绕给定架构在高抽象层次使用 C/C 编写算法 2. 在行为级别验证功能 3. 使用 HLS 工具为…

(十二)springboot实战——SSE服务推送事件案例实现

前言 SSE&#xff08;Server-Sent Events&#xff0c;服务器推送事件&#xff09;是一种基于HTTP协议的服务器推送技术。它允许服务器向客户端发送异步的、无限长的数据流&#xff0c;而无需客户端不断地轮询或发起请求。这种技术可以用来实现实时通信、在线聊天、即时更新等功…

LeetCode、790. 多米诺和托米诺平铺【中等,二维DP,可转一维】

文章目录 前言LeetCode、790. 多米诺和托米诺平铺【中等&#xff0c;二维DP&#xff0c;可转一维】题目与分类思路二维解法二维转一维 资料获取 前言 博主介绍&#xff1a;✌目前全网粉丝2W&#xff0c;csdn博客专家、Java领域优质创作者&#xff0c;博客之星、阿里云平台优质…

【VSTO开发-WPS】下调试

重点2步&#xff1a; 1、注册表添加 Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\kingsoft\Office\WPP\AddinsWL] "项目名称"""2、visual studio 运行后&#xff0c;要选中附加到调试&#xff0c;并指定启动项目。 如PPT输入WPP搜…

在 CentOS 7上使用 Apache 和 mod_wsgi 部署 Django 应用的方法

简介 Django 是一个强大的 Web 框架&#xff0c;可以帮助您快速启动 Python 应用程序或网站。Django 包括一个简化的开发服务器&#xff0c;用于在本地测试代码&#xff0c;但对于任何与生产相关的事情&#xff0c;都需要一个更安全和功能强大的 Web 服务器。 在本指南中&…