【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还在当牛马人?每个阶段我都有一个自己的目标,学习对应的知识,做全栈测试开发是我的下一个目标,我要开发出一个自己喜欢的游戏风格的博客网站。

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

相关推荐
Roselind_Yi4 小时前
【快速熟悉容器】企业 Docker 从 0 到落地全流程(分角色版)
java·运维·redis·docker·容器·json·改行学it
这个DBA有点耶18 小时前
COUNT进阶:超大表的近似计数与HyperLogLog
数据库·sql·程序人生·学习方法·dba·改行学it
June bug1 天前
【AI赋能测试笔记】5基于文档用例生成系统及skills
笔记·功能测试·职场和发展·测试用例·学习方法
菠萝猫yena2 天前
【读书笔记】《测试架构师修炼之道》读书笔记
功能测试·测试工具·单元测试
菠萝猫yena2 天前
【评审需求】如何评审需求
功能测试
菠萝猫yena2 天前
【Monkey】Monkey测试流程与问题定位
功能测试
慧一居士2 天前
冒烟自测用例怎么写?
功能测试·单元测试·测试用例·可用性测试·模块测试
金戈鐡馬2 天前
压力测试与错误率统计完整实现
压力测试
天天爱吃肉82182 天前
新能源汽车单级车载电源及高频高密度DCDC设计开发技术入门指南
大数据·人工智能·功能测试·嵌入式硬件·汽车