【roadMap】我转行软件测试的经历

在这里插入图片描述

软件测试这行咋样?

如果你简单了解过「软件测试工程师」这个岗位,就会知道它的基本特点:

  1. 待遇比开发低,比其他行业高
  2. 入门丝滑,算是技术岗最简单的一类
  3. 测试行业有细分领域:功能、性能、自动化…

每个行业都是一座围城,城外的人想进来,城内的人想出去。2024年加入软件测试=49年入国军?
授人以渔不如授人以渔,无论你最终是否入门,下面这个思维模型都可以参考:

行业前景个人兴趣转行成本
供需关系
竞争
待遇
稳定性
操作系统
编程
算法
时间
经济

所谓无利不起早,我转行的原因就是软件测试比起我之前的工作待遇薪水高很多。
通过上面的思维模型了解行业的供需关系后,我先是通过求职软件「boss直聘」、「前程无忧」、「拉勾网」十几个求职app查看软件测试岗位的薪资待遇,发现符合我的心理预期。供需关系、行业竞争、稳定性都是和大环境相关联的,前几年疫情各行各业都不好做,IT类的大环境也不会好,但是不排除有的行业和公司业绩比以前好,所以不用太过于纠结。

模型中的第二类是个人兴趣,我对电脑游戏很感兴趣,也渐渐的对这些代码是如何呈现出游戏的画面、逻辑产生了兴趣,所以学习编程和算法等对我来说也不是大问题。需要注意的是,在这里除非你是特别厌烦代码,一看到就头疼,其他的情况都不必直接因为兴趣而拒绝了解一个能赚高薪的行业。

确定了前面两个模型,接下来就是转行的时间和经济成本。如果你是理科生,那么恭喜你转行还是比较简单的,大概脱产1-3个月学完一套软件测试的课程后就可以投简历出去面试了;如果你是文科生,可能要花更久的时间,要有个心理预期。学习的时间也不是固定的,每个人学习的能力不同,学完一套课程所花的时间也是不同的。如果你的英语水平比较好,那也要恭喜你,学完甚至可以直接投外企。

入门要学什么?

软件测试的领域细分有很多,但功能测试是最最基础的岗位,无论你的目标是自动化测试、性能测试、测试开发,都必须会做手动的功能测试,就像是建筑的地基一样。

功能测试是软件测试的基础,主要是对软件的功能进行验证。就像我们平时使用各种软件,功能测试人员要确保软件的各项功能都能正常运行。比如一个购物软件,功能测试人员要检查下单、支付、退款等功能是否顺畅。功能测试的特点是操作起来就像你平时双十一在淘宝购物一样简单,很多人要问了,那我是不是不用学就可以做了?巧了,我就尝试过。当时我从网上搜索了一些面试题目先背完,在boss上投递简历后获得一个面试机会。面试一开始还好,靠着背过的面试题目和一些网上的帖子,大概知道面试者提问的意图,也给出了针对性的回答。基本的考验通过后,面试者问到一些技术性的问题就回答不上来了,当时面试官拿出一张纸和笔让我手写一个连表查询的sql,我憋了半天写了一堆shit,致此想要碰运气的我露出了马脚。我是一个比较谨慎的人,临走的时候还不忘确认一下这个岗位的待遇是不是和boss上写的一样,以及试用期的待遇。

现在回头想想这段经历还是可歌可泣,值得纪念的是我虽然失败了,但是它强化了我要潜心学习好相关知识入门的决心,这次的线下面试让我感受到测试工程师这个岗位前景还是不错的。然后我在网上开始找教学的资料,当时的整个行业学习资料比较散乱,我根据面试的要求东拼西凑了一套学习资料,但是没有多久我就学不下去了,主要原因有两点。第一是独自在家学习的效率比较低,学到一半想打会游戏,过一会肚子饿了,搞来搞去半个月进展堪忧,这个原因占20%。网上的资料良莠不齐,刚学的知识还没记牢,又被推翻了,这种感觉是非常痛苦的,产生了对知识可信度的怀疑,我想着学的慢不要紧,学错了就麻烦了。于是我就去报了个培训班,开始系统的学习。

自学vs报班学习

