测试这碗饭,现在是越来越难吃了
我是一名测试工程师,今年10+岁了,游走在产品研发线上,与产品小妹、开发小哥、运维大叔一起维护着研发世界的和平,我的主要技能就是究其一生使出浑身解数与bug斗智斗勇,保障产品的质量,可是这10多年来我走过的路并不平坦……
测试萌芽
这是200X年到2010年之间的混沌时期,我差不多就是在这段时期出生的,刚出生的时候我还不叫测试工程师,我的主业还是研发,偶尔辅助做做测试的活,后来得益于互联网的发展,各种国外先进研发思想的流入,产品体量和复杂度也越来越大,用户的体验需求越来越强烈,我们的研发流程也规范起来了,测试思想终于从混沌中萌芽并走向正规……随着瀑布模型(如下图)开始盛行,研发线上需求、设计、开发、测试、实施/运维大家各司其职,其乐融融,我也正式有了自己的title:测试工程师。

测试初期
这段时期大概是在2010年到2013年左右,这时期我已经可以名正言顺的打着测试的旗号,拉起队伍,编入研发大队中,对外我们一般叫xx软件测试部/xx测试组,我们的工作主要是打中后期,前期需求调研和分析完后,输出需求文档,这时我们测试小队就开始介入,从测试的角度对需求文档进行评审,评审后我们就开始测试设计,针对需求文档编写详细的测试用例,等开发编码完成提测后,就依照测试用例做功能测试执行,基本上就是大家熟知的点点点操作,后来互联网的发展更快了,用户的需求也随之变化越快了,研发大队的领导说:我们现在的研发模式有点慢哇,一个需求做半年,才刚上线客户需求又变了,咱们又得需求变更……然后研发模式就开始向更快更好的方向发展,期间出现了V模式和W模型(如下图):

这样测试的范围和边界就更加清晰了,但是测试的工作量也随之增加了,天天加班点点点bug还是捉不完,慢慢感觉到体力不支……
自动化为王
这时期大致可以从2012年或更早一点点开始,一直延续到现在,不过自动化为王的全民高潮期大概在2014-2016年的移动互联网高潮期,各个公司的情况可能跟自身测试技术的发展情况而有差异。经历过前期的成长和移动互联网的发酵,PC和Web端之外,还有移动端大行其道,面对这么多平台的兼容性和适配测试,这种重复点点点劳动已经让我失去了测试的乐趣,麻木的大脑只剩下手还在机械的点点点了,突然有一个声音在测试界炸响:为什么不把一部分工作交给机器来自动化测试?于是全民自动化时代开始来临,各种自动化测试框架和工具先后引入我们的测试舞台,经过实战洗礼验证,Web端留下了著名的Selenium自动化测试框架,移动端Appium、Robotium、UiAutomator、Monkey等百花齐放……各大公司开始把自动化测试作为招聘的技术指标,把自动化测试覆盖率作为测试的KPI,各大培训机构也大力跟进宣传和鼓吹,一遍热闹祥和!测试界大家都在积极学习自动化测试技术……
冷静期
学过了自动化技术,我现在走路都带风,开发路上叫我都不应,我也是会码代码的人儿!以前天天点点点,现在我天天写自动化代码,甭管什么项目,功能测试搞完就开始上自动化测试,自动化测试线性代码写的飞起,一顿操作猛如虎,发到线上二百五。各种测试指标都做的贼漂亮,为啥线上bug还那么多,甚至还没以前纯点点点时代的好,该背的锅还是得背,总结会上认真反思后,大家都冷静下来了,自动化测试的效益并没有体现,自动化的稳定性欠佳,脚本的维护占据着大家的功能测试时间,导致顾此失彼,这时候我开始分析什么功能点或者业务场景适合自动化测试,只做适合的,脱离业务的自动化测试就是废柴,业务测试为主,自动化测试为辅,慢慢的摸索出了冒烟自动化测试,回归自动化测试,稳定性自动化测试,兼容性自动化测试……
互联网需求和流量暴增之后,大数据、分布式、微服务架构、上云、devops等概念又开始横行,各种RPC通信、模块化测试、数据链路测试、docker容器化技术、mock技术、全链路测试……让人头大,测试越来越难了,让我静一静……
专项崛起
自动化测试回归了它正确的用途,又让我腾出了一只手,于是我又有时间去研究去深入学习了。突然资本寒冬来临,以前站在风口起飞的猪很多都摔得挺惨,公司面临业务收缩和人员裁减,研发线上诚惶诚恐,该来的还是得来,首当其冲的没有意外就是测试,谁让咱不是直接产出方呢!留下来的我也要尽快表现,体现测试的最大价值,所以按照金字塔理论(如下图)我要深挖测试的深度。

