字节在职5年,一个测试工程师的坎坷之路
几年前进入到IT行业,现在发现学习软件测试的人越来越多,今天我想根据自己的行业经验给大家提一些建议。
跟其他行业相比,做软件测试的岗位确实算是高薪职业,我们那个时候起步的工资并不高,而看现在很多毕业的学生薪资都是8000起步,工资越来越高是肯定的,因为现在都伴随着通货膨胀。目前高级测试工程师如果拥有两年测试经验,他的薪资范围最少都要在10K这个阶段,所以就导致来转行学习软件测试的人越来越多,毕竟现在做其他很多行业都赚不到什么钱。但是高薪并没有像大家想的那样容易拿到,很多人都认为身边的朋友有做软件测试月薪都几万几万的,但是我们往往忽略了他们在学习技术上付出了多少辛苦,只是看到了别人表面的风光而已。但我认为问题的关键还是很多人忽略了学习软件测试的难度,想转行学习软件测试的人虽然不少,但最后真正能成功的也就是百分之三十的概率,这些人往往学习能力强,有强烈的赚钱欲望,并且不怕吃学习的苦,肯付出时间去研究学习。
我用了五天的时候整理了今年我认为软件测试就业的主流技术栈大纲,由于内容实在太多,我就能弄成了一张长图,如果你需要的话,可以加我下面的卡片,直接管我要。
学习建议
1、一般来说,测试新人的话首先需要把基础打好,测试理论基础可以通过看一些经典书籍或网上也有很多免费的资源,选择前两本基础的看,你会受益匪浅。
2、刚开始不太建议加入过多技术群或其他论坛提问,初期遇到问题可以自己搜索自己尝试解决,当然需要控制一个止损点,不要为一个问题耗费太长时间
3、自学基础的同时一定要做好笔记,且一定是通过自己的理解后做的。可以使用思维导图把前后学到的东西给关联起来
4、读完一本书或一个阶段结束后,可以自测一下,通过找一些经典的笔试题或一些istqb中的题目,来巩固或查漏补缺,有针对性的再次巩固学过的东西
5、接下来可以找一些项目来做或去众测平台看一些基本的项目测试流程,包括基本测试文档的书写规范等等,testin众测平台是一个锻炼的不错平台,至少测试用例设计、执行及bug探索提交缺陷都是挺好的。
6、目前有好多平台会开设一些免费的公开课,通过技术讨论组可以接收消息推送,设定好时间听一些专业领域的测试方法,可以快速了解到大体的流程。(一定要经过严格筛选,选择质量高的,否则会浪费一大部分时间):
学习路线

