测试人生 | 转行测试开发,4年4“跳”年薪涨3倍,我的目标是星辰大海(附大厂面经)!

news2024/11/30 6:34:55

image1080×500 66.1 KB


编者按:本文来自霍格沃兹测试学院优秀学员 @TesterC,**从运营岗位转行外包测试,再到测试开发,从待业在家到4年4“跳”进入 BAT 大厂,年薪涨了3倍!**他是如何完成如此励志的华丽转身的?

应学院的邀请,分享下我个人的测试技术和职业成长经历,仅供参考,请大家多多指教!

》特别提示:跳槽须谨慎!

频繁跳槽并不适合每个人,而且通常会对简历造成一定的负面影响。本文主要是记录在被动的情况下,我是如何打好一手“烂牌”的?不推荐诸君盲目效仿。

背景信息

我本科是电子类专业(偏材料方向),2016 年毕业赶上“就业寒冬”,当时感觉找份工作就不错了,只好“喜滋滋”地拿着”白菜价”,找了一个偏运营类的岗位。

谁曾想初入职场,就由于工作环境和个人的种种原因,我经历了“几近抑郁、被迫待业 1 年多的人生困境”(往事不堪回首~)。

2 年前,抱着“我必须坚持学点什么”的简单想法,我解锁了外包测试的“成就”

1 年前,我想证明自己,不是只能在**外包的“温室”**里才能存活,有幸加入了“中厂社畜”的行列。

今年,我更深切感受到舞台的大小对个人职业生涯的重要性,再一次选择跳槽加入了某 BAT 大厂 (Dream Company),拿到测试开发 Offer。

简单总结:一“跳”从零开始、二“跳”野蛮生长,三“跳”自我肯定,四“跳”初窥门径。年薪总包也从最初的不到 10w,到现在接近 40w,增长 3 倍有余。

而且我相信,我的职业征途,才刚刚开始。

艰难起步,摸黑前行

非科班出身 + 代码功底差,两大硬伤是我从非技术岗转行测试开发的最大阻碍。

但好在问题明确,既然落后,那就用力追赶。

狂补计算机基础知识,我一开始是从网上找视频资料入门的。但如果有时间有耐心,真的推荐大家看一看相关的书深化一下,比如下面的计算机基础四大“名著”:


而练习代码,则一定要动手敲。新手建议先用写字板,写完之后再扔进 IDE 编译运行。

在学会一些基础知识后,我逐渐能用 Selenium 勉强写点“照猫画虎,似是而非”的自动化工具。然后…,就卡在这个水平了。我深知自己的水平只是从 0 分逐渐在向“ 60 分及格”靠拢罢了,离更高段位的“测试开发工程师”还有很大差距,但苦于自学进阶太难,方向不明确,无从下手。

黑暗中的一束光

偶然在网上看到了霍格沃兹测试学院的课程介绍,我当时很激动,甚至一节公开课都没听就确认报了名。

》直接打动我的,只是一张课程内容体系的介绍海报。

因为我深切体会过“纯自学的痛苦”:收集资料、学习理论、应用场景、动手调试等一系列过程中,经常会遇到各种“愚蠢”问题不知道如何解决…令人抓耳挠腮,深感“无的放矢”的乏力感

加上测试开发所需技能之“”,于我而言,能坚持自学一两项已是不易,想靠业余时间,系统的自学完善整套知识架构储备,几近天方夜谭。

所以,当看到课程大纲对测试开发系统技能的全面介绍,还有多位大厂 10+ 年经验大咖讲师辅导,我感觉犹如在黑暗中看到黎明的第一束光,重新找回了技术进阶的信心。

测试开发技能体系梳理

在学院学习的这段过程中,我结合自己的工作对测试开发技能体系进行了梳理,并进一步提升认知。

在我看来,所有的测试都是依托业务(实际问题)产生的。所以,了解项目、掌握测试理论,是最基础的东西。否则再多的学习,对于测试开发工程师而言,都是无本之木,虚无缥缈。

对于前端项目的测试,“点点点”基本功属于 21 世纪生存必备,也没必要过多赘述;但在此之上,普通用户不会关注,但身处其中的种种场景,需要移动端专项测试覆盖保障。

对于服务端项目,因为隐藏在用户界面之后,并不是日常所见,面对的问题也并非移动端那么简单。所以在掌握接口测试之外,了解接口性能测试、接口安全测试也必不可少。

不管什么类型的项目,都离不开数据;那么了解数据库,了解数据库的种类、使用方法及特性,也是必备技能之一。