于是我开始研究接口层面的测试,以及各种性能、安全、兼容性、稳定性、服务器等专项测试。以前需要开发提交80%以上的功能代码后才能提测,现在通过接口测试的方式,在一个模块或功能点做完后就可以提前介入测试对应的接口了,这个我称它叫测试左移。以前的性能测试有专项性能团队来做,现在人员缩减都得自己搞了,针对某些接口做专项性能测试,一开始我选择用开源的Jmeter来做,可图形可二次开发玩的很欢快,后来深入原理后发现自己写多线程模拟也是一样……发现接口测试的简单直接后,我把自动化测试的重点放到了接口测试,针对接口开始设计自动化用例,做成稳定性和可维护更高的接口自动化测试。尝到甜头后,测试环境已经不能满足我的胃口,我开始把注意力转向线上环境,通过线上接口和服务监控,对线上服务做可用性和稳定性监测……这个我称它叫测试右移。
测试开发之道
随着时间流逝,公司也发现了我更大的价值,于是我不在只关注于测试业务本身,我逐渐把测试的触角伸到了研发流程的各个方面,这时我感觉到自己的技术储备开始不够用,边学边用,小步快跑,我不再想处于等待提测的状态,想努力打通整个环节,让测试始终贯穿其中,所以我就开始将测试的各个环节集成到研发平台中:
持续集成(CI):集成代码编译打包Jenkins服务,代码提交自动触发编译打包;
持续测试(CT):集成自动化测试平台,代码提测冒烟测试不过关自动打回,发布之前跑一边自动化回归测试;
持续部署(CD):与线上环境打通,代码包部署支持一键灰度发布,A/Btest,告别通宵发布的噩梦;
持续监控(CM):集成线上测试监控服务,异常告警、智能降级与恢复一步到位。
打通了上面的全流程平台建设,感觉就像打通了人体的任督二脉,我开始走向测试开发之道:以业务测试为辅,技术测试为主,自动化测试、专项测试、测试工具开发、测试平台开发、测试/研发流程优化……都是我的工作内容,我现在不仅仅是为质量保驾护航,更是为产品、为研发负责!
下个10年
就目前普遍国内公司的测试技术发展和进度,测试开发的极限还远远不到,下个10年还有得玩~只是测试这碗饭,现在是越来越难吃了!
如果需要项目实践,这里推荐一篇文章,里面涵盖了如何找项目,如何选项目,如何懂项目,如何写项目,一定会对提升你的实战经验有效。
从软件测试到测试开发全套视频+文档+项目+简历模板+面试宝典
需要的小伙伴可以点击小编主页

,验证消息填写000即可获取喔
一、Python编程入门到精通

二、接口自动化项目实战

三、Web自动化项目实战

四、App自动化项目实战

五、一线大厂简历

六、测试开发DevOps体系

七、常用自动化测试工具

八、JMeter性能测试

九, 银行业务测试

十,大数据测试和业务分析

十一:项目实战