第一阶段 测试基础
测试基础是软件测试最最最重要的部分,只要你是做测试,不管是什么测试,测试的基础、理论知识都是必须学会的。
最好学到什么程度呢,最好是能够理解,并能够用自己的话给复述出来。
毕竟面试初级测试的时候,问的问题都是从基础理论上进行考核的。
那测试基础有哪些内容呢?
测试的定义、测试的分类、测试的方法、测试的生命周期。
测试计划、测试方案、测试策略、测试用例的编写。
BUG的定义、BUG的分类、BUG的六要素、BUG的生命周期。
测试和开发流程的关系、瀑布流、V字形、W字型(双V)、螺旋型、敏捷等等。
PDCA、5W2H等分析管理的方法
质量管理体系CMMI(了解)
嗯,大概就是以上的内容吧,以上全部都是理论和文档能力、只要你肯背、肯写,都是能独立的掌握的。
第二阶段 常见的测试工具
测试工具永远是软件测试人员的得力助手,不能完全依赖工具,但也不能没有工具,在学习软件过程中,要著中软件测试工具的使用,下图覆盖初、中级软件测试工程师所需具备的测试工具,要想学好,下手学习吧。
混在软件测试职业圈,工具千千万,不可能每个都会用,至少要知道有哪些工具可用,什么时候该用什么工具,每个工具能解决什么问题,然后再深入应用几款工具即可,下面就带大家总结一下。
测试管理工具
禅道:简单好用,市场主流,互联网行业居多
Jira:简单好用
QC/ALM:复杂,收费,电信/金融行业使用较多
bugzilla:功能简单
svn:代码和文档管理工具
git:但是多分支管理比svn好
接口测试工具
Jmeter(开源)
postman
SoapUI
推荐使用 jmeter 和 postman。
性能测试工具
loadrunner:大而全,要学精通还是有点难度,重量级工具,过去和现在都是行业老大
jmeter:基于java平台的性能开源测试工具,其实也很强大,而且比较好用
Locust:基于python的一个性能测试工具
白盒测试工具
junit/testng:java下的单元测试框架
unittest/pytest:python下的单元测试框架
cppunit:跨平台的c++单元测试框架
PhpUnit:Php语言下的单元测试框架
TestBed:一个重量级的白盒测试软件,可以进行单元测试、集成测试、静态测试,军工行业常用
Klockword:静态测试工具,军工行业常用
持续集成工具
Jenkins:比较常见的一种CI工具
Hudson
网络测试工具
以HTTP/HTTPs协议为主,网络测试工具有:
wireshark
fiddler
charles
app自动化工具
appium:这个应该算是目前最流行的基于app的自动化测试框架了
uiautomator:安卓自动化测试框架,基本上支持安卓的所有事件操作
Monkey:安卓自带的测试工具
Monkey Runner:Monkey改进版,支持自己编写脚本测试,用Python语言
Robotium:一款国外的Android自动化测试框架,用法比较
web安全测试工具
appscan:算是用的非常多的一款工具了,扫描后能够将绝大部分的漏洞找出来
fiddler:网络抓包工具
burpsuite:暴力破解、抓包工具
skipfish:这是一个轻量级的安全测试工具,处理速度很快,每秒可处理2000个请求。
第三阶段 代码学习
好了,学完了以上两个部分,恭喜你,你已经是一个出色的初级测试工程师了。
接下来,你要考虑你的发展方向了
是成为一个自动化测试工程师呢?
还是性能测试工程师呢?
还是安全测试工程师呢?
啊!这个问题好难!我也不知道该怎么选。
反正我啥都会一点,哪个岗位都能去面一面。
关于方向的选择,看我的这篇文章
嗯,相信你心中已经有了答案了,那我们继续往下面说。
这个阶段,我们应该学习代码了,关于编程语言的选择,我推荐Java或者python。
还有数据库也是必须掌握的!在工具篇的学习里,我认为你已经可以掌握数据库的相关的应用了!
所以现在各位可以去学习编程语言了,
不过不用像开发那样,学的那么深入。
比如Java,只需要学完JavaSE的部分就够你用了。 python的话也是一样的,把基础的部分学完就行了。
总之前期你两者二选一的学习就OK了。
啥?你问我学的啥。
我当然是两种都会啊
哈哈哈哈哈哈哈,惊不惊喜!意不意外!
自动化方向
等你代码已经基本掌握了,嗯,很好,接下来就要学习各种自动化测试了。
各种单端测试框架:unittest(python)、pytest(python)、JUnit(java)
WEB自动化测试框架:selenium(适用于java\python\javascript)
APP自动化测试框架:appium(适用于java\python\javascript)
以上的内容,根据你学的语言进行选择。
appiunm和selenium根据你参与的项目进行选择。
不过无所谓了,反正迟早都要学会的。
这部分的教程太多了,你学会了编程的基础后,随便百度,好多博客论坛都有教程。
而且凭你那时候的水平,你都能轻松的看懂。
性能方向
对loadrunner和jmeter的掌握更加的深入。
可以手写脚本、脱离录制。
学会了多线程编程、能够手写java或者python、不用工具直接实现压测。
学习linux,毕竟性能总是和服务器打交道的。
学习系统架构的相关知识、方便你更容易的分析系统瓶颈。
说实话、性能方向的提示更难、因为需要掌握的东西太多了。
性能测试做深入了,基本上就是架构师的水平了。
可能你现在看着这个性能方向的学习一脸懵逼。
没关系、等你把上面的编程语言学会了你就不懵逼了。
安全方向
渗透测试
SQL注入
暴力破解
脱库
等等
其实安全测试基本上偏向于网络攻防了,也就是传说中的黑客了,不过我们都是好人,这个的发展方向就是白帽子。
推荐知道创宇的学习体系。
我估计你看到这里就更懵逼了。
没关系、等你把基础的东西学会就知道我在说啥了。
毕竟你现在还是一个小白嘛。
不要去纠结这种小事。
各位在这个阶段,正常情况都应该是中级测试工程师的水平了。
第四阶段 架构学习
前三个阶段学习完成后,各位就应该考虑怎么写代码更合理了。
怎么去测试更全面。
怎么才能更好的保障项目的质量。
我认为,在这个阶段,应该回头重新学习一遍测试基础。
因为这个阶段的提高是思想、方法的提高了。
上面讲的都是教你应该怎么做。
在这个阶段你要自己去发现、为什么要那样做。
跨过了这个阶段就基本上可以成为专家了。
学习都是水到渠成的,在这个时候,你应该已经掌握了不少框架了,甚至自己也能开发合适的框架了。
自动化测试框架、性能测试框架等等。
已经有了属于自己的一套东西了。
在群里或者论坛上去装逼、别人都会尊称你一声大佬了。
可能你也学会了一些其他的技术了,甚至在往全栈等方向跨进了。
总之,到了这个阶段就没什么学习路线了。
最后
相信你如果掌握了上图上面所有的知识技能,并且能够灵活的运用的话,月薪20k以上并不会是什么问题。