建立在“能够熟练地完成手工测试”的基础上,“提效”(提升效率)才成为追求的目标,这个时候,作为测试开发的价值才真正体现出来(我的个人理解,欢迎指正)。

Git 作为当下基本代码协作工具,对于测试开发工程师而言,应该就跟等价类边界值和测试工程师的关系一致。

对重复测试过程的提效,对于被测客体的不同,可以分为 Web 自动化、App 自动化和接口自动化。

对测试过程的前(数据准备、环境搭建)后(日志分析)行为,提效主要由 Shell 脚本实现。(毕竟大部分都是 Linux 做服务器的)

既然写了代码了,那进行调试,就是对自己最大的尊重;xUnit,应该是目前最通用的方案了。(有时候业务代码开发偷懒,需要测试帮写单元测试代码也说不定)

为了让自己 review/ 修改自己的代码,不至于是面对一座“屎山”;也便于其他同事一起维护,合理地设计自动化框架就需要提上议程。

再假设,真的有机会将以上全部在工作中落地,容器化(docker)和更高集成度(测试平台搭建)也是可选的方向。

除了对测试过程的各个环节进行优化,还有持续集成/交付这一业界流程优化方案。

如果把产品的设计、开发、测试周期,以时间线为轴,拉成一条自左向右的单向矢量;那么以传统测试过程为观察点,可以向前(即测试左移,测试开始之前)关注,如何协助产品明确需求、协助开发提升代码质量;也可以向后(即测试右移,测试结束之后)关注,如何在可接受时间内,发现线上问题,并快速响应。

以上各点,在学院的课程中均有涉及,可以说是特别完善了。学院的很多免费公开课,质量都着实不弱,感兴趣的同学可以去蹭一下~

学习心得

详尽学习内容,我就不再赘述;这里主要分享一下,我跟总结的一点学习经验,如有不妥,请大家指正。

》1. 把书读薄了,才是读进去

以 Linux 中三大神器(sed/awk/grep)之一 awk 为例,各位大可以试想这当中任一个,都是一本厚厚的书(不信的话可以 man awk,或者上对应官网 看一下)。

我理解的第一步中,所谓“读薄”,就是把具象化为抽象,定性地去理解工具的意义。

比如,echo "123 456" | awk '{print $2}'

我就简单理解成,awk 后跟的命令,需要用 {} 包裹,并给出相应动作。

再稍微复杂一点,echo "123 456" | awk '/^1/{print $2}'

我再更新认知,在 {} 前,用 // 可以包裹定位需要执行动作的位置。

更进一步,加入 BEGIN、NR、OFS 等字段,我对 awk 工具的认知也逐步完善。

哪怕原来的认知有误,再及时调整就行;犯错不可怕,可怕的是怕犯错,希望一步到位看清并理解任一事物的全貌是极难的

》2. 再把书读厚,才是学进去

读薄”是一种“纵向”的学习方法,通过对一点的不断实践,修改认知,再实践得以进行;那么“读厚”,我理解的就是一种“横向”的学习方法,通过类比、对比等方法,发现不同事物之间的关联和差异,打通知识点间的“次元壁”,可以更好地融会贯通。

还是掏出三大神器,共通点是什么?差异有存在于哪里?

我理解的共通点,就是都是对文本进行处理的工具;差异在于,grep 更倾向于对原文本内容的抽取,sed 更倾向于对文本内容的修改,awk 更倾向于对文本内容的分析。

那么在面对 “找到127.0.0.1开头行的上下两行” 需求时,我就不至于手忙脚乱地不知道用 grep、sed 或者 awk。(如果没用过的此类工具的朋友,可以搜索 grep –C 补充)

当然这里只是简单的举个例子,诸位也可以尝试对比 Python 和 Java 的运行机制,这种自己感兴趣的问题。

》3. 多问几个为什么

思考的多了,才能知其然也知其所以然,比如:

  • Selenium 到底是怎么用代码控制浏览器的?

  • 为啥 App 自动化在做 iPhone 的时候,我的 Windows 打死连不上?

  • awk 为什么叫 awk,不叫 bwk?

什么问题都可以。

每个人的关注点不同,所提出的问题也会不尽相同;不要觉得好像没有人提,自己提出问题就很羞耻。但问题提出了就要认真对待,努力解决,自己搜、或者在学员群里求助,都是不错的选择。

》4. 课堂以外的漫天繁星

