预警:传统的QA岗位将被DevOps淘汰

news2024/11/16 13:47:51
导读在大多数机构或公司里,软件开发过程主要遵循一个或多个开发模型,例如瀑布模型或敏捷模型。在瀑布模型中,测试活动一般都在后期进行。软件开发完成后,缺陷被QA团队找出,然后再被修复。后两个活动不断循环和重复,指导管理者认为软件可以被公开发布为止。

如果你是一名软件质量保障人员(QA),那么是时候去找一份新的工作了(或者get新技能准备升级转型)。绝大多数情况下,软件开发过程包括如下几个主要活动:

  • 进行需求分析
  • 创建软件产品的规格说明书
  • 构建软件
  • 软件(或服务)质量调查
  • 发现、修复缺陷
  • 部署软件到实际生产环境

在大多数机构或公司里,软件开发过程主要遵循一个或多个开发模型,例如瀑布模型或敏捷模型。在瀑布模型中,测试活动一般都在后期进行。软件开发完成后,缺陷被QA团队找出,然后再被修复。后两个活动不断循环和重复,指导管理者认为软件可以被公开发布为止。

预警:传统的QA岗位将被DevOps淘汰预警:传统的QA岗位将被DevOps淘汰

在敏捷模型中,包括QA在内的个人和团队在一起紧密工作,在一种持续的基础上不断发布、更新软件,而在某个时间一起部署整个软件。DevOps,就像我们在之前的文章中已经提到过的,是下一代的敏捷开发模型。敏捷是一种在软件开发中不断思考的方式,而DevOps则更进一步发展,是实现组织内开发哲学的具体开发文化的变革。

而且这种实现方式消除了QA作为组织中一个单独实体的存在意义,将质量保障的工作分散给不同的开发团队,尽管许多人认为原来的质量保障的规则仍然需要通过这种或其它的方式存在。

过去对DevOps中QA的理解

其中一种常见的观点认为DevOps位于开发团队、运营团队、QA团队的中心(见上韦恩图):“一方面,QA团队和开发团队一起工作,尽量将他们的测试融入到系统的持续集成中。测试必须做到没有人力干预,独立产生他们自己的测试数据。另一方面,QA团队和运营团队一起合作完成监控工具,也可能一起不断对产品进行Smoke Test。有一种可能是运营团队在开发系统备份和恢复、部署回滚的脚本或者灾难恢复的脚本。”

在NeoTYS的Tim Hinds则从不同的角度看待这个问题,他认为“DevOps QA”的作用是预防缺陷的发生而不是检测缺陷:“QA在组织中担任非常关键的角色,因为他们有足够的能力和权限能够在系统正常工作时将其发布出去并且在发现系统不工作时将其回滚。这和10年前的QA团队的观念相比是非常不同的,当时认为QA团队的主要职责是发现缺陷。今天QA团队则被要求避免缺陷被暴露给公众。”

但是客观的说,上述的观点都是错误的。

为什么DevOps不需要(传统型的)QA

DevOps通常使用持续集成(CI)和持续交付(CD)。在持续集成中,开发人员利用各种持续集成工具来不断将代码整合到共享代码库中,甚至每天多次提交,而且DevOps依赖自动化来确保版本质量。如果想要进行持续角度,就不能有人工干预,这样才能确保在任何一个时间都可以发布代码库中的任何一段代码的任何一个版本。

基本上,传统的QA不可能在完整的持续集成/持续交付的环境中工作。在旧的结构中,软件产品的质量保障的责任是在QA的手里、而今天,它则是DevOps的开发文化和开发哲学的一部分——所有开发人员都有这个责任而非仅仅组织中的一个独立的团队拥有这个责任。

具体来说,DevOps需要使用诸如BUGtrack、JIRA和Github等产品和工具来不断汇总和报告软件中的错误和缺陷。Selenium、Cucumber、Junit、TestNG和JMeter等自动测试工具则用于管理、执行和度量功能测试等。