文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群自行领取即可,拿走不谢
相关文章:

字节在职5年,一个测试工程师的坎坷之路
几年前进入到IT行业,现在发现学习软件测试的人越来越多,今天我想根据自己的行业经验给大家提一些建议。 跟其他行业相比,做软件测试的岗位确实算是高薪职业,我们那个时候起步的工资并不高,而看现在很多毕业的学生薪资都…...

什么是web框架?
什么是web框架? 我们解释一个概念的时候,通常会用到其他更多的概念去解释它,如果听的人不理解解释它的概念,那么这个解释是失败的,因此首先要回答一下解释web框架中所用到的概念。 回答这个问题前,首先需…...

说一说关系数据库中的范式建模
面试中可能会被问到,来回顾总结一下,参考《数据库系统第五版》(王珊/萨师煊) 范式(normal form),我的理解是用来规范关系数据库中实体如何划分以及实体间如何建立联系来保持数据完整性的一种指导思想,目的就…...

Mysql是怎样运行的之Inno页介绍
一、InnoDB介绍 InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的。而真正处理数据的过程是发生在内存中的,所以需要把磁盘中的数据加载到内存中,如果是处理写入或修改请求的话,还需要把内…...

【华为OD机试模拟题】用 C++ 实现 - 找字符(2023.Q1)
最近更新的博客 【华为OD机试模拟题】用 C++ 实现 - 货币单位换算(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 选座位(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 停车场最大距离(2023.Q1) 【华为OD机试模拟题】用 C++ 实现 - 重组字符串(2023.Q1) 【华为OD机试模…...

JAVA 8 新特性 Lamdba表达式
Java8 新特性: 1、Lamdba表达式 2、函数式接口 3、方法引用和构造引用 4、Stream API 5、接口中的默认方法和静态方法 6、新时间日期API 7、Optional 8、其他特性 Java8 优势:速度快、代码更少(增加了新的语法 Lambda 表达式)、强…...

使用antlr实现一个简单的表达式解析
背景 之前在做游戏的过程中,我们经常需要解析一些公式,比如(对方攻击值-对方防御值)*2这种表达式,我们习惯于用代码写死公式,但是这种方式不够灵活,我们想要的是一种灵活的解析方式, 只需要策划输入一个任…...

2月24日作业
题目:通过操作Cortex-A7核,串口输入相应的命令,控制LED灯进行工作--->上传CSDN 1.例如在串口输入led1on,开饭led1灯点亮 2.例如在串口输入led1off,开饭led1灯熄灭 3.例如在串口输入led2on,开饭led2灯点亮 4.例如在串口输入led2off,开饭led…...

SpringBoot可以同时处理多少请求?
本文已收录至我的Github仓库DayDayUP:github.com/RobodLee/DayDayUP,欢迎Star ⭐⭐⭐⭐⭐转载请注明出处:https://blog.csdn.net/weixin_43461520/article/details/129207427 前言 前两天面试的时候,面试官问我:一个i…...

代码随想录【Day23】| 669. 修剪二叉搜索树、108. 将有序数组转换为二叉搜索树、538. 把二叉搜索树转换为累加树
669. 修剪二叉搜索树 题目链接 题目描述: 给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新…...

Wsl2 ubuntu 配置git 阿里云codeup
目录 创建一个跟你windows git使用相同的用户名,特别重要 配置git 用户名和邮箱 配置阿里云codeup 拉取仓库提示文件权限问题 给用户目录权限 配置项目文件别名 key_load_public: invalid format 怎么办? WSL ubuntu sshd: no hostkeys available -- exiting…...

展会邀约 | 昂视与您相约BTF第12届上海锂电展
BTF第12届上海国际新能源锂电展将于3月7日在上海新国际博览中心举办。此次展会以“锂想动力,共创未来”为主题,汇聚行业内一众翘楚企业与专业观众,为各位展商以及观众提供专业的锂电交流平台,了解与碰撞新产品、新技术与解决方案&…...

RK3568平台开发系列讲解(驱动基础篇)中断子系统框架
🚀返回专栏总目录 文章目录 一、中断硬件的组成二、软件框架三、中断常见概念沉淀、分享、成长,让自己和他人都能有所收获!😄 📢中断是指 CPU 正常运行期间,由于内外部事件或程序预先安排的事件,引起的 CPU 暂时停止正在运行的程序, 转而为该内部或外部预先安排的事…...

消费复苏迎“春”暖,服装行业如何开启“狂飙”模式?
2023年开年前2个月,全国多地消费市场的“热度”一直在持续上涨,商场、餐馆、娱乐场所等消费市场人气旺盛,消费复苏的“暖”意十足,一幕幕“忙”起来、“热”起来的场景,让各行各业的商家都对未来充满了期待与信心。在消…...

Springboot 整合Flowable工作流框架搭建
我们在开发自动化办公软件时经常会遇到各种审批流程功能,这个使用就需要使用到工作流引擎。目前主流的工作流引擎有Activiti、Flowable、camunda,其中Flowable是在Activiti的基础上开发出来的,基于BPMN2.0协议,它包括 BPMN&#x…...

ASE0510SH-ASEMI的MOS管ASE0510SH
编辑-Z ASE0510SH在SOT-89封装里的静态漏极源导通电阻(RDS(ON))为140mΩ,是一款N沟道中低压MOS管。ASE0510SH的最大脉冲正向电流ISM为15A,零栅极电压漏极电流(IDSS)为1uA,其工作时耐温度范围为-55~150摄氏度。ASE0510…...

Golang学习Day2
Go语言中的函数go语言中函数特性go语言有三种函数:普通函数、匿名函数(没有名称的函数)方法(定义在struct上的函数)。receivergo语言中不运算函数重载(overload),也就是说不允许函数…...

Android 中malloc_debug 原理详解
版本基于:Android R 0. 前言 最近上项目中遇到一个native 可能内存泄漏的问题,曾考虑使用HWASAN,但这个工具是针对整个系统,运行代价还是很高的。而笔者遇到的问题大致有所方向,能指定到某一个进程,针对单…...

D. Triangle Coloring【组合数学,乘法逆元】
链接 分析 题目要求我们去求出最优的染色的方法数。首先什么时候是最优的,这里只有两种颜色,不可能取到三条边,即蓝色为B,红色为R,有BBB,RRR,BBR,RRB四种组合,显然最多的就是取两条边,我们想取到…...

【读论文】AttentionFGAN
【读论文】AttentionFGAN介绍网络架构提取红外图像目标信息的网络辨别器损失函数生成器损失函数辨别器损失函数总结参考论文: https://ieeexplore.ieee.org/document/9103116/如有侵权请联系博主介绍 好久没有读过使用GAN来实现图像融合的论文了,正好看…...

ClickHouse 配置文件使用说明
本文主要介绍 ClickHouse 的配置文件。在 ClickHouse 中配置主要分为两类,一类是负责 server 端配置的,另一类是负责用户端配置的。负责 server 端配置的一般会放在 config.xml 文件中,负责用户端配置的一般会放在 users.xml 文件中。当然如果…...

如果不是互联网人,谁会找到这些神器?
一、上线啦 你肯定该问了,这个是什么鬼东西。它本来是一个创建自己网站的网站。 现在使用它可以创建自己的小程序,又不是有点小厉害了。 而且功能强大,还支持微信支付,分销,优惠券,营销等多种功能。 还有多…...

Neo4j优化
使用参数 查询参数 :params设置参数 :param actorName: Tom Hanks参数的冒号后要用空格使用参数用 $ MATCH (p:Person)-[:ACTED_IN]->(m:Movie) WHERE p.name $actorName RETURN m.released AS releaseDate,m.title AS title ORDER BY m.released DESC多个参数 MATCH (p:Pe…...

CF1692G 2^Sort 题解
CF1692G 2^Sort 题解题目链接字面描述题面翻译题目描述输入格式输出格式样例 #1样例输入 #1样例输出 #1提示思路代码实现题目 链接 https://www.luogu.com.cn/problem/CF1692G 字面描述 题面翻译 给你一个长度为 n(∑n<2⋅105)n \ (\sum n < 2\cdot 10^5)n (∑n<…...

关于物理像素,逻辑像素,像素比
关于物理像素、逻辑像素(css像素)、分辨率、像素比的超详细讲解 在日常生活中,有这样一个问题。同样的图片为什么在不同的设备上显示的大小是不一样的。🤒带着这个问题来说明一下。 一、物理像素 设备刚生产出来就已经固定了&a…...

JavaSE基础部分总结
JavaSe基础部分 文章目录JavaSe基础部分1.命名规范2.基本的数据类型3.方法3.1方法的基本格式3.2 方法的分类3.3 方法的注释4.数组4.1 数组的命名格式4.2 数组中存在的址交换的操作4.3数组Arrays常用的方法1. Arrays.asList(数组作为参数或者数据作为参数):2.Arrays.…...

C++基础知识
目录类和对象C static_cast、dynamic_cast、const_cast和reinterpret_cast1、为什么要引入这四种类型转化?2、应用场景。C/C类型转换的本质struct和class的区别为什么会诞生面向对象的编程思想析构函数的执行时机初始化 const 成员变量C const对象(常对象…...

2023/2/24 图数据库Neo4j的理解与应用
1 什么是图数据库(graph database) 十大应用案例:https://go.neo4j.com/rs/710-RRC-335/images/Neo4j-Top-Use-Cases-ZH.pdf “大数据”每年都在增长,但如今的企业领导者不仅需要管理更大规模的数据,还迫切需要从现有…...

适合视力障碍者的Linux
导读有哪些最适合视障用户的 Linux 发行版?让我们一起来看看。 如果有人视力障碍或失明,他们可能会依赖声音提示或其他交互方式(如盲文)来阅读和交流。 他们怎样才能使用 Linux 发行版? 嗯,一般来说&…...

Tina Linux 存储开发指南
Tina Linux 存储开发指南 1 概述 1.1 编写目的 介绍TinaLinux Flash,分区,文件系统等存储相关信息,指导方案的开发定制。 1.2 适用范围 Tina V3.0 及其后续版本。 1.3 相关人员 适用于TinaLinux 平台的客户及相关技术人员。 2 分区管…...