测试员拒绝当“背锅侠”,软件质量不是“测”出来的!

news2025/1/11 9:59:14

以前有个朋友跟我说:做测试这行就是在隐忍中负重前行。因为测试是软件发布前的最后一个环节,被称作质量出口儿,测试环节之前所有未做好的工作所带来的不良后果,似乎都能被轻松甩锅给测试人员。软件一旦出现问题,我们经常听到有人红口白牙地直接定性说是测试人员把关没把好;测试能力不行...。

我想说的是技术能力固然是第一要位,但不是唯一要位。如果一个公司上层领导认为软件质量就是通过测试工作来保障的,那基本可以断言,这个公司的软件质量很差,即使其测试团队的“把关”本领有多强,技术能力多高超也一样,因为软件的高质量并不是“测”出来的。

橘VS枳

《晏子春秋》有曰“橘生淮南则为橘,生于淮北则为枳”。意思是说同一个物种因环境条件不同而会发生变异。其实不只是橘子,我们平时所测试的代码也是如此啊。工作中我们难免遇到这种情形:在经历测试-修改-复测-再改...数个回合之后,测试人员呕心沥血,通宵达旦终于配合发布完一版软件,结果第二天用户反馈业务数据计算出错,业务流程报错等。于是熟悉的声音响起:“测试连这么简单的bug都没测出来?...”显然,测试人员的能力又遭到了严重质疑。

此时的测试同学往往一脸震惊,不禁自言自语:“明明已经测过无数次的场景了,怎么突然出错了呢?”这种时候公司紧急修复,快速补丁发布,然后迫于时间紧、任务重,大家继续马不停蹄地投入到下一个迭代中。测试同学虽深感不解和疑惑,但也无力自证清白,只能更加细致认真开启下一版测试。结果不久之后,后续版本还是出现这种“诡异”现象,于是质疑声再起,紧接着又是紧急补丁灭之,如此循环往复。到底是怎么回事呢?

有一次我们遇到了同样奇幻的问题,后来调查发现测试环境和正式环境的数据库配置、数据库版本竟然都不一致,而且业务数据差异非常大!两套运行环境差异如此之大,虽然是同一套代码,但很容易出现各种问题。这就是奇幻之处。测试人员品尝通过的“橘”,到实际用户那里已经变成了“枳”。

既然已经不是同一样东西了,怎么能质疑“口味”不同呢?除了环境、数据的差异,正式发布前代码是否做了封版,代码基线是否规范,业务所依赖的服务是否一致,业务流程是否都是真实全流程验证(例如支付业务)等等,这些都是直接影响上线后软件质量的重要因素。而这些,并不“测”能保障的了的。

支点VS体系

作为一个测试经理,每次听到上司语重心长地说对我说“质量这块儿就交给你们测试部门了,一定要好好测”这类话语,我就有点哭笑不得。质量的重担让测试一肩挑,是不是有点偷换概念了?测试工作做的再出色,也只是软件整体质量把控的其中一个支点而已。测试的职责是检验质量,并不是保证质量呀。

对这两个概念的混淆,可能也是大多数测试同学在工作中各种有苦说不出的原因所在吧。毕竟流转到测试手里的如果是一堆垃圾代码,大bug套小bug,改一个bug带出十个新bug,低能bug环环相扣,生生不息,那测试的专业技能也毫无用武之地啊。况且,即便开发和测试技术水平非常优秀,质量也绝对不是靠一个支点来支撑的。软件每一道工序的完成水平都决定着软件最后的输出质量,每一个环节都存在一定的质量风险,因此质量保证应该是多支点并存,各支点相互作用的。确切地说,它应该是一套多维立体的支撑体系。

首先,定规范。无规矩不能方圆。我之前工作中遇到过很多次测试环境跟正式环境代码不一致导致的各种问题,几番彻查之后发现是代码分支管理不规范造成的。从最初的架构设计、数据库设计,到编码、联调、提测、测试执行,再到正式部署等,软件各个流程节点都必须制定有明确的规范才行。每一个环节的规范操作都是质量的一个有力支撑点。当然,制定了相关规范后,各节点的人员必须严格遵守,把质量意识刻在脑子里,并将个人对质量的追求体现到具体行动中。如此,软件才获得了齐全的质量支点。

