测试员都是背锅侠?测试人员避“锅”攻略,拿走不谢
最近发生了一起生产事故,究其根源,事故本身属于架构或者需求层面需要规避的问题,测试人员的责任其实是非常小的,但实际情况是:相关测试人员因此承担了很大的压力,成为质量问题的“背锅侠”。
实际上,测试人员一直处于“背锅侠”的处境,今天就来聊聊,测试人员究竟背了哪些锅?
测试背的第一层锅:产品不能如期交付的锅
我们知道,产品交付排期一般是固定的,很多时候,我们在这个基础上,进行开发测试排期的倒排,而测试作为产品交付的最后一个环节,经常被严重压缩排期,场景比如:
研发未能按时提交测试版本;
研发如期交付,但功能并未开发完,或者交付质量很差。
上述两种场景非常常见,尤其是第二种场景,这时候测试人员几乎是有口难言,人家按时提交了,交付质量差也怨不得人家,但因此带来很多测试成本,原来评估的排期根本不够用。
更有甚者,虽然交付测试,但部分功能未开发完,然美其名曰“敏捷测试”,这里不是说敏捷测试不好,只不过实际过程中,敏捷测试被滥用了,因此带来很多测试人力的浪费和排期挤压。
这两种场景,带来的直接后果,就是测试排期被严重压缩,如果产品未能如期交付,第一个被拿出来的理由一定是:未完成测试。
而为了不背这个锅,测试人员只能压榨自己,逼自己如期完成。这是测试背的第一层锅:产品不能如期交付的锅,而为了如期交付,测试人员只能压榨自己,加班加点。
测试背的第二层锅:质量不符合预期的锅
在产品使用过程中,如果出现问题,第一个被问责的对象就是测试:测试人员为什么没有发现该问题?
而因为几乎大部分问题都能定性为测试案例未覆盖,所以测试经常需要背“质量不符合预期的锅”。
之所以背这顶锅,根本原因是业内人员对测试人员的职责定位有误。
大部分人认为测试的职责就是为质量负责,且是负全部责任,只要是质量问题,测试就需要承担起来。
但,请问质量是测试出来的吗?显然不是,质量是设计出来的。
一个坏透了的架构设计,注定产品质量会漏洞百出,测试无法穷尽所有场景发现所有问题。一个好的架构设计,在设计层面就规避掉了几乎所有潜在风险。
当一个产品漏洞百出时,一定是架构设计的不够合理,这时候无论怎么测试,质量都不会太好,因此,当问题出现时,不应该去问责测试为什么没有发现,而是去反思架构设计。
总结来说,很多时候,测试成了架构设计不合理的背锅侠。
当然,这个结论的前提是,这个问题的确是架构的问题。如果出问题的是核心流程,测试的确需要承担一定责任,毕竟基本功能需要确保无问题。
测试的职责是验收产品主要功能满足要求。
测试背的第三层锅:紧急出版本的锅
很多时候需要紧急出版本修复问题,这时候,测试排期几乎被严重压缩。然后,测试还要担着交付后质量无问题的责任,这两者其实是互相矛盾的存在:为了保障质量,需要充分的时间去测试,而排期被严重压缩,几乎没时间充分测试,测试人员深陷其中,苦苦挣扎。
总结来看:
一方面产品交付前,测试排期被严重挤压,测试需要加班加点去完成测试,而由于排期被压缩,测试可能无法充分展开,存在质量隐患。
另一方面,产品交付后,如果真的出现质量问题,测试又会成为第一个被问责的对象,而为了紧急修复问题,测试又需要加班加点去完成测试,而这时候测试周期往往被严重压缩,无法充分测试,进而又埋下了质量隐患。
这不是“背锅侠”是什么?
如果团队研发能力很弱,且对交付质量要求很高或者事故容忍能力很低的时候,测试面对的压力会被急速扩大,成为“超级背锅侠”。
为什么呢?因为研发能力弱,代表潜在质量问题会很多,测试复测成本非常大,且交付的产品从根上就注定了功能不稳定,导致事故频发。如果这时候产品对事故的容忍能力很低,那么后果就是测试需要频繁的被问责,以及被要求完成紧急版本的测试。这种情况下,压力被严重放大。
如果产品对质量问题的容忍度较高,那么测试人员暂且还可以承受住这个“冤屈”,而如果团队研发能力很弱,且对交付质量要求很高或者事故容忍能力很低的时候,就需要考虑“伸冤”了。
如何伸冤
列举几条:
摆正测试人员的职责范围,质量是设计出来的,不好的设计一定会存在很多质量隐患,不要上来就问责测试。
基于当前的研发能力,对未来事故的发生频率给予合理的预期,尤其在上面描述的场景下,这时候,如果还要做大型架构设计改造,那么未来一定会出现各种质量问题,需要对质量问题有足够的容忍度,提供宽松的空间让大家去踩坑,只有这样才是最为人性的处理。
放缓产品交付节奏,缩小产品影响范围,逐步交付,降低事故发生频率。
最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:
这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取
相关文章:
测试员都是背锅侠?测试人员避“锅”攻略,拿走不谢
最近发生了一起生产事故,究其根源,事故本身属于架构或者需求层面需要规避的问题,测试人员的责任其实是非常小的,但实际情况是:相关测试人员因此承担了很大的压力,成为质量问题的“背锅侠”。 实际上&#…...
C++: C++模板<template>
C template content😊前言😁模板💕1、泛型编程😍2、函数模板😒2.1:函数模板概念👌2.2:函数模板的格式😘2.3:函数模板原理😁2.4:函数模…...
chmod命令详解
用法:chmod [选项]… 模式[,模式]… 文件… 或:chmod [选项]… 八进制模式 文件… 或:chmod [选项]… --reference参考文件 文件… Change the mode of each FILE to MODE. With --reference, change the mode of each FILE to that of R…...
状态机设计中的关键技术
⭐本专栏针对FPGA进行入门学习,从数电中常见的逻辑代数讲起,结合Verilog HDL语言学习与仿真,主要对组合逻辑电路与时序逻辑电路进行分析与设计,对状态机FSM进行剖析与建模。 🔥文章和代码已归档至【Github仓库…...
单片机开发---ESP32S3移植NES模拟器(二)
书接上文 《单片机开发—ESP32-S3模块上手》 《单片机开发—ESP32S3移植lvgl触摸屏》 《单片机开发—ESP32S3移植NES模拟器(一)》 暖场视频,小时候称这个为—超级曲线射门!!!!!&am…...
微信小程序nodej‘s+vue警局便民服务管理系统
本文首先介绍了设计的背景与研究目的,其次介绍系统相关技术,重点叙述了系统功能分析以及详细设计,最后总结了系统的开发心得在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括“最多跑一次”微信小程序的网络应用,在外国小程序的使用已经是很普遍的方…...
第18章 MongoDB $type 操作符教程
MongoDB $type 操作符 描述 在本章节中,咱们将继续讨论MongoDB中条件操作符 $type。 $type操作符是基于BSON类型来检索集合中匹配的数据类型,并return 结果。 MongoDB 中可以使用的类型如下表所示: 类型数字备注Double1 String2 Object3…...
【MySQL主从复制】快速配置
本文配置环境Windows和Linux。 windows主 Linux 从 一、主库配置 首先保证Linux和防火墙开启3306端口或关闭防火墙。 登录Mysql管理员账户: GRANT REPLICATION slave,reload,super ON *.* TO root@从库ip地址 IDENtIFIED BY root; flush privileges; 本地的mysql可以被:…...
Typescript - interface 关键字(通俗易懂的详细教程)
前言 简单来说,Interface 就是一种描述对象或函数的东西。 您可以把 interface 理解为形状,真实开发情况下,一个对象需要有什么样的属性,函数需要什么参数或返回什么样的值,数组应该是什么样子的,一个类和继…...
【计组】内存和总线
课程链接:深入浅出计算机组成原理_组成原理_计算机基础-极客时间 一、虚拟内存和内存保护 日常使用的操作系统下,程序不能直接访问物理内存。内存需要被分成固定大小的页(Page),再通过虚拟内存地址(Virtu…...
CUDA中的数学方法
CUDA中的数学方法 文章目录CUDA中的数学方法1. Standard FunctionsSingle-Precision Floating-Point FunctionsDouble-Precision Floating-Point Functions2. Intrinsic FunctionsSingle-Precision Floating-Point FunctionsDouble-Precision Floating-Point Functions参考手册…...
Elasticsearch基本概念和索引原理
一、Elasticsearch是什么? Elasticsearch是一个基于文档的NoSQL数据库,是一个分布式、RESTful风格的搜索和数据分析引擎,同时也是Elastic Stack的核心,集中存储数据。Elasticsearch、Logstash、Kibana经常被用作日志分析系统&…...
《NFL橄榄球》:堪萨斯城酋长·橄榄1号位
堪萨斯城酋长队(Kansas City Chiefs)是位于密苏里州堪萨斯城的职业美式橄榄球队;目前在全国橄榄球联盟隶属于美国橄榄球联合会(AFC)西区;其夏季训练营在威斯康星大学河瀑校区举行。 酋长队的前身是达拉斯得州佬队,这支…...
python+django在线教学网上授课系统vue
随着科技的进步,互联网已经开始慢慢渗透到我们的生活和学习中,并且在各个领域占据着越来越重要的部分,很多传统的行业都将面临着巨大的挑战,包括学习也不例外。现在学习竞争越来越激烈,人才的需求量越来越大࿰…...
二叉搜索树之AVL树
AVL树的概念二叉搜索树虽可以缩短查找的效率,但如果数据有序或接近有序二叉搜索树将退化为单支树,查找元素相当于在顺序表中搜索元素,效率低下。因此,两位俄罗斯的数学家G.M.Adelson-Velskii和E.M.Landis在1962年 发明了一种解决上…...
全栈自动化测试技术笔记(二):准备工作的切入点
自动化测试技术笔记(二):准备工作的切入点 上篇整理的技术笔记,聊了自动化测试的前期调研工作如何开展,最后一部分也提到了工作的优先级区分。 这篇文章,接上篇文章的内容,来聊聊自动化测试前期的准备工作࿰…...
57 长短期记忆网络(LSTM)【动手学深度学习v2】
57 长短期记忆网络(LSTM)【动手学深度学习v2】 深度学习学习笔记 学习视频:https://www.bilibili.com/video/BV1JU4y1H7PC/?spm_id_fromautoNext&vd_source75dce036dc8244310435eaf03de4e330 长短期记忆网络(LSTM)…...
算法第十五期——动态规划(DP)之各种背包问题
目录 0、背包问题分类 1、 0/1背包简化版 【代码】 2、0/ 1背包的方案数 【思路】 【做法】 【代码】 空间优化1:交替滚动 空间优化2:自我滚动 3、完全背包 【思路】 【代码】 4、分组背包 核心代码 5、多重背包 多重背包解题思路1:转化…...
实现复选框全选和全不选的切换
今天,复看了一下JS的菜鸟教程,发现评论里面都是精华呀!! 看到函数这一节,发现就复选框的全选和全不选功能展开了讨论。我感觉挺有意思的,尝试实现了一下。 1. 全选、全不选,两个按钮ÿ…...
React hooks之useState用法(一)
系列文章目录 学习React已经有很长的一段时间了,今天决定重新回顾一下跟React相关的一些知识点 文章目录系列文章目录结构如下一、hooks是什么?useState可以能做什么二、如何使用useState()第一步:创建【函数组件&…...
spring的简单理解
目录 1 .ioc容器(控制反转) 2. Aop面向切面编程 3. 事务申明 4. 注解的方式启动 5. spring是什么与他的优势 6. 代理设计模式(比如aop) 7. springmvc中相应json数据 8. 使用lombok来进行对代码的简化 9. 使用logback记录…...
Docker调用Intel集显实现FFmpeg硬解码
文章目录Docker调用Intel集显实现FFmpeg硬解码参考FFmpeg 集成qsv方式一 容器完成所有步骤方式二 容器完成部分步骤方式三 dockerfile部署Docker调用Intel集显实现FFmpeg硬解码 参考 ffmpeg_qsv_docker拉取该镜像可以实现FFmpeg集成vaapi的硬加速,通过dockerfile文…...
端到端模型(end-to-end)与非端到端模型
一、端到端(end to end) 从输入端到输出端会得到一个预测结果,将预测结果和真实结果进行比较得到误差,将误差反向传播到网络的各个层之中,调整网络的权重和参数直到模型收敛或者达到预期的效果为止,中间所…...
uniApp封装一个滑块组件
最近 项目中有一个需求 PC端动态设计的表单 移动端要能渲染出来 那么 就要去找到对应的组件 而其中 没有的 就包括滑块 没有又能怎么办 只能自己封装一个 我们直接上代码 <template><view class"u-slider" tap"onClick" :class"[disabled…...
运动基元(二):贝塞尔曲线
贝塞尔曲线是我第一个深入接触并使用于路径规划的运动基元。N阶贝塞尔曲线具有很多优良的特性,例如端点性、N阶可导性、对称性、曲率连续性、凸包性、几何不变性、仿射不变性以及变差缩减性。本章主要介绍贝塞尔曲线用于运动基元时几个特别有用的特性。 一、贝塞尔曲线的定义 …...
Android 11.0 关于Launcher3中调用截图功能总是返回null的解决方案
1.1概述 在11.0的系统产品开发中,在某些时候需要调用截图接口来进行截屏功能实现,而在Launcher3中发现调用系统截屏接口SurfaceControl.screenshot进行截图的时候始终为null, 获取不到系统当前页面的截屏功能,所以需要找到当前截屏失败的原因然后来实现截屏功能的实现,下面来…...
random随机数
random随机数 1.概述 random用来生成一些随机数,下面介绍random模块提供的方法根据需求生成不同的随机数。 2.random常用操作 2.1.random默认随机数 random()函数返回一个随机的浮点值,默认返回值范围在0 < n < 1.0区间 import randomfor i …...
【金三银四系列】Spring面试题-上(2023版)
Spring面试专题 1.Spring应该很熟悉吧?来介绍下你的Spring的理解 有些同学可能会抢答,不熟悉!!! 好了,不开玩笑,面对这个问题我们应该怎么来回答呢?我们给大家梳理这个几个维度来回答 1.1 Spring的发展历程 先介绍…...
linux基本功系列之tar命令实战
文章目录前言一. tar命令介绍二. 语法格式及常用选项三. 参考案例3.1 仅打包不压缩3.2 打包后使用调用压缩命令进行压缩3.3 列出文件的内容3.4 追加文件到tar命令中3.5 释放文件到指定的目录四 . 各种压缩方式的比较总结前言 大家好,又见面了,我是沐风晓…...
Prometheus服务发现
Prometheus服务发现介绍 Prometheus默认是采用pull的方式拉取监控数据的,每一个被抓取的目标都要暴露一个HTTP接口,prometheus通过这个接口来获取相应的指标数据,这种方式需要由prometheus-server决定采集的目标服务器有哪些,通过…...
网站建设中什么意思/网页设计代做
函数式接口(FunctionalInterface) 只声明了一个抽象方法的接口称为函数式接口可以在接口上添加注解(FunctionalInterface)来判断此接口是否为函数式接口 /*** Java内置的4大核心函数式接口* 消费型接口:Consumer<…...
建设020网站需要多少钱/无锡seo关键词排名
转:http://windshg.iteye.com/blog/1606981...
网站没有收录怎么办/百度推广登陆网址
难易程度:★★ 重要性:★★★★★ 树结构是面试中的考察的重点,而树的遍历又是树结构的基础。 //先序遍历,递归版本 public static ArrayList<Integer> preOrder(TreeNode root) {ArrayList<Integer> res new ArrayL…...
中国建设教育网站/百度权重3的网站值多少
前几天群里有人问我为什么直接操作数据库发布文章,插入成功了,却显示不出来。当时在外面玩儿,没法帮他,今天还没解决这个问题,抽点时间帮他一把。 WordPress的文章存在与wp_posts数据表中,里面有很多字段&…...
湖州建设局投标网站/国外网站seo
从乙方到甲方,我在做什么 最近,总有朋友在问,从一座熟悉的城市到陌生的环境,从乙方到甲方,这个转换挺大的,会不会有挫败感,你平时工作内容主要是哪些? 答:还好吧&#…...
镇网站建设管理工作总结/郑州网站营销推广公司
async/await Task Timeout 在日常的电脑使用过程中,估计最难以忍受的就是软件界面“卡住”“无响应”,在我有限的开发生涯中一直都是在挑战 它。在WPF中,主线程即UI线程,当我们在UI线程中执行一个很耗时的操作,以至于UI线程没能继…...