在培训班的日子按部就班,每天都有老师讲课,身边有同学一起讨论问题,唯独难受的是没有收入,导致那几个月吃的清汤寡水的。好在精神上比较有希望,一方面培训班的老师都比较有经验,教学的过程也不是很枯燥。我还记得有一个老师每天都坐高铁从上海往返杭州,她讲的知识偏理论,但是每次都是脱稿,那些测试的概念全部都烂熟于心,每节课的板书都是有几百上千个节点的思维导图,老师的专业像是给了我一记定心丸。培训很快进入尾声,要写简历找工作了,我是班上第一批找到工作的,薪资也是第一梯度,想想看还是很幸运的,不然还真不知道培训的贷款上哪儿去还…
在这里插入图片描述

关于培训班,这个因人而异,像是我当时自控能力不够、迫切的希望有一份工作,网上又找不到系统的教程,综合考虑后去参加的培训。即使如此,还钱的时候也是很肉疼。如果你正待业在家或脱产学习,想要有一个类似学校的环境学习,不想费力自己折腾学习资料,可以考虑正规的培训机构。如果你的自学能力尚可,目前有一份薪水不高但比较轻松的工作,每天的学习时间能保证,那么不建议你报培训班。今年已经是AI的时代了,充分利用好AI学习就是你最好的老师。
都2024年了,如果你还不会用AI学习,不仅是IT行业,在任何行业你都会被擅用新时代工具的人碾压。这是我用AI工具生成的软件测试学习路线,虽然只有一些大方向的基础框架,但还是很全面的,想要深入学习你只要再拿具体的知识点向AI提问即可。
在这里插入图片描述

准备面试

回忆起我在培训班学到的全部知识,也是屈指可数。要是当时有AI,我也不会去培训了,GPT就是一个最好的老师,可以互动问问题,它能给你正确的答案,这就够了。

入行必学四大金刚:

  1. 软件测试理论知识
  2. linux操作系统基本操作
  3. 数据库mysql基本操作
  4. 基础网络知识tcp协议等

第一点自然不用多说,万丈高楼平地起。
面试时肯定会考你:
软件测试是干嘛的?
掌握测试类型:了解功能测试、性能测试、安全测试、回归测试等不同类型的测试
测试生命周期:熟悉软件测试的各个阶段,包括测试计划、设计、执行、缺陷管理和报告。
项目中软件测试的人员参与的环节有哪些?
测试用例的设计方法有哪些?
一条测试用例的要素有哪些?

第二个是linux相关的知识要学习:

linux的基本操作有哪些命令?此问要能列举出十条常用的,例如登陆服务器、文件的增删改查、拷贝文件、移动文件、修改文件权限,稍微进阶一点的要会怎么搜索文件内容、上传下载文件…
这是你在工作中的工具,不会的话会步履维艰,一个简单的任务你要去先查一下怎么操作、还要确认这个操作会不会有风险。
这和开车一个道理,总要学会操作再去开,否则就是上车了在车上百度的面前的按键都是什么作用,左右脚哪个是刹车哪个是油门,很容易出洋相闹笑话。

第三是数据库mysql的知识:

  1. 数据库操作:创建、删除、使用
  2. 表操作:创建表、查看表结构、删除表、截断表
  3. 数据操作:数据插入、删除、修改、查询
  4. 索引操作:索引的创建、删除、查看
  5. 事务的理解,事务开始、提交、回滚

第四是基础网络知识:

网络知识向来是程序员面试的重灾区,就算是一个工作好几年的开发也不一定有好的网络基础知识。如果你面试的公司是涉及到网络、交换机、硬件,那么一定要好好掌握,如果是互联网项目,前两点掌握了基本够用了。

  1. 网络基础

    OSI模型,它有多少层、
    TCP/IP模型与OSI模型的区别是什么、
    什么是IP地址?
    IPv4和IPv6的区别是什么、
  2. TCP与UDP

    TCP和UDP的主要区别是什么、
    什么是TCP三次握手和四次挥手?(经典必考)、
    TCP的流量控制和拥塞控制是如何工作的?
  3. 路由与交换

    路由器和交换机的主要功能是什么、
    什么是子网掩码、如何计算子网、
    VLAN的概念作用是什么?
  4. DNS与DHCP

    DNS的工作原理是什么、
    什么是DHCP、
    如何配置一个DHCP服务器?
  5. 网络安全

    防火墙作用是什么?
    VPN的工作原理是什么?
    DDoS攻击如何防范?
  6. 其他

    HTTP和HTTPS之间的区别是什么?
    请解释一下什么是负载均衡。
    有哪些因素会影响网络延迟?