其次,优流程。有了各个环节的质量支撑,软件的高质量还离不开一套完整清晰、合理高效的线上研发流程,明确精细地设置好作业单在不同应用场景下的流转和不同角色人员的操作权限等。我很早之前就职的一家公司,当时终版代码包、配置文件等的交付这个环节都是按团队平时线下约定俗成的习惯去进行。

通常情况下,软件发布之前运维人员需要找测试人员确认,但有一次运维跟测试确认之后,开发人员临时起意改了几行代码,因为过于自信,便在未通知测试的情况下将要部署的代码包传给了运维。运维同学也没有找测试再确认就直接发布了,导致系统崩溃,产生了严重的发布事故。虽然只是很简单的一个确认行为,但开发盲目自信,运维麻痹大意,测试无辜躺枪。如果有一套明确的线上操作和审批流程,大家依流程各司其职,相信这种事故是完全可以避免的。

最后,设专岗。既然质量贯穿于整个研发流程,那就不能简单地把测试人员当成质量管控人员,毕竟术业有专攻,测试精力又有限;更不能将质量管控的大任交给项目经理、技术经理甚至技术总监来兼职,因为太容易“掩耳盗铃”,以至于根本达不到质量管控的目的。真正有质量意识的软件公司会专门设置独立的质量管理部门。他们的工作游离于各个研发项目、部门之间,且话语权在各项目或部门之上,根据实际情况不断优化研发流程,监督落实各项规范要求,从而提升软件的整体质量。

最后:

可以到我的个人号:atstudy-js,可以免费领取一份10G软件测试工程师面试宝典文档资料。以及相对应的视频学习教程免费分享!其中包括了有基础知识、Linux必备、Mysql数据库、抓包工具、接口测试工具、测试进阶-Python编程、Web自动化测试、APP自动化测试、接口自动化测试、测试持续集成、测试架构开发测试框架、性能测试等。

这些测试资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!

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

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

相关文章

django疫情防控常态化下疫情物资管理可视化系统-计算机毕设 附源码73893

django疫情防控常态化下疫情物资管理可视化系统 摘 要 信息化社会内需要与之针对性的信息获取途径,但是途径的扩展基本上为人们所努力的方向,由于站在的角度存在偏差,人们经常能够获得不同类型信息,这也是技术最为难以攻克的课题。…

YOLOv5改进系列(13)——更换激活函数之SiLU,ReLU,ELU,Hardswish,Mish,Softplus,AconC系列等

【YOLOv5改进系列】前期回顾: YOLOv5改进系列(0)——重要性能指标与训练结果评价及分析 YOLOv5改进系列(1)——添加SE注意力机制

javaWeb中的Ajax_待后期增加

前言: Ajax是一种在JavaWeb开发中常用的技术,通过它可以实现异步通信和动态加载数据,提升用户体验。 正文: 首先我们得明白异步通信,客户端发出请求后可以继续执行其他操作 由于原生的Ajax过于复杂 so: …

FastDFS【SpringBoot操作FastDFS、复习】(三)-全面详解(学习总结---从入门到深化)

目录 SpringBoot操作FastDFS 复习: SpringBoot操作FastDFS 由GitHub大牛tobato在原作者YuQing与yuqih发布的JAVA客户端基 础上进行了大量重构工作,并于GitHub上发布了FastDFS-Client1.26.5。 主要特性 1 对关键部分代码加入了单元测试,便于…

leetcode 21.合并两个有序链表

⭐️ 往期相关文章 💫链接1:链表中倒数第k个结点(快慢指针问题) 💫链接2:leetcode 876.链表的中间结点(快慢指针问题) 💫链接3:leetcode 206.反转链表 💫链接4:leetcode 203.移除链…

蓝牙Beacon+Loa网关推出人员隔离监管解决方案

三年新冠已经过去,以空间换时间的防疫策略让疑似、确诊、有接触史人员得以有效控制,其中居家隔离的防疫措施对新冠的防控是行之有效的。 不过,在“画地为牢”的隔离区也有些需隔离观察人员私自外出,对防疫工作带来相当程度上的影…

数据库性能测试报告总结模板

