用例评审的正确姿势,2个要点不容忽视

news2024/9/21 12:23:46

,点击蓝字👆 关注Agilean,获取一手干货

导语

用例评审的作用已经不言而喻,但是在很多组织的实际落地过程中,却收效甚微。研发管理人员常常会发现即使做了用例评审,一些显而易见的问题还是会出现:缺陷逃逸、开发未适配、测试漏测等。

为什么会这样呢?问题大概率出在了用例评审过程中。

笔者在经历过众多用例评审实践后,发现实际评审中常常遭到忽视的两个要素。基于此,尝试以新的视角,为读者们提供用例评审的优化新思路。

在软件研发过程中,用例评审是一个常见的实践活动,实践的形式也多种多样,比如:

  • 同行评审:测试内部的同行评审,由更熟悉资深的测试人员评审新手测试人员;

  • 管理者评审:只有开发对测试用例进行的评审,由开发小队长评审小队内测试人员的测试用例是否符合标准;

  • 业务评审:只有产品经理对测试用例进行的评审,目的是评审用例是否覆盖了需求所描述的所有业务功能;

   ......

出于不同的目的而进行的不同的评审方式各有其适用场景。

本文讲述的用例评审是指:由测试人员主导开展,开发人员、产品经理共同参与的用例评审会议。其他形式的用例评审不在本文讨论范围内。

这种形式的用例评审,主要是为了帮助产品经理、开发、测试三方对齐需求,达成的一致理解。从而消减缺陷在测试环节缺陷逃逸的隐患,避免测试的遗漏、返工与产能浪费。最终达到保障产品质量、提升研发交付效率的目标。

你还在这样做用例评审吗?

以下是一个常见的用例评审过程:

迭代开始的第四天,测试负责人人员小张提前会议邀约测试、产品、开发人员进行用例评审会议。

会议期间,小张熟练的打开脑图,对着自己负责的用户故事,逐字念着用例描述。在念完一个故事的用例中途,询问开发、产品对此需求的用例是否有建议和补充。

参会的产品、开发按部就班回答有或者没有,或在中途发现有疑问的时候发言提问。

小张发言完毕后,接着下一位测试人员对着他负责的用户故事进行发言。

整个过程就这样持续下去,直到过完所有用户故事的测试用例。

这样一个用例评审过程,事实上有很多可以改善的点,例如:

  • 应该提前将评审材料发给参会人员,便于参会人员提前熟悉材料;

  • 注意评审时长,如果用例众多,建议拆分多次评审,每次评审时间尽量不超过1小时;

  • 指定评审过程记录员,便于讲解过程顺畅,问题记录没有遗漏;

  • 测试内部预先评审,避免一些明显问题带到评审会,影响评审效率;

  • 统一规范用例格式标准,便于评审

……

除了以上谈及的常规注意点,在我们实际咨询辅导的过程中发现,以下两点也是影响用例评审效果的重要因素。

用例评审需要聚焦到恰当的靶子上

  围绕「测试设计思路」开展

测试用例是为执行软件系统测试而设计和编写出的一组文档,主要内容包括用例标题、前置条件、测试步骤、预期结果等。

其初衷是用于指导测试人员执行测试,因此包含了很多系统层面的操作细节,一个复杂的需求的测试用例规模有些情况下可达上百个。

拿着这些测试用例的细节去做评审,一方面会造成评审陷于的系统操作层面细枝末节,容易失去对原始需求的业务场景关注。

另一方面如果测试人员主持不好评审过程的话,评审者需要在一堆测试用例的细节中,耗费精力猜想测试人员的用例设计意图,这样往往就把评审者拒之门外了。

db72f3bee0450a15bc0167942dc07472.png

举个例子,我们将「客户投诉流程」这个业务需求以脑图的形式,编写了测试用例部分片段(如下图所示)。

d085422b9dac7cbce8e9aabc4afbd498.png

不难看出,左右两边是两种编写策略,适用于不同的阅读对象。

左侧的编写与呈现纯粹是适用于测试内部的,充满了各种执行步骤与实施细节。

想象一下,评审者要从这些信息中了解测试人员的测试设计意图不亚于做一篇阅读理解。何况,在有些情况下,产品经理和开发人员对一些系统的操作流程并不熟悉,就更看不懂了。