以上就是最基础需要掌握的知识内容,现在咱会了这些已经可以开车上路了,但是路上的信号灯和那些车道的标志咱还不熟悉,心里有点虚,甚至运气不好还遇上加塞的车,咱这么上路还存在安全隐患。

但是现在副驾有一个老司机,告诉你说先别慌,稳住!咱们见招拆招。

除了上面说的四大金刚,咱们还需要掌握一些基础的测试工具如JMeter、Postman等,达到熟练运用。

面试准备

上面说的问题都是技术类,是我们的地基。地基打好了,我们要做的就是把咱们的地面给它装饰一下,例如设计草坪、设计喷泉等,增加一些生活化的气息,毕竟环境好了人的心情才会好嘛。

面试前精心准备一份简历,不必多说。
面试前给自己打气,把状态调整好,注重面试礼仪不要迟早、着装干净整洁即可。
面试时不要紧张,遇到不会的问题说出自己的思考过程,展现给面试官你的思考能力。
沟通与表达:清晰的表达自己的观点,切记模棱两可。
情商问题:例如你们团队有冲突时怎么处理,开发和产品打起来了诸如此类,站在维护公司利益的角度阐明观点即可,切记不要太过随意,这可能是你给面试官留下好印象的机会。
在这里插入图片描述

面试复盘

成功的路不可能一帆风顺,失败了我们从中吸取教训,每次面试都做一个自我评价,找到下次可以改进的地方。基础不牢就夯实基础,表达不通畅就大胆表达说出来,张大嘴巴多练几次就好了,勇敢的人不仅能先享受世界,还能先获得高薪。复盘面试时也对面试官和公司进行一些评价,这里不必花费太多时间,体会面试官问问题背后的用意,体会说话的艺术,有助于你通过更多的面试。有些面试官问问题不喜欢直接问,比如说“你能接受加班吗?”其实是在判断你是否愿意为了公司多付出时间义务加班,这时候不要简单回答能或者不能,例如说“测试行业为了项目上线是难免要加班的,毕竟一个团队哪一环缺了都不行。”即表达出你对(国内)IT行业的了解,也表现出了你的团队精神。有的单位是强制要求每周加班几天到几点的,为了防止踩坑可以反问“咱们公司有强制加班么?“不建议去强制加班的公司,除非你就只有这一个offer且家里实在是揭不开锅了。这种公司对人的热情和身体消耗太大了,去了也建议尽早跳槽。

正式工作后

进入公司后,你会发现很多学习的东西都和单位实际用的对不上,别着急,这是正常的。先和前辈们了解清楚公司的业务、用到的语言、工具,这时大概率你还在试用期,可能拿着80%或者100%的工资,但是不要松懈,试用期不通过也是比较蛋疼的,而且你新入行就不通过很可能会对这行产生抵触的情绪。所以要每天做好工作的回顾和复盘,把你的一天总结一下,一个月后你就会发现哪些东西已经熟悉了,哪些东西还未掌握,对症下药即可。

先在公司呆住了,有还算可以的稳定的收入,也不要忘记给自己适当的放松一下,周末出去和朋友吃个饭联络一下感情,或是买点喜欢的东西奖励一下自己。接下来就是你的个人成长啦,学习你们项目用到的架构、中间件、开发语言提升自己。

个人职业发展

手工测试做久了了解一下python,做一些接口自动化测试、UI自动化测试,或是你走的更远,学习开发一个测试平台,开发一套自动化的框架,都能帮助你在这条路上走得更远。不用纠结学习哪种代码语言,按我的经验往往你会了解很多种,如果你想走得更远做自动化就选python深耕,想做开发的话不仅要先了解基础语法,还要深入了解web框架,例如python中的django、go中的gin、java中的spring-boot。这些语言我都学习了基础和web框架,现在我想做出一个自己的网站,我又要去学习前端的javascript、vue框架,所以学习什么语言并不是盲目的,而是出于你要干什么事这个目的去学习,学以致用。

我的成长路线

