你是不是一个好的测试工程师?

如何评价一个程序员是否优秀一直是一个很有争议的话题。

先说一个真实事件,国际化项目,最开始都是由产品经理在excel中管理翻译,迭代过程中如有增删改,就把增删改的部分标记出来,提供给开发,开发再对应更新多语言的资源文件。这个过程中需要产品与开发在中间倒一下手,很容易出错和遗漏,尤其是频繁更新时。为了方便对多语言翻译进行管理,前端同学写了一个多语言管理后台,取代了原先的exel表格,主要具备两功能:

  1. 产品经理可以先在test环境改,改完提交就生效,所见即所得。
  2. 提供了同步到beta和prod环境的功能,不需要每个环境都单独改,免得又改的不一致。

前端让测试同学帮助测试并提点建议,我提出几点建议:

  1. 在提交和同步前增加确认环节,提示本次增加,修改,删除的内容,经提交人二次确认后再提交(如有可能,可以做成由第二个人审批)
  2. 同步到beta和prod环境时,提供检测功能,如果有未翻译的key,提示风险或拒绝同步
  3. 提供备份恢复(或简单版本管理)功能,万一修改后的内容有问题,可以快速加回滚

哈哈,综合下来,感觉越来越像一个配置中心了。

前端同学说你这么一来,功能就复杂了啊,我是不是还要做个用户管理和权限体系,只有指定的用户有权限发布。后来又有后端开发加入讨论,最终讨论的结果不谈。主要是中间我提到,目前其他兄弟部门的多语言后台管理系统没有同步功能,都是各个环境单独修改,很容易遗漏,导致线上有很多漏翻的问题,于是测试同学为了保证多语言质量,写了一个检查工具,主动扫描线上的多语言资源文件,发现了很多漏翻的问题,极大的提高了测试效率,保证了语言测试的质量。这个同学在完成提效OKR的同时,也被提名微创新奖。如果你不实现这个同步功能,就会面临和兄弟部门一样的风险,那么就需要我去写一个工具来做这个检查,反正不是开发做,就是由测试来做。然后我想了一下,开玩笑说:“你还是不要做这个功能了,留给我来做吧,这样我的OKR上就有东西可以写了,如果你把这些都做了,不出问题了,我的价值何在?我只是在这里提了一个建议,这个建议的价值或许与我做一个检查工具是等效的,但是公司会因为这个建议而给我高的绩效分吗?又有谁会知道我曾经提过这个建议?

虽然是一句玩笑话,但却是说出了研发过程中的尴尬,大家为了OKR,为了有亮点,有时候明明可做更好,却要故意做的烂一点,为后续改进留有余地。即使没有问题,也要人为制造一点问题出来。如果一个产品线长期没有问题,那么这个产品线也基本不需要人再维护了,人员都可以优化掉了,只有有问题,才需要人去解决,才会招人,才会长期繁荣。从而推理出,没有问题的产品,不是好产品(可不可笑?尴不尴尬?)。

回到测试,测试工程师的价值如何体现?一个好的测试工程师,是将问题扼杀在摇篮里,还是事后写工具发现问题?

回答当然是两者都有价值,只是问题发现的阶段不同而已,而且从软件开发项目管理理论上来说,问题肯定是发现的越早越好。但是问题的关键在绩效评价上,老板都希望用数据说话,你说你做的好,空口无凭可不行。然后提前发现问题(提出建议)是不容易被量化的,而事后发现的问题(bug数量,线上故障数量)是可以量化的。

说到这里,我的结论是啥?其实我是没有结论的,只能感叹:发现一个好的测试工程师真的很难,发现千里马需要伯乐,大家都说千里马难寻,但也有可能是没有伯乐。