最后总结一下,如果在开发团队和运营团队中间还阻隔了一层人员,那么你就不能无缝执行持续集成和持续交付,也就不能进行DevOps。因此,要想正确的运行DevOps操作,则根本不能拥有(传统型的)QA团队。

QA的未来

那么对于QA工作者来说他们之后会怎么样呢?作为曾经美国最最幸福的工作之一的QA,随着越来越多的组织使用DevOps,传统型的QA工作者们的位置会变得越来越冗余。

根据美国劳工统计局(BLS)的报告,软件质量工程师是高新技术职业中增长速度预计将比平均水平慢的职业之一:

然而,美国劳工统计局的统计数字可能太泛化了因此劳工局还没有将DevOps认定为一个独立的职业:

作为证据,仅仅看一下Google趋势中搜索数据的相对数量就会发现“sqa jobs”的搜索数量正在缓慢下降然而“devops jobs”的搜索数量则在迅速增长:

预警:传统的QA岗位将被DevOps淘汰预警:传统的QA岗位将被DevOps淘汰

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

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

相关文章

Python基础语法入门(第二十三天)——正则表达式

正则表达式是一种文本模式,用于匹配字符串,它是由字符和特殊字符组成的模式。正则表达式可以用于验证、搜索、替换和提取字符串。其能够应用于各种编程语言和文本处理工具中,如Python、Java、JavaScript等。 正则表达式在线测试工具&#xf…

Spring源码编译-for mac

超详细的spring源码编译 记:编译成功时间:2023.08.19 环境准备: 1.idea 2023.1.1 Community Edition 2.jdk1.8 3.gradlegradle-5.6.4 4.spring源码(版本:spring-framework-v5.2.25.RELEASE) 一.spring源码下载 github 加速网站&…

stm32单片机4个开关控制8个LED灯,4种不同模式参考源代码(附带PROTEUS电路图)

//main.c文件 /* USER CODE BEGIN Header */ /********************************************************************************* file : main.c* brief : Main program body************************************************************************…

0101前期准备-大数据学习

文章目录 1 前言2 配置VMware虚拟机2.1 设置主机名和固定IP2.2 本地系统与Linux系统配置主机名映射2.3 配置虚拟机之间用户的SSH免密互通2.4 安装JDK环境2.5 关闭防火墙和SELinux2.6 更新时区和同步时间2.7 保存虚拟机快照 结语 1 前言 我们从基础的hadoop开始学起,…

Python上楼梯问题:递归解法探究(斐波那契变种)(记忆化递归)

文章目录 上楼梯问题:递归解法探究问题定义解决方案1. 递归2. 记忆化递归关于python memo{}默认参数和字典的语法语法功能版本信息注意事项 结论 上楼梯问题:递归解法探究 在这篇文章中,将对上楼梯问题进行深入探讨。上楼梯问题是一种常见的…

2D应用开发是选择WebGL 还是选择Canvas?

推荐:使用 NSDT场景编辑器 助你快速搭建可二次编辑的3D应用场景 在介绍WebGL和Canvas的区别和联系之前,需要先了解它们各自的定义和特点。 WebGL是一种基于标准HTML5的技术,用于在Web浏览器中实时渲染3D图形。它是由Khronos Group开发的一套…

C++系列-内存模型

内存模型 内存模型四个区代码区全局区栈区堆区内存开辟和释放在堆区开辟数组 内存模型四个区 不同区域存放的数据生命周期是不同的,更为灵活。 代码区:存放函数体的二进制代码,操作系统管理。全局区:存放全局变量,常…

工厂模式的三种姿态?

在软件工程中常见的设计模式——工厂模式。工厂模式是一种有力的工具,用于创建对象实例的方式,可以帮助我们更好地组织代码和降低耦合性。在本文中,我将为大家详细介绍工厂模式的三种姿态,同时通过举例和代码演示来帮助大家更好地…

Docker环境安装elasticsearch和kibana