反之,右侧的用例呈现,则以用户场景为切入口,将测试用例组织起来。

测试场景通常都是用户逻辑的语言,开发、产品经理都熟悉,容易理解。这样一来,参与用例评审的不同角色都能迅速了解测试用例的意图。

在测试场景这一层把测试人员的测试设计意图展现给评审者看,这样的方式要比左侧的方式更为直观,用例评审活动也能更为高效地进行。

0007eeccbf21ada215f855f9e8896f5a.png

看到这里,可能测试同学要有意见了——“这不是增加工作量吗?有时候测试用例都没时间写,还要写测试场景?”

其实不然,作为测试人员,其工作流程中,本来就会先进行需求分析——从需求描述的相关业务场景出发提取相关的测试要点,再进一步细化为测试用例。只是有时候并没有把这个思考的过程写出来,而是记在脑子里。

笔者认为,「从分析需求业务场景到提取测试要点」是非常关键的过程,需要记录下来,以防止测试人员遗漏了重要的测试要点内容。在时间不充裕的情况下,测试用例的实施细节反而是次要的。

当然这里并不是说测试用例就不需要写了。测试用例还是需要的,特别是在大型组织中,测试用例可以帮助更好的评估测试的工作,沉淀测试用例资产用于回归测试,可预见的测试执行进度,避免人员变动情况下测试工作无法衔接等问题。

测试设计思路的表现形式并不只有上图这一种方式,流程图、判定表都是可取的。使用这些方式是为了便于评审者快速理解测试人员的测试设计思路,促进团队中不同角色成员对需求的一致理解,从而提高研发的质量。

开展用例评审的合适时间点

  开始需求的开发编码工作到未完成开发之间

如果经常遇到在用例评审会上开发基本都没有什么反馈,但是在需求测试阶段又发现开发移交的需求内容有很多和测试理解的不一致,那么测试人员就需要思考一下了——为什么用例评审会没有起作用?

除了上面提到的评审对象以外,评审开展的时间点也是一个影响因素。

迭代中一个开发人员可能负责多个系统功能的开发,开发人员会优先开始高优先级的任务。大致会经历需求分析、阅读现有代码、进行开发设计和编码,这样一个过程。

随着需求研发的推进,开发人员对系统功能的实现也越明确,对需求内容及代码改动可能影响的范围理解也更深刻。这显然需要时间。

如果在开发人员开始需求分析之前我们进行用例评审会怎么样?

开发人员对需求的印象可能还停留在前几天的需求评审,甚至记不清需求的内容。这种情况下,进行用例评审,很难想象能够给出有用的反馈。

因此,用例评审不能太早开始。

那如果在开发人员已经完成编码,移交需求给测试人员之后,才进行用例评审会怎么样?

这时候开发人员可能已经开始下一个系统功能的开发任务了,虽然还记得上一个系统功能的需求内容,但是编码工作已经完成了。如果此时评审发现之前对需求的理解存在偏差,就得返工了。虽然这时评审也起到了对齐需求的作用,但是太晚了,开发编码、返工的成本大。

所以对一个需求来说,用例评审的最佳时间是在开发已经着手开始工作,到需求移交测试这段时间,最晚在需求移交测试之前就要完成需求的用例评审。

fe4a63d69db60e04d3bae37e47c2c382.png

在实际操作过程中,常见的是一个迭代中只做一次集中的用例评审,这就往往会导致很多用例太晚评审,效果不佳。

然而,要对每个需求都单独做一次用例评审也很难落地。因为协调成本会很高:不好约时间、不好约会议地点......

所以,较为可行的方式是分批次做用例评审。

因为迭代过程中开发人员也是分批次移交需求给测试的,所以可以顺势对待移交测试的这批次需求做需求评审。一个迭代内通常2-3个批次,是一个比较可接受的频次。

小结

以上两点是在实际开展用例评审过程中,比较容易被忽视的因素。如果能在实践过程中多加注意,会对团队开展用例评审对效果带来明显的改善。

当然,影响用例评审的高效开展有很多因素。

从质量保障角度来说,确保迭代过程中各项质量活动的高效开展是保证产品质量的一大内容。

因此,研发团队可以定期回顾迭代过程中各活动的执行效果,努力探索顺畅、高效的开展方式,保证活动的开展质量。逐步发挥对研发效率和质量的积极影响。