引申一下,在可以量化的指标中,很难通过某一个指标来体现一个程序员的好坏,比如:

  • 以单位时间内的工作量(代码量)来区分?单位时间写的代码越多就越优秀吗?显然不是,优秀程序员的十几行代码或许比一个普通程序员的几百行代码更高效。
  • 以交付时间?同样的任务,谁完成任务的快,谁就更优秀?或许吧,但任务按时完成了,并不代表代码的质量高和性能好,对吧?
  • 那以质量为指标呢?或许是个不错的选择,但是如何评价软件的质量呢?又是一个头大的问题,以bug数量来评价?bug少的代码,质量就一定高吗?万一是测试没测出来呢?或者有人代码写的少,所以bug就少,代码写的越多的人,出bug的可能性就更大,这样一来,程序员都不写代码,那也就没bug了,是不是质量就最好了呢?
  • 按照线上故障数?如果是前人留下的坑呢?你在别人的屎山代码上做的修改,结果一上线就报错了,你发现了前人留下来的隐患,然后那个人早已不在这个公司了,锅却留给你来背,这时候你是不是想骂街?
  • 有同学说,同行评价啊,按口碑(这就是360度环评)。唉,这想法很不错,但实践起来也是有很多不足之处。如果大家一团和气,一起骗老板怎么办?这恐怕是老板最不愿意看到的。另外,有的程序员写代码不怎么样,但天生会搞人际关系,很会拉选票(当然这不是贬低,他可能适合做管理)。而相当多的程序员大牛,都非常有个性,不希望被束缚,所以在人际关系这方面不怎么上心,结果就有可能在评比中吃亏。

综合下来,评价一个程序员真的是很难,要各个方面综合考虑,而不能参考某一个指标。

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

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

相关文章

关于gateway中lb失效

在通过gateway将请求发送到对应的服务模块时,出现了503的报错,也就是gateway时可以正常启动,但是页面上在发送请求获取数据的时候,却不是相应的请求地址。 解决方法: 1.首先你得保证前端项目里面访问网关地址都是正确…

【Netty】NIO基础(三大组件、文件编程)

文章目录 三大组件Channel & BufferSelector ByteBufferByteBuffer 正确使用姿势ByteBuffer 内部结构ByteBuffer 常见方法分配空间向 buffer 写入数据从 buffer 读取数据mark 和 reset 字符串与 ByteBuffer 互转Scattering ReadsGathering Writes粘包、半包分析 文件编程Fi…

vue 当新增样式无法生效的情况下如何处理

使用scoped属性时&#xff0c;会遇到样式问题。需要使用样式穿透解决 <style lang"scss" scoped> </style> 可以使用以下方法 &#xff1a;deep css 使用 >>> less 使用 /deep/ scss 使用 ::v-deep 代码写法如下: .a :deep(.b) { } .…

v-show和v-if的区别以及显示隐藏不生效的奇怪现象以及点击索引错位问题的解释

基本概念没什么好讲的。有时候会遇到莫名其妙不显示的问题&#xff0c;这都是因为对这两个概念理解不透彻造成的。 v-show的本质 v-show的本质就是通过调用css的display:none来实现的&#xff0c;这点非常重要&#xff0c;出问题可以在浏览器调试页面手动设置display:none来验…

Mac的docker安装redis

Mac的docker安装redis 1、docker search redis NAME DESCRIPTION STARS OFFICIAL AUTOMATED redis Redis is an open source key-value store that… 12205 …

mysql、redis 、RabbitMQ只能本机访问,怎么改?

如果只能本机访问&#xff0c;怎么改? 一、mysql - 改my.ini 刷脚本 bind-address0.0.0.0 然后重启一下mysql服务 任务管理器-关掉mysql 搜索 计算机管理-重启mysql服务 然后 打开查询&#xff0c;并选择mysql数据&#xff0c;输入这个sql语句&#xff0c;点击运行 sele…

SpringAMQP使用

说明&#xff1a;SpringAMQP&#xff08;官网&#xff1a;https://spring.io/projects/spring-amqp&#xff09;是基于RabbitMQ封装的一套模板&#xff0c;并利用了SpringBoot对其实现了自动装配&#xff0c;使用起来非常方便。安装和原始使用参考&#xff1a;http://t.csdn.cn…

视频做成GIF动图怎么做?分享超简单的制作方法

将视频制作GIF动图的好处在于它可以将原本较长的视频压缩成一个简短、易于分享的图像文件。这使得它们非常适合用于社交媒体、博客、电子邮件等场景&#xff0c;可以当做表情包来使用&#xff0c;尤其是看到一段搞笑的视频&#xff0c;想要把它做成GIF动图该怎么做呢&#xff1…

机器学习混淆矩阵笔记

混淆矩阵&#xff08;Confusion Matrix&#xff09;是在机器学习和统计学中用于评估分类模型性能的一种表格。它可以显示模型预测结果与真实标签之间的对应关系&#xff0c;从而提供了对分类模型性能的全面评估。 混淆矩阵的结构是一个二维矩阵&#xff0c;通常是一个2x2的矩阵…

常见java知识点1