数据结构、算法等等知识,其实不是哪一个课堂可以教授完全的;而且,有些内容也不是说课程体系没有涉及,就是完全没用的。说得功利一点,面试官问的时候,可能会更杂,如果完全答不上来也挺尴尬嘛。这些需要有意识的去补充学习。

  • TCP 协议,为什么是 3 次握手和 4 次挥手,2 次握手 2 次挥手行不行?

  • Python 的多继承中,数个不同继承等级的祖辈,继承了相同的远古祖辈(我编的名词)时,是什么样的策略?能用伪码表达一下嘛?

除了学院的课程和论坛资料等,这里也推荐以下我个人常用的工具和网站:

  • ProcessOn:免费的在线思维导图网站(限定14个文档,但真足够用了),多终端可编辑的在线导图,真的帮助我想到啥,就整理啥。

  • 力扣(leetcode):算法刷题,大厂题库你懂的(不要求快,先刷简单再逐步加难度)。

  • CSDN:技术网站茫茫多,反正我看的主要是这个;需要自己过滤掉一些标题党,拿来找灵感是个不错的选择。

》5. 勤学苦练

其实,无论什么形式的学习,一定不要止步于看一看;技术进阶没有捷径,即使大咖亲授武功秘诀,也得自己勤学苦练才能内化成自己的实力。就像给你了一个烤箱,可以烹饪多种美食,但如果想吃饭,还得自己动手。

大厂测试开发面试必备经验

首先是修改简历,这是一项极其重要且繁琐的“工序”,请一定要重视。学院课程体系中的面试指导相关内容,给了我很大的启发。这里也特别感谢学院的老师不厌其烦地帮我调整简历结构、内容组成及描述方式,让我顺利地迈出面试“第一步”。

不同公司,对不同职级员工的招聘,或多或少存在差异,我做了一个简单分类:

》第一类:业务能力面试

这是我们常规意义上准备最多的部分,包含测试理论、代码、数据库、计算机网络等等;如何准备这些内容,请参见我在学习心得板块里的分享。

这类面试中,被面试者往往存在一个误区:简洁明了回复面试官的提问,然后再等面试官的下一个问题。虽说谈不上错误,但是我认为这样的面试是很被动的。

因为无论是技术基础知识,还是工具使用,至少于我而言,是不可能完全掌握的。如果我只跟着面试官的提问回复,那就像一份80分的卷子,答对不加分,答错扣分。因为大部分面试官不会关注“超纲”的题目。也就是说,答对了,是理所当然;答错的点多了,就顺其自然的“不匹配”了。

所以,最好的策略是:要么赌,我答错的知识点数量,在面试官心理预期线之下;要么,主动出击,尝试找到面试官感兴趣,我也擅长的点,让“提问-回答”式的面试,变成一次分享。这样,即使有扣分,我也可以想办法一点点加回来。

举个例子,“给XXX简单设计一下测试用例吧”(这应该是最常见的问题了)

很多朋友老老实实等价类边界值写完功能点,再罗列一下性能和安全两类测试。然后回答在这里就终止了,但是面试官真的觉得问题得到了逻辑清晰完备的答复吗?

其实判定标准很简单,看面试官是否有追问;如果有,就证明你的回复方案,还可以更加完善。

比如我就被追问过,性能测试用什么方案、怎么观测性能指标等等问题;后来我把这类问题逐渐整合在一起,形成一整套回复的方案,再回头对比最初的回复,确实显得高级不少。

顺带一提的是,此类面试,切记注重复盘;没有复盘,就没有提升

》第二类:匹配度面试

说的比较宽泛,其实就一件事儿:你这人靠不靠谱儿(P.S. 我感觉以我 4 年 4 跳槽的履历,来谈这事儿其实挺可笑的)。

其实,在正式面试前,请大家一定要仔细思考两个问题。

  1. “你有什么规划?”

常规来讲,回复的是短中长期的职业规划,以及短期为达成自己目标,所付出的努力。我自己就曾比较迷茫,不知道自己要什么(要赚钱是肯定的,满大街都是要赚钱的,没啥意义),在 HR 面被拿下过 10 连斩,很痛苦。

  1. “你为什么离职?”

这类问题的答复,在网上有很多版本;JACK 马老师的经典两段论,也被传唱已久。但我个人建议,真的好好思考一下这个问题;不仅是为了“应付”面试,更是给自己找清方向,不至于在“频繁”跳槽后,失去本心。

每个人所处环境、理想都不尽相同,这类问题并没有所谓的标准答案。我个人的建议是:源自本心,稍加修饰。在思考完这两个问题后,需要注重避开所谓的“雷点”:比如个人规划,却只想不做;离职原因,全都是公司的错。一定要修改完善回答方案。

》第三类:“请你简单介绍下自己?”

