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

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

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

橘VS枳

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

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

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

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

支点VS体系

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

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

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

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

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

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

最后:

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

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

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat多实例部署

文章目录 一、下载JDK包和tomcat包二、安装JDK和tomcat三、配置 tomcat 环境变量四、修改 tomcat2 中的 server.xml 文件,要求各 tomcat 实例配置不能有重复的端口号五、修改各 tomcat 实例中的 startup.sh 和 shutdown.sh 文件,添加 tomcat 环境变量六、…

神坑:ElasticSearch8集群启动报错“Device or resource busy”(Docker方式)

昨天在Docker中配置ElasticSearcch8集群模式时,先初步配置了master主节点。然后主节点启动就报错,看日志,提示“Device or resource busy”。异常第一句大概这个样子: Exception in thread "main" java.nio.file.FileS…

CMake快速入门

CMake快速入门 CMake 官网:CMake CMake 是一个 跨平台 的安装编译工具,可以用简单的语句来描述 所有平台 的安装(编译过程)CMake 可以说已经成为 大部分C开源项目的标配 1. 为什么要使用CMake? 比如说有一个开源项目,里面有很多 C 的源代…

三、eureka-server端和客户端配置文件讲解

常用配置文件设置 通过这张图理解为什么要进行文件配置 server 中常用的配置 server:port: 8761spring:application:name: eureka-servereureka:client:service-url: #eureka 服务端和客户端的交互地址,集群用,隔开defaultZone: http://localhost:8761/eureka #自己注册自…

人脸识别4:Android InsightFace实现人脸识别Face Recognition(含源码)

人脸识别4:Android InsightFace实现人脸识别Face Recognition(含源码) 目录 人脸识别4:Android InsightFace实现人脸识别Face Recognition(含源码) 1. 前言 2. 项目说明 (1)开发版本 (2)依赖库说明(O…

【花雕】全国青少年机器人技术一级考试试卷(实操真题之三)

随着科技的不断进步,机器人技术已经成为了一个重要的领域。在这个领域中,机械结构是机器人设计中至关重要的一部分,它决定了机器人的形态、运动方式和工作效率。对于青少年机器人爱好者来说,了解机械结构的基础知识,掌…

银河麒麟系统安装mysql数据库[mysql-5.7.28-linux-glibc2.12-x86_64]

银河麒麟系统安装mysql数据库 1.1 准备材料 mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz MySQL5.7下载地址 https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.28-linux-glibc2.12-x86_64.tar.gz 1.1 安装前准备工作 1、检查是否已经安装MySQL [rootlocalhost ~]# rpm …

Django Vue corsheaders跨域问题

跨域问题 记录一下在我自己的django-vue项目里面出现的跨域问题 我的项目之前一直是在本地跑的,因为需要上线测试,所以我就运行在同一个vlan里面 ip段:192.168.1.0/24 突然发现存在跨域问题,我django的接口访问被拦截了。 检查…

MAVEN的学习

MAVEN的作用是什么? 依赖管理:方便快捷的管理项目的资源(jar包),避免版本冲突问题统一项目结构:提供标准、统一的项目结构项目构建:标准跨平台(Linux、windows、MacOS)的…

EMC学习笔记(十三)背板的EMC设计

背板的EMC设计 1.背板槽位的排列1.1 单板信号的互联要求1.2 单板板位结构1.2.1 板位结构影响1.2.2 板间互联电平、驱动器件的选择 2.背板的EMC设计2.1 接插件的信号排布与EMC设计2.1.1 接插件的选型2.1.2 接插件模型与针信号排布 2.2 阻抗匹配2.3 电源、地分配 1.背板槽位的排列…

bug--两个表格,数据来自于同一个抽屉表格,现在让两个表格的数据 不能一样--处理checked 和 disabled

步骤一、拿到表格数据 步骤二、处理 checked,要区分是A表 还是B表,这个区分要在 A表、B表 数据展示的组件里(根源)区分 : 点击A表,抽屉表格中A 已选的状态 是 checked 且 disabled,B 已选的 抽…

terser用于ES6的压缩JS工具

https://www.npmjs.com/package/terser uglify-es不再维护,uglify-js也不支持ES6。 terser是uglify-es的一个分支,主要保留了与uglify和uglify-js3. npm install terser -gterser [input files] [options] terser-webpack-plugin 使用terser-webpack-pl…