目录 1 什么是Spring框架&#xff1f;Spring框架有哪些主要模块&#xff1f; 2 使用Spring框架有什么好处&#xff1f; 3 Java常用的包&#xff08;列举六个&#xff09; 4 Arraylist 和 Linkedlist 的区别 5 HashMap和Hashtable的区别 6 Java中常见的…

小白到运维工程师的自学之路 第五十四集 (ansible自动化运维工具)

一、概述 Ansible是一种开源的自动化工具&#xff0c;用于自动化任务的执行、配置管理和应用部署。它采用基于Python编写的简单、轻量级的语法&#xff0c;可以通过SSH协议远程管理和配置多台计算机。 Ansible的主要特点包括&#xff1a; 1、简单易用&#xff1a;设计简单&a…

LCD—STM32液晶显示(1.显示器简介及LCD显示原理)(6000字详细介绍)

目录 显示器简介 液晶显示器 液晶 像素 液晶屏缺点 LED显示器 OLED显示器 显示器的基本参数 STM32板载液晶控制原理&#xff08;不带微控制器&#xff09; 液晶控制原理 控制信号线(不带液晶控制器) 液晶数据传输时序 显存 总结 3.2寸液晶屏介绍&#xff08;搭载…

[QT编程系列-24]:多线程机制 - QT的数据通信机制

目录 第1章 QT常见的数据通信机制 第2章 示例代码 1. 信号和槽机制示例&#xff1a; 2. 共享数据/变量示例&#xff1a; 3. 本地套接字示例&#xff1a; 第1章 QT常见的数据通信机制 在Qt中&#xff0c;有多种方式可以实现数据通信&#xff0c;下面列举了一些常用的方法&…

微星B460M迫击炮主板安装黑苹果

我的配置 CPU&#xff1a;Intel i5-10400 主板&#xff1a;微星 B460M 迫击炮 显卡&#xff1a;蓝宝石 5500XT 8G 无线网卡&#xff1a;BCM94360CD 一、BIOS配置 &#xff08;升级最新的BIOS XXX016&#xff09; 1.开启D.T.M &#xff08;微星主板的黑苹果模式&#xff09; 2.…

基于单片机的智能鞋柜的设计与实现

功能介绍 以51单片机作为主控系统&#xff1b;通过DHT11温湿度采集&#xff1b;通过按键设置逻辑处理&#xff1b;通过LED紫外线消毒&#xff1b;通过继电器控制风扇进行换气除湿&#xff1b;通过继电器控制加热片进行加热&#xff1b;整个电路以5v供电; 电路图 PCB 源代码 #i…

PHP中self和static的区别

今天闲来无事&#xff0c;突然有个朋友问我self和static的区别&#xff1f;那么好&#xff0c;就让我来跟大家解答一下这个问题。 self &#xff1a;它会调用当前类的方法&#xff1b;通俗来说&#xff0c;self就是写在哪个类里面, 实际调用的就是这个类的方法。 static(延迟静…

cocosCreator 3.6以上接入腾迅Bugly 捕捉JS错误 Android

cocosCreator3.6以上接入Bugly上报其实很简单&#xff0c;不需要网上那么多弯弯绕&#xff0c;三须三步走。 1. 按照官网方式接入android的bugly 2. android端写一个Bugly上报管理类 3. 修改你工程目录下native\engine\common\Classes\目录下的Game.h, Game.cpp两个文件&…

大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解

大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解 1.GPT 模型 1.1 GPT 模型简介 在自然语言处理问题中&#xff0c;可从互联网上下载大量无标注数据&#xff0c;而针对具体问题的有标注数据却非常少&#x…

【JavaEE】Tomcat的安装和使用、创建Mevan项目使用Servlet写一个程序

目录 前言 一、Tomcat的下载和安装 二、写一个简单的Servlet项目 1、创建一个Maven项目 2、引入依赖 3、创建目录 4、编写Servlet代码。 5、打包程序 6、将程序部署到Tomcat上 7、验证程序运行结果 三、在IDEA上安装Smart Tomcat插件 四、Servlet中的一些常见错误 …

基于timegan扩增技术,进行多维度数据扩增(Python编程,数据集为瓦斯浓度气体数据集)

1.数据集介绍 瓦斯是被预测气体&#xff0c;其它列为特征列,原始数据一共有472行数据&#xff0c;因为原始数据比较少&#xff0c;所以要对原始数据&#xff08;总共8列数据&#xff09;进行扩增。 开始数据截图 截止数据截图 2. 文件夹介绍 lstm.py是对未扩增的数据进行训练…