相关文章:
测试这碗饭,现在是越来越难吃了
我是一名测试工程师,今年10岁了,游走在产品研发线上,与产品小妹、开发小哥、运维大叔一起维护着研发世界的和平,我的主要技能就是究其一生使出浑身解数与bug斗智斗勇,保障产品的质量,可是这10多年来我走过的…...
这个超实用的门禁技巧,让办公楼安全更简单高效!
门禁监控是现代社会中不可或缺的一部分,用于确保安全和管理进出某个区域的人员。随着科技的不断发展,门禁监控已经远离了传统的机械锁和钥匙,变得更加智能化和高效。 客户案例 企业办公大楼 无锡某大型企业在其办公大楼内部部署了泛地缘科技…...
C++虚表与虚表指针详解
类的虚表 每个包含了虚函数的类都包含一个虚表。 当一个类(B)继承另一个类(A)时,类B会继承类A的函数的调用权。所以如果一个基类包含了虚函数,那么其继承类也可调用这些虚函数,换句话说&…...
12 pinctrl 和 gpio 子系统
一、pinctrl 子系统 1. 什么是 pinctrl 子系统? 首先回顾一下如何初始化 LED 所使用的 GPIO: ①、修改设备树,添加相应的节点,节点里面重点是设置 reg 属性, reg 属性包括了 GPIO相关寄存器。 ②、获取 reg 属性中 …...
【复盘】记录一次JVM 异常问题 java.lang.OutOfMemoryError: unable to create new native thread
背景是最新运营提了一个需求,需要根据用户信息拉去三分机构的信贷数据,需要达到一天百万级别,但是经过实际测试,也只能达到40W量级,具体就是通过起多个Spring Boot项目,每个项目1S拉一个用户,基…...
Java基础之类型(内涵面试题)
目录 一、自动类型转换: 二、强制类型转换: 1.强制类型转换可能造成数据丢失(溢出)。 2.浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。 三、自增、自减(、--)有关面试题…...
idea好用插件整理
1、Alibaba Java Coding Guidelines 阿里巴巴编码格式规范 2、Big Data Tools 大数据开发工具,是一个集成 Spark 且支持编辑和运行 Zeppelin Notebooks 的 IntelliJ IDEA 新插件 3、chinese language pack 中文语言包 4、CodeGeex ai生成提示代码 5、ide eval…...
【WinForm详细教程五】WinForm中的MenuStrip 、ContextMenuStrip 、ToolStrip、StatusStrip控件
文章目录 1.MenuStrip2.ContextMenuStrip3.ToolStrip4.StatusStrip 1.MenuStrip MenuStrip作为一个容器可以包含多个菜单项。MenuStrip 的重要属性包括: Name:菜单的名字Dock:菜单的停靠位置Items:菜单项的集合 ToolStripMenuI…...
研究人员发现34个Windows驱动程序易受完全设备接管攻击
最近,研究人员发现了34个易受攻击的Windows驱动程序,这些漏洞可能被非特权威胁行为者利用来完全接管设备,并在底层系统上执行任意代码。这一发现引发了广泛关注,并引起了Windows用户的担忧。 导语 随着科技的不断进步,…...
最新 vie-vite框架下 jtopo安装使用
官方地址 官方源码 安装下载 1.官方好像都没有给git地址,尝试npm安装报错 2.找到1.0.5之前的版本npm i jtopo2,安装成功后使用报错,应该是版本冲突了 1.本地引入, 点击官方源码下载,需要jtopo_npm文件 2.引入到本…...
基础课20——智能客服系统的使用维护
1.智能客服系统的维护 智能客服系统在上线后,仍然需要定期的维护和更新。这是因为智能客服系统是一个复杂的软件系统,涉及到多个组件和功能,需要不断优化和改进以满足用户需求和保持市场竞争力。 保持系统的稳定性和性能:随着用…...
Aop自定义注解生成日志
Aop自定义注解生成日志 1.编写自定义注解 //表示此注解可以标注在方法上 Target(ElementType.METHOD) //运行时生效 Retention(RetentionPolicy.RUNTIME) public interface OpetionLog {//定义一个变量,可以接收参数String value() default "";}2.Cont…...
虚幻引擎:RPC:远端调用
1.如何区当前是服务器还是在客服端 2.如何修改一个actor的所有权 修改所有权必须 在服务器上进行修改,不允许在客户端进行修改...
涉及多种位运算操作混合类题目——通过加转三进制(扩大状态,不变枚举量):CF1033F
https://www.luogu.com.cn/problem/CF1033F 我们发现直接用二进制来做很难做,但我们可以观察其给的表 我们发现如果表示成和的形式是容易进行一一对应的 对于询问的时候,我们直接枚举每位有的和是多少,虽然状态是三次的,但是对于…...
BIOS开发笔记 - DDR基础
简介 内存是计算机中重要的组成部分,主要为CPU计算时提供一个数据的临时存储的场所。CPU在处理数据前,会将数据从外存复制到内存中,然后再处理内存中的数据,如果需要将结果保存,则一次性写回外存,这样便大大提高CPU的处理效率。 …...
基于SpringBoot+Vue的旅游系统、前后端分离
博主24h在线,想要源码文档部署视频直接私聊,低价有偿! 基于SpringBootVue的旅游系统、前后端分离 开发语言:Java 数据库:MySQL 技术:SpringBoot、Vue、Mybaits Plus、ELementUI 工具:IDEA/Eci…...
手动制作Docker容器镜像
文章目录 手动制作Docker容器镜像说明前期准备制作镜像1.启动一个centos系统的容器2.在centos容器中源码安装httpd服务3.基于已经安装好httpd服务的centos容器制作一个httpd镜像4.验证制作出来的镜像的功能5.上传至自己的docker镜像仓库(可选) 手动制作D…...
WPF布局控件之WrapPanel布局
前言:博主文章仅用于学习、研究和交流目的,不足和错误之处在所难免,希望大家能够批评指出,博主核实后马上更改。 概述: 后续排序按照从上至下或从右至左的顺序进行,具体取决于方向属性的值。WrapPanel 位…...
实现自动接听电话
在Android 12中实现自动接听电话的功能可以通过使用特定的API来实现,具体的实现方法如下: 导入需要的类库和接口 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.te…...
计算机网络之网络层(全)
网络层的功能 互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。 路由器在能够开始向输出链路传输分组的第一位之前,必须先接收到整个分组,这种机制称为:存储转发机制 异构网络互连 用…...
CMake基础:构建流程详解
目录 1.CMake构建过程的基本流程 2.CMake构建的具体步骤 2.1.创建构建目录 2.2.使用 CMake 生成构建文件 2.3.编译和构建 2.4.清理构建文件 2.5.重新配置和构建 3.跨平台构建示例 4.工具链与交叉编译 5.CMake构建后的项目结构解析 5.1.CMake构建后的目录结构 5.2.构…...
【大模型RAG】Docker 一键部署 Milvus 完整攻略
本文概要 Milvus 2.5 Stand-alone 版可通过 Docker 在几分钟内完成安装;只需暴露 19530(gRPC)与 9091(HTTP/WebUI)两个端口,即可让本地电脑通过 PyMilvus 或浏览器访问远程 Linux 服务器上的 Milvus。下面…...
深入理解JavaScript设计模式之单例模式
目录 什么是单例模式为什么需要单例模式常见应用场景包括 单例模式实现透明单例模式实现不透明单例模式用代理实现单例模式javaScript中的单例模式使用命名空间使用闭包封装私有变量 惰性单例通用的惰性单例 结语 什么是单例模式 单例模式(Singleton Pattern&#…...
相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)
【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...
MySQL 8.0 OCP 英文题库解析(十三)
Oracle 为庆祝 MySQL 30 周年,截止到 2025.07.31 之前。所有人均可以免费考取原价245美元的MySQL OCP 认证。 从今天开始,将英文题库免费公布出来,并进行解析,帮助大家在一个月之内轻松通过OCP认证。 本期公布试题111~120 试题1…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
【Go语言基础【12】】指针:声明、取地址、解引用
文章目录 零、概述:指针 vs. 引用(类比其他语言)一、指针基础概念二、指针声明与初始化三、指针操作符1. &:取地址(拿到内存地址)2. *:解引用(拿到值) 四、空指针&am…...
招商蛇口 | 执笔CID,启幕低密生活新境
作为中国城市生长的力量,招商蛇口以“美好生活承载者”为使命,深耕全球111座城市,以央企担当匠造时代理想人居。从深圳湾的开拓基因到西安高新CID的战略落子,招商蛇口始终与城市发展同频共振,以建筑诠释对土地与生活的…...
LangChain 中的文档加载器(Loader)与文本切分器(Splitter)详解《二》
🧠 LangChain 中 TextSplitter 的使用详解:从基础到进阶(附代码) 一、前言 在处理大规模文本数据时,特别是在构建知识库或进行大模型训练与推理时,文本切分(Text Splitting) 是一个…...