目录 1计划概述 2参考资料 3术语解释 4系统简介 5测试环境 6测试指标 7测试工具和测试策略 8测试数据收集 9测试结果数据以及截图 9.1Jmeter性能指标 9.2硬件指标图 10 测试结论 需要完整报告模板记得文章末尾找我哦。 1计划概述 目的:找出系统潜在的…

Android Studio中配置aliyun maven库

Android Studio中配置aliyun maven库 在项目的根build.gradle里面(不是module)buildscriptde对应位置添加配置: buildscript {repositories {maven {url http://maven.aliyun.com/nexus/content/groups/public/allowInsecureProtocol true…

深入了解gradio库的Interpretation模块

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️ 👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

解码大数据时代的信息安全:低代码开发平台的先锋之道

前言 随着大数据时代的到来,信息安全成为了不可忽视的重要议题。随之而来的是技术的迅速发展和创新,为信息安全领域带来了挑战,也为其提供了前所未有的机遇。在这个背景下,低代码开发平台作为一种创新的解决方案崭露头角&#xff…

速看,多设备上使用 WhatsApp的最完整指南

速看!多设备上使用 WhatsApp的最完整指南! 在过去的几年里,WhatsApp一直在不断更新。最近它正在推出一项新功能:允许移动和非手机设备使用该服务,而不需要将注册的手机连接到互联网。也就是说,您可以不再需…

cancal 同步mysql数据到es中

1.环境: windocs service2012 、 jdk版本1.8 、canal版本1.5、mysql版本5.7、 注意:canal版本1.5需要的jdk是1.8 如果你下载的是canal1.6,jdk是1.8,那样会报错。 下载地址 Releases alibaba/canal GitHub 下载并上传到服…

CAP结构体之字节对齐

🍅 我是蚂蚁小兵,专注于车载诊断领域,尤其擅长于对CANoe工具的使用🍅 寻找组织 ,答疑解惑,摸鱼聊天,博客源码,点击加入👉【相亲相爱一家人】🍅 玩转CANoe&…

No10.精选前端面试题,享受每天的挑战和学习

文章目录 Linux 中五种 IO 模型四次挥手之后为什么还要等待 2mslcookie 和 session 的区别是什么tcp 怎么保证可靠性css实现图片自适应宽高的几种方法 Linux 中五种 IO 模型 在 Linux 中,常见的五种 I/O(Input/Output)模型包括: …

机器学习19:多类别神经网络-Multi-Class Neural Networks

在【机器学习12:分类 Classification】一文中,笔者介绍了二元分类模型,它可以在两个可能的选择之一之间进行选择,例如: 电子邮件是垃圾邮件还是非垃圾邮件。肿瘤是恶性的或良性的。 在本文中,我们将研究多类…

将ChatGPT变成Midjourney提示生成器

已经有人总结过可以让ChatGPT作为Midjourney图像生成的模板。在本文中,我们将展示如何根据个人用例创建这些提示,这可以让ChatGPT生成的提示可控性更高。 选择提示模板 Midjourney的模板结构性很强,所以我们这里使用一下的结构: …

rsync远程同步(可爱可抵漫长岁月)

文章目录 一、简介二、部署rsync主客服务器1.关闭防火墙(真的老生常谈了 一生之敌!)2.建立/etc/rsyncd.conf 配置文件3.客户端配置4.发起端配置 rsyncinotify 三、拓展使用rsync来实现快速删除大量文件。 一、简介 什么是rsync? …

【Linux】Linux项目自动化构建工具-make/makefile

Linux项目自动化构建工具-make/makefile 什么是make/makefile?make/makefile的使用依赖关系依赖方法makefile是如何工作的?为什么要使用makefile呢?makefile是怎么做到的呢?make和make clean.PHONY:伪目标 特殊符号&am…

Vue 之 mixins 和 provide/inject

一、mixins 1、简介 ​ mixins 又称 混入,是指将一些可复用的代码(JS、生命周期钩子函数等等)抽离出来,定义成mixins模块,然后混入到多个组件中,从而实现组件间的逻辑代码共享,减少重复代码。…

Nginx正向代理、反向代理,动静分离

目录 正向代理 反向代理 动静分离 正向代理 正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。 反向代理 客户端给服…