如你所见,我最初也是做手工测试,每天就在我们的网站上点点点,我还记得我刚入职时很开心,上午领了电脑一个下午埋头找出了20多个bug,领导当天就对我刮目相看。一开始我觉得这很平常,一个bug非常多的网站,只要用心找就能找出很多。几年之后我才懂得,做功能测试久了会变得麻木,整天对着网页做输入、点击、用眼睛判断对错,机械化的工作非常的无聊,it’s too boring!

在项目不忙的时候,我自学python,用pytest框架做接口自动化,做测试前先把我们的后端接口用脚本跑一轮,再去做功能测试,这时我体会到了为什么测试用例一定要分优先级,写自动化用例时先把高级的用例自动化掉,手工测试前你心里就有谱了,对这个版本重要的功能后端先有个质量评估,而这些都不需要花费你的时间,喝杯咖啡,等程序跑完出报告即可,我当时很开心用学到的技能减轻了工作量。

这个过程就像玩游戏一样,得到了正反馈,我更加一发不可收拾,开始学习UI自动化、写shell脚本辅助测试、甚至去了解了单元测试。在这个过程就像升级打怪,会遇到打不过的boss卡住,但总能有办法过关,你的角色在不断的升级。

进入测试行业6年,我不仅收获了很多新的技能,从基础的功能测试做到自动化测试、性能测试专家、测试开发。测试行业让我获得了更高的薪水,生活更有质量。很多人说测试是项目里最底层的,这种人是把自己的成见前行安到一个职位上,真的很下头。所有的岗位都有存在的意义,没必要踩高捧低,你问问那些说测试不好的人为啥不去当CEO还在当牛马人?每个阶段我都有一个自己的目标,学习对应的知识,做全栈测试开发是我的下一个目标,我要开发出一个自己喜欢的游戏风格的博客网站。

路不通时,及时换轨,才是对自己人生最好的负责。什么是围城?城里的人想出去,城外的人想进来。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[笔记] 编译LetMeowIn(C++汇编联编程序)过程

文章目录 前言过程下载源码vs2017 创建空项目 引入编译文件改项目依赖属性改汇编编译属性该项目还需注意编译运行 总结 前言 编译LetMeowin 项目发现是个混编项目,c调用汇编的程序,需要配置一下,特此记录一下 过程 下载源码 首先下载源码…

从开始实现扩散概率模型 PyTorch 实现

目录 一、说明 二、从头开始实施 三、线性噪声调度器 四、时间嵌入 五、下层DownBlock类块 六、中间midBlock类块 七、UpBlock上层类块 八、UNet 架构 九、训练 十、采样 十一、配置(Default.yaml) 十二、数据集 (MNIST) keyword: Diffusion…

MTK Android12 更换开机LOGO和开机动画

1、路径: (1)device/mediatek/system/common/device.mk (2)vendor/audio-logo/animation/bootanimation.zip (3)vendor/audio-logo/products/resource-copy.mk (4)vendo…

数据分析思维(一):业务指标(数据分析并非只是简单三板斧)

个人认为,数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python,更重要的是数据分析思维。没有数据分析思维和业务知识,就算拿到一堆数据,也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》&#x…

matlab测试ADC动态性能的原理

目录 摘要: 简介: 动态规范和定义 动态规格: 双面到单边的功率谱转换 摘要: 模数转换器(adc)代表了接收器、测试设备和其他电子设备中的模拟世界和数字世界之间的联系。正如本文系列的第1部分中所概述…

5G中的ATG Band

Air to Ground Networks for NR是R18 NR引入的。ATG很多部分和NTN类似中的内容类似。比较明显不同的是,NTN的RF内容有TS 38.101-5单独去讲,而ATG则会和地面网络共用某些band,这部分在38.101-1中有描述。 所以会存在ATG与地面网络之间的相邻信…

vue组件开发:构建响应式快捷导航

前言 快捷导航不仅能够显著提升系统的灵活性和用户交互性,还极大地增强了用户的操作体验。本文将展示如何在 vue 中实现一个既可自定义又具备响应式特性的快捷导航菜单。 一、实现思路 列表页 结构设计 定义页面结构,包含一个导航卡片和一个对话框组件&a…

事务管理与锁机制