本文作者|周小宁  

Agilean高级技术顾问

5c7e2121ca837e4cc4c4d091c285a8ea.jpeg

Agilean 最新直播资讯:

  •  05.11 本周四晚 20:30 「产品创新,AI时代下的变与不变」

  •  05.18 下周四晚 19:30 「研发效能数据治理」

感兴趣的伙伴们快快约起来吧!👇👇👇


分享👇 收藏👇                     点赞👇在看👇

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

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

相关文章

ECharts折线图堆叠和不堆叠的问题

今天配合后台联调数据的时候遇到一种情况 第三条数据为0时候并没有在y轴为0上,而是跟上一条线重合了 ECharts折线图是堆叠的,折线图堆叠的意思就是:第二条线的数值本身的数值第一条线的数值,第三条的数值第二条线图上的数值本身的…

手撕三子棋

代码思路: 1.多文件的使用(test.c game.c game.h) 2.宏定义的使用 3.打印菜单 4.创建二维数组 5.初始化数组 6.打印棋盘 7.玩家下棋 8.电脑下棋 9.判断输赢 10.代码全析总结 (1)多文件的使用:…

MySQL 关于缓存的 “杂七杂八”

开头还是介绍一下群,如果感兴趣polardb ,mongodb ,mysql ,postgresql ,redis 等有问题,有需求都可以加群群内有各大数据库行业大咖,CTO,可以解决你的问题。加群请联系 liuaustin3 ,在新加的朋友会分到2群(共…

中心极限定理模拟

中心极限定理模拟 文章目录 中心极限定理模拟 [toc] 设服从均值为 μ \mu μ、方差为 σ 2 < ∞ \sigma^2<\infty σ2<∞的任意一个总体&#xff0c;抽取样本量为 n n n的样本&#xff0c;当 n → ∞ n\to\infty n→∞&#xff0c;样本均值 X ˉ \bar{X} Xˉ的抽样分布…

云原生之使用Docker部署webos私有云盘

云原生之使用Docker部署webos私有云盘 一、webos介绍1. webos简介2. webos特点 二、本次实践介绍1. 本次实践简介2. 本次部署环境规划 三、检查本地Docker环境1. 检查Docker版本2. 检查Docker服务状态 四、下载webos镜像五、部署webos1. 创建挂载目录2. 创建webos容器3. 查看we…

光栅化过程 (顶点片元着色)

片元为什么是三角形&#xff1a; 1 三角形是最基本的多边形&#xff1b; 2 任何多边形都可以拆分成三角形&#xff1b; 3 空间内任何三个点的连线一定是平面&#xff1b; 4 三角形有清晰的内部和外部定义&#xff1b; 5 三角形只要定义顶点的属性就可以计算三角形内部点的渐变关…

mac iterm2设置rz sz文件传输

1、安装lrzsz $ brew install lrzsz 2、创建并设置iterm2-send-zmodem.sh sudo vim /usr/local/bin/iterm2-send-zmodem.sh # /usr/local/bin/iterm2-send-zmodem.sh#!/bin/bash # Author: Matt Mastracci (matthewmastracci.com) # AppleScript from http://stackoverflow.com…

【云原生】使用外网Rancher2.5.12搭建阿里云内网K8s 1.20集群

目录 一、目标二、解决方案三、草图四、版本信息五、资源规划六、必要条件七、开始部署1、安装Docker2、安装Rancher3、解析Rancher Server URL域名4、创建K8s集群5、注册K8s集群节点 八、验证 一、目标 在云平台搭建一套高可用的K8s集群 二、解决方案 第一种&#xff1a;使…

创客匠人产品怎么样?

创客匠人产品经过多年的更新与送代&#xff0c;现如今应用范畴已经逐渐完善&#xff0c;客户群体也越来越来越广泛。虽然有很多人都有听说过创客匠人&#xff0c;但是对于创客匠人的功能和性质可能并不是得分的了解&#xff0c;为了便于大家选择&#xff0c;下面就由小编我为大…

谈谈几种分布式锁实现

大家好&#xff0c;我是易安&#xff01;今天我们呢谈一谈常见的分布式锁的几种实现方式。 什么是分布式锁 在JVM中&#xff0c;在多线程并发的情况下&#xff0c;我们可以使用同步锁或Lock锁&#xff0c;保证在同一时间内&#xff0c;只能有一个线程修改共享变量或执行代码块…

Linux监听器 -- inotify

inotify作为Linux系统的一个监听器&#xff0c;能够监听文件或者目录的变化。 inotify接口 inotify的接口主要有三个&#xff0c;分别是inotify_init、inotify_add_watch 和 inotify_rm_watch。下面分别进行详细介绍。 inotify_init 函数用于创建inotify句柄&#xff0c;函数…

一图看懂 pytz 模块:现代以及历史版本的世界时区定义数据库,资料整理+笔记(大全)

本文由 大侠(AhcaoZhu)原创&#xff0c;转载请声明。 链接: https://blog.csdn.net/Ahcao2008 一图看懂 pytz 模块&#xff1a;现代以及历史版本的世界时区定义&#xff0c;将时区数据库引入 Python&#xff0c;资料整理笔记&#xff08;大全&#xff09; &#x1f9ca;摘要&am…

算法小课堂(七)字符串

一、概念 1.1相关概念 0C中有两种字符串表示形式&#xff1a;C风格字符串和string类类型。 C风格字符串是 字符数组使用null字符\0终止的一维字符数组&#xff0c;字符指针是一个指针变量&#xff0c;里面存放一个字符的地址 而string类处理起字符串来会方便很多&#xff0c;完…

Golang中的数组和切片

目录 数组 基础知识 声明并初始化一个数组 遍历一个数组 切片 基础知识 声明并初始化一个切片 向切片中添加元素 切片的遍历和切片表达式 数组和切片的区别 数组 基础知识 数组是一种由固定长度的特定类型元素组成的序列&#xff0c;元素可以是任何数据类型&#x…

数组——知识点大全(简洁,含使用演示和代码)

目录 一.一维数组的创建 1.数组的基本形式 2.变长数组 3.数组的初始化 二.数组的本质 三.一维数组的使用 1.访问数组成员 2.计算数组的大小 四.一维数组在内存中的存储 五.二维数组 1.二维数组的形式 2.二维数组的初始化规则 六.二维数组的使用 1.打印二维数组 …

Linux下新加新磁盘分区及挂载

一&#xff1a;新插入磁盘查看 查看插入磁盘 法1&#xff1a;$sudo fdisk -l 法2&#xff1a; $sudo lsblk 二&#xff1a;磁盘分区及格式化 1: 分区 $sudo fdisk /dev/nvme0n1 进入分区工具后&#xff0c;我们可以输入 m 看指令说明&#xff1a; Command (m for help): …

前端框架比较:Vue.js、React、AngularJS三者的优缺点和应用场景

章节一&#xff1a;引言 在当前的互联网开发中&#xff0c;前端框架已经成为了不可或缺的一部分。然而&#xff0c;前端框架如此之多&#xff0c;该如何选择呢&#xff1f;Vue.js、React和AngularJS是目前比较受欢迎的三个前端框架&#xff0c;它们各自有着不同的优缺点和应用…

MySQL笔记(三) 联结、组合查询、全文本搜索、视图、索引、触发器、事务

文章目录 联结关系表为什么要使用联结维护引用完整性 内部联结联结多个表创建高级联结使用表别名 自联接自然联结外部联结 OUTER JOIN外部联结的类型 使用带聚集函数的联结要点 组合查询 UNION创建规则注意 全文本搜索查询拓展布尔文本搜索总结 视图为什么使用视图视图的规则和…

虚拟机与主机互传文件方法分享

现在虚拟机的使用已经非常普及&#xff0c;无论新手学习&#xff0c;还是运维工程师搭建虚拟化平台&#xff0c;都会使用到虚拟机。对个人用户来说&#xff0c;非常方便就能搭建很多操作系统进行学习&#xff1b;对企业用户来说更是降低了服务器的硬件成本。 使用虚拟机的时候…

本周日直播,全链路数据治理实践论坛开放报名

5月14日&#xff0c;09:00-12:00&#xff0c;由阿里云资深技术专家温绍锦老师出品的 DataFun Summit 2023&#xff1a;数据治理在线峰会-全链路数据治理论坛&#xff0c;将邀请来自阿里、Aloudata大应科技、爱奇艺的4位专家就相关主题进行深度分享&#xff0c; 出品人&#xff…