之所以把这个问题,独立成一类,是因为在这个问题下,被面试者拥有最大的主动权,可以快速展示自我的优势项,拉高面试起评分;也可以突出闪光点,引导后续面试官提问的切入点。

目前我的自我简介,是按照如下思路梳理:个人信息(姓名、业务线、title)、业务方向、职业经历(工作年限、擅长业务方向)、当前工作概述(大致工作内容、怎么开展工作)、技术钻研方向(我目前主要在关注业务监控相关的,但也可以是自动化等等)、主要项目(项目背景、难点、创新点,个人作用、成绩等等)。

在设计自己的个人简介时,建议根据自己的核心竞争力(项目经历/技术理解等)酌情调整;简而言之,明确“基本盘”,辅以“加分项”。

另外,再补充一点点

对于第一、二类面试,既有简单粗暴的直接提问,也有要你介绍下XX项目,然后再从其中挖掘的形式。

在面对以项目作为切入方式的面试时,切忌流水账,背诵简历全文;简要介绍项目情况之后,着重讲解某一环节,也可以起到第三类面试中,引导面试官提问的作用。

但技巧总归是技巧,不要妄图用战术的勤奋,掩盖战略的懒惰;就跟学生时代老师挂在嘴边的那句话一样,“不要以为,你们在下面做什么小动作,我不知道”。

只有脚踏实地的奋斗过,才不至于让面试沦为一纸空谈。

写在最后

非常感谢霍格沃兹测试学院,提供如此高质量的课程和完善的知识体系,让我受益匪浅,获得测试技术和职业发展的飞速成长。也很开心能与诸位测试同学交流,在这里也分享一句鸡汤:

种一棵树最好的时间是十年前,其次是现在!

测试开发进阶,一起加油!

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

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

相关文章

12.4、后渗透测试--内网主机数据包流量嗅探

攻击主机: Kali 192.168.11.106靶机:windows server 2008 r2 192.168.11.134Metasploitable2-Linux: 192.168.11.105当成功获取目标机器的会话后,可以使用嗅探手段获取更多信息。前提:获得 meterpreter shell1、加载s…

centos7 安装 zsh + fzf(历史命令搜索神器)

文章目录zsh 安装用 oh-my-zsh 配置 zshfzf 安装结语zsh 安装 参考 用 yum 自动下载安装 zsh yum install -y zsh 安装完成后查看系统可以用的 shell cat /etc/shells 将 zsh 设置为系统默认 shell chsh -s /bin/zsh 退出终端重新登录 查看当前使用的shell echo $0 用 oh-my-z…

大二Web课程设计——美食网站设计与实现(HTML+CSS+JavaScript)

👨‍🎓静态网站的编写主要是用HTML DIVCSS JS等来完成页面的排版设计👩‍🎓,常用的网页设计软件有Dreamweaver、EditPlus、HBuilderX、VScode 、Webstorm、Animate等等,用的最多的还是DW,当然不同软件写出的…

ArcGIS:按属性选择要素、按位置选择要素、空间和属性的组合查询;属性表中长度、面积等的量算

目录 01 说明 02 实验目的及要求 03 实验设备及软件平台 04 实验内容与步骤 4.1 由属性选择要素 4.2 由位置选择要素 4.3 查询四川省乐山市范围内的气象站点。 4.4 查询与乐山市相邻的地市州有哪些 4.5 计算四川省各个地市州的面积。 4.6 查询单一栅格或者多个栅格的不同方法。…

HTML+CSS篮球静态网页设计(web前端网页制作课作业)NBA杜兰特篮球运动网页