title: 事务管理与锁机制 date: 2024/12/14 updated: 2024/12/14 author: cmdragon excerpt: 在数据库系统中,事务管理至关重要,它确保多个数据库操作能够作为一个单一的逻辑单元来执行,从而维护数据的一致性和完整性。一个良好的事务管理系统能够解决并发操作带来的问题…

《操作系统 - 清华大学》7 -1:全局页面置换算法:局部页替换算法的问题、工作集模型

文章目录 1. 局部页替换算法的问题2. 全局置换算法的工作原理3. 工作集模式3.1 工作集3.2 工作集的变化 4 常驻集 1. 局部页替换算法的问题 局部页面置换算法 OPT,FIFO,LRU,Clock 等等,这些算法都是针对一个正在运行的程序来讲的…

力扣-图论-12【算法学习day.62】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…

每日十题八股-2024年12月14日

1.类加载器有哪些? 2.双亲委派模型的作用 3.讲一下类加载过程? 4.讲一下类的加载和双亲委派原则 5.什么是Java里的垃圾回收?如何触发垃圾回收? 6.判断垃圾的方法有哪些? 7.垃圾回收算法是什么,是为了解决了…

智能引导小车充电系统设计(论文+源码)

1总体方案设计 在16*16点阵LED字符显示器的设计中,系统总体框架如图2.4所示,包括单片机主控模复位电路模块、晶振电路模块、按键电路模块、LED点阵驱动电路模块,蓝牙模块等构成。系统功能实现主要是利用系统在软件程序编写过程中&#xff0c…

【Vue】自定义指令、插槽

目录 自定义指令 是什么 作用 使用方法 定义 使用 自定义指令配合绑定数据 语法 自定义指令的简写 语法 使用时机 插槽 什么是插槽 默认(匿名)插槽 ​编辑插槽的默认值 具名插槽 使用方法 简写 使用示例 作用域插槽 自定义指令 是什…

顺序队列的实现及其应用

一、概念 队列是允许在两端(队头、队尾)进行插入和读出操作的线性表 默认情况下,队尾插入,队头读出(这一点和排队很像),先进先出FIFO 队中没有元素时称为空队 当队列两端都允许插入、读出时&…

Web安全深度剖析

1.Web安全简介 ​ 攻击者想要对计算机进行渗透,有一个条件是必须的,就是攻击者的计算机与服务器必须能够正常通信,服务器与客户端进行通信依靠的就是端口。 ​ 如今的web应该称之为web应用程序,功能强大,离不开四个要…

C# 探险之旅:第九节 - 循环(for):无限循环的魔法轮盘!

嘿,勇敢的探险家们,欢迎回到C#的神秘世界!在这一节里,我们将踏上一场关于循环的奇妙冒险,特别是那个能带我们无限次探险的“for循环”!准备好了吗?让我们一起揭开for循环的神秘面纱,…

解决Logitech G hub 无法进入一直转圈的方案(2024.12)

如果你不是最新版本无法加载尝试以下方案:删除AppData 文件夹下的logihub文件夹 具体路径:用户名根据实际你的请情况修改 C:\Users\Administrator\AppData\Local 如果你有通过lua编译脚本,记得备份!! ↓如果你是最新…

如何使用 Docker Compose 创建 LAMP 环境 ?

现如今,通过 Docker 容器化部署环境已经逐渐成为主流,特别是在部署像 LAMP (Linux、Apache、MySQL、PHP) 这样的复杂环境时。本教程旨在带您完成使用 Docker-Compose 建立 LAMP 环境的整个过程,同时还包括定制 PHP 环境的步骤,安装…

12.1【JAVA EXP4】next项目

next项目构建问题 详解一下这个页面 什么是Node选项? Node选项是指在运行Node.js应用程序时可以传递给Node.js进程的一系列命令行参数。这些选项可以让开发者控制Node.js的行为,例如设置内存限制、启用或禁用某些功能、指定调试端口等 --inspect 和 --i…

PyTorch3D 可视化

PyTorch3D是非常好用的3D工具库。但是PyTorch3D对于可用于debug(例如调整cameras参数)的可视化工具并没有进行系统的介绍。这篇文章主要是想介绍我觉得非常使用的PyTorch3D可视化工具。 1. 新建一个Mesh 从hugging face上下载一个glb文件,例…