一、安装elasticsearch 创建es-network,让es、kibana在同一个网段: docker network create --driverbridge --subnet192.168.1.10/24 es-network运行elasticsearch docker run -d \ --name elasticsearch \ # 容器名 --hostname elasticsearch # 主机…

【Redis】Redis中的布隆过滤器

【Redis】Redis中的布隆过滤器 前言 在实际开发中,会遇到很多要判断一个元素是否在某个集合中的业务场景,类似于垃圾邮件的识别,恶意IP地址的访问,缓存穿透等情况。类似于缓存穿透这种情况,有许多的解决方法&#xf…

高效的WMS系统手持盘点方案

WMS系统手持盘点就是指利用WMS系统支持的手持式电子盘点设备进行库存盘点的方式。 具体来说: - 手持盘点设备是一种小型的电子设备,具有移动条形码扫描功能,可以实时与WMS系统联通。 - WMS系统利用手持设备,可以给仓储人员下发具体的盘点任务,例如需要盘点的货位、商品等信息…

mybatis plus 配置自动设置创建时间和创建人id

1.新建 MyMetaObjectHandler package com.ruoyi.framework.config;import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler; import com.ruoyi.common.bean.LocalUser; import com.ruoyi.coupon.domain.CouponUser; import org.apache.ibatis.reflection.MetaObjec…

软件报错msvcr90.dll丢失的解决方法,亲测可以修复

我曾经遇到过一个令人头疼的问题:msvcr90.dll丢失。这个问题导致了我的程序无法正常运行,让我感到非常苦恼。然而,在经过一番努力后,我终于成功地修复了这个问题,这让我感到非常欣慰和满足。 msvcr90.dll丢失的原因可能…

python高级基础

文章目录 python高级基础闭包修饰器单例模式跟工厂模式工厂模式单例模式 多线程多进程创建websocket服务端手写客户端 python高级基础 闭包 简单解释一下闭包就是可以在内部访问外部函数的变量,因为如果声明全局变量,那在后面就有可能会修改 在闭包中的…

深入探讨API接口测试:从基础到高级策略

引言:API测试的重要性 在当前的技术趋势中,API(应用程序接口)已经成为连接各种系统和服务的基石。API不仅仅是大型企业的领域,中小型公司和初创公司也越来越依赖API来拓展他们的业务功能和跨系统通信。正因如此&#…

企业数字化转型大数据湖一体化平台项目建设方案PPT

导读:原文《企业数字化转型大数据湖一体化平台项目建设方案PPT》(获取来源见文尾),本文精选其中精华及架构部分,逻辑清晰、内容完整,为快速形成售前方案提供参考。 喜欢文章,您可以点赞评论转发…

(搜索) 剑指 Offer 38. 字符串的排列 ——【Leetcode每日一题】

❓剑指 Offer 38. 字符串的排列 难度:中等 输入一个字符串,打印出该字符串中字符的所有排列。 你可以以任意顺序返回这个字符串数组,但里面 不能有重复元素。 示例: 输入:s “abc” 输出:[“abc”,“acb”,“bac”…

【学习日记】【FreeRTOS】时间片的实现

前言 本文以野火的教程和代码为基础,对 FreeRTOS 中时间片的概念作了解释,并且给出了实现方式,同时发现并解决了野火教程代码中的 bug。 一、时间片是什么 在前面的文章中,我们已经知道任务根据不同的优先级被放入就绪列表中不…

符号随机梯度下降算法SIGNSGD

考虑随机优化问题: 符号随机梯度下降(SIGNSGD)算法: 假设基础: 收敛定理: 联邦优化:

[Java优选系列第2弹]SpringMVC入门教程:从零开始搭建一个Web应用程序

想和你们分享我眼里的代码世界🗺️ 优选系列持续更新中💫 一直在等你,你终于来啦💖 绿色代表解释说明 黄色代表重点 红色代表精髓 SpringMVC是一个基于Java的Web框架,它使用了MVC&…