🎉精彩专栏推荐 💭文末获取联系 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业: 【📚毕设项目精品实战案例 (10…

WPF入门第六篇 WPF的Binding

WPF的Binding 在传统的Windows软件中,大部分都是UI驱动程序的模式,也可以说事件驱动程序。WPF作为Winform的升级,它把UI驱动程序彻底改变了,核心回到了数据驱动程序的模式上面,这样,程序就回到了算法和数据…

[附源码]Python计算机毕业设计服装销售商城系统Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

【ESP8266-NodeMCU软硬串口通讯】

1. 前言 SoftwareSerial库允许在Arduino板的其他数字引脚上进行串行通信,使用软件复制功能(因此得名“SoftwareSerial”)。可以有多个软件串行端口,速度高达115200 bps。参数为需要该协议的设备启用反向信令。 1.1 要使用此库 请执行以下操作: #include <SoftwareS…

Prometheus的PromQL语法讲解和使用示例

目录1. PromQL介绍2. 基本用法2.1 查询时间序列2.2 范围查询2.3 时间位移操作2.4 聚合操作2.5 标量和字符串3. 表达式的合法格式4. PromQL操作符4.1 数学运算4.2 布尔运算4.3 集合运算符4.4 操作符优先级4.5 聚合操作1. PromQL介绍 PromQL提供对时间序列数据进行逻辑运算、过滤…

SpringBoot 配置文件

哈喽呀&#xff0c;你好呀&#xff0c;欢迎呀&#xff0c;快来看一下这篇宝藏博客吧~~~ 1. 配置文件的作用 对于Spring Boot项目而言,所有重要的数据都是在配置文件中配置的,比如: 项目的启动端口;数据库的连接信息(包含用户名和密码的设置);用于发现和定位问题的普通日志和异…

第09讲:路由开发

一、使用脚手架创建vue路由项目 项目的创建步骤参考&#xff1a; 在预设中选择Router 这里输入n&#xff0c;表示不使用history模式 选择In dedicated config files表示将配置分开存放 项目已经创建完成&#xff0c;使用VSCode打开&#xff08;部分win10 以上机型请用管理员…

[GO] 图书管理系统API

图书管理系统 1. 创建项目 2. 配置goproxy GOPROXYhttps://goproxy.cn 3. 添加格式化工具 4. 定义目录结构 |---- Readme.md //项目说明 |---- config // 配置文件(mysql配置,ip,端口,用户名,密码等) |---- controller // CLD服务入口,负责处理路由,参数校验,请求转发 |----…

缓存实现方式

为啥需要缓存&#xff1f; mysql关系型数据库&#xff0c;查询时需要磁盘IO&#xff0c;会消耗系统性能并且耗时&#xff0c;当数据变化量较小&#xff0c;并且响应要快的话&#xff0c;可以考虑使用缓存 服务端缓存方式有哪些&#xff1f; 服务端缓存方式&#xff1a; ①可以使…

git push/pull 超时问题解决

使用代理&#xff0c;发现git仓库浏览器可以访问到&#xff0c;但是本地 push/pull 时提示超时&#xff0c;这里提供一个方案供参考&#xff08;亲测有效&#xff09;&#xff1a; 修改系统的DNS为&#xff1a;114.114.114.114

基于java SSM框架的校园二手交易平台设计

一、项目介绍 游客&#xff1a;浏览商品&#xff0c;登录、注册 用户&#xff1a;浏览商品&#xff0c;发布&#xff0c;评论商品&#xff0c;我的订单&#xff0c;收藏&#xff0c;修改个人信息&#xff0c;搜索&#xff0c;回复评论 管理员&#xff1a;商品分类管理&#xff…

基于MATLAB开发AUTOSAR软件应用层模块-part13.AUTOSAR Dictionary-3 编辑AUTOSAR元素-SWC 和PORTS

配置SWC 此处可以配置SWC的名字和类型,类型包含: Application 应用组件 ComplexDiviceDriver 复杂驱动组件 EcuAbstraction ECU 抽象组件 SensorActuator 传感器执行器组件

学会python可以做哪些兼职?

前言 以我差不多四年的 Python 使用经验来看&#xff0c;大概可以按以下这些路子来赚到钱&#xff0c;但编程技能其实只是当中必不可少的一部分&#xff0c;搭配其它技能栈食用风味更佳。 1、爬虫 很多人入门 Python 的必修课之一一定是 Web 开发和爬虫&#xff0c;但这两项…

如何使用Github+picGo搭建图床???

最开始我使用iPic微博图床匿名上传&#xff0c;但是&#xff01;&#xff01;&#xff01;当我不小心上传了隐私文件后&#xff0c;删除特别麻烦(联系新浪客服,提供图片是自己上传的证据才给予处理)&#xff0c;因为白嫖图床&#xff0c;总担心挂掉&#xff0c;而且不利于备份。…

独立性能环境的重要性

独立性能环境的重要性 有些同学担心&#xff0c;由于性能测试环境和线上环境配置不一致&#xff0c;会导致线下环境得到的性能结果无法发现足够多的性能问题&#xff0c;无法对线上环境的容量评估/稳定性保障带来足够的参考。其中担心的重点有如下几点&#xff1a; 配置不一致&…

47 岁从华为退休,操作系统老兵转战 OpenHarmony 生态 | 近匠

【CSDN 编者按】开源生态建设作为开源发展的关键&#xff0c;在国内仍缺乏足够的多的成功先例&#xff0c;开源操作系统生态到底该如何建设&#xff1f;本期《近匠》邀请到专注于 OpenHarmony 操作系统生态共建的杨启彬与我们分享他的实践经验。 本期受访嘉宾&#xff1a; 杨启…