月薪过万这个话题,在现在这个百花齐放的职场里是个很流行的命题。
月薪过万对于行业大佬来说,可能是个不屑一顾的追求,但对于职场新人而言通常是个很实际的人生目标。
我怎么样能达到月薪过万呢,其实严格来说,要找到一份满足你薪资期望的工作有三个要素:
- 个人提升
- 求职技巧
- 你所在的地域
做为一个闷骚IT技术宅,我最能回答的主要是第一点:怎么进行个人提升,毕竟功夫到家才是硬道理。
软件测试从业人员可能都有这样一种感受,就是干这一行你要会的东西太多了,说的通俗一点就是知识库庞杂。
在这个信息爆炸的时代,我们可以学习的东西太多了,看起来很多东西都能实现个人价值的提升。比如去学一本驾照,比如去学游泳,学健康养生。。。
测试工程师学什么?
如果你想学习自动化测试,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的自动化测试教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流:798478386
15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!_哔哩哔哩_bilibili15天学会性能测试,通俗易懂详细教学,Jmeter性能测试实战(集群压测,全链路压测,性能调优,瓶颈分析)极速掌握,干就完事!共计27条视频,包括:1.【性能测试】什么是性能测试以及性能测试的价值和目的、2.【性能测试】真实企业性能测试指标详解以及指标测算、3.【性能测试】真实企业中性能测试流程以及细节剖析等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1B14y1D7X9/?spm_id_from=333.337.search-card.all.click
我个人会把测试工程师的学习提升路线分为四条主线:
- 测试技术
- 行业知识
- 职场能力
- 管理技能
在不同的路线上去深化,会引领你走上不同的职业发展道路。
第一:先说测试技术,大致罗列一下,测试工程师需要学习的东西:
- 测试理论
- 测试基础
- 测试方法论
- 测试思维
- 基于经验测试
- 静态测试
- 单元测试
- 工具技术
- 操作系统知识
- 服务器相关技术
- 数据库技术
- 基础测试工具
- 性能测试工具
- 接口测试工具
- 安全性测试工具
- 编程技术
- 脚本编程技术
- 白盒技术
- 自动化编程技术
- 测试开发技术
首先是测试的理论,有的人可能做了几年测试,积累了一些经验,就对这方面样的知识有些瞧不起了。其实我个人认为,理论始终是指导实践的最坚实基础。
做测试我们可以在工具、技能上面不断的雕琢,但其实测试的基础同样也是需要我们不断钻研的东西。
要学会从宏观的高度去看待测试工作:
测试的最终目的是交付高质量的产品;
产品的质量需求又是由项目性质决定;
测试工作不能脱离团队而存在;
测试如何服务于产品质量把控和风险缓解;
客户想要的究竟是怎样的产品特性和功能;
一个缺陷的背后,揭示的是怎么样的过程问题;
要学会从微观的角度去切入测试工作:
对于复杂的测试目标,有哪些方法论可以帮助我实现测试;
对于模糊的质量定义,我怎么挖掘其真实需求;
发现了问题,我怎么去对他进行分类和定位;
测试的数据怎么设计才能达到足够的覆盖;
测试用例怎么编排描述才能达到最好的效果;
如何进行反馈才能让发现的问题得到最有效的解决;
测试基础和理论就像一个侠客的内功,无论你的剑耍得有多六,最终决胜负还是要靠内力。
再说测试工具,做为IT从业人士,工具的使用可能是个人能力的最直接体现,是一种很外露的本事。
软件测试这个行业所涉及的领域非常广泛,从行业的角度来说,现在几乎所有行业都要上IT系统,连冰箱都要联网了。涉及行业的广泛,决定了我们在工作中可能用到的工具也种类繁多。
同时,软件产品质量的维度也非常的多,功能性、安全性、互操作性、负载、压力、易用性、兼容性、可维护性、可移植性等等等等。每一种质量的维度可能都有最适合去应用的一些工具。
还有一些操作系统级别和基础应用级别的工具,比如数据库,比如linux,比如JDK,中间件,我们也要去掌握。他们是我们开展测试工作必不可少的(你迟早会用到)工具。
在一定程度上,学会了一种工具,就意味着你测试工作的领域就被拓宽了一点,很自然的这会是你升职加薪的有效砝码。
不过在工具的学习上,还是有一些策略可以去应用的。不要被所谓工具的‘高大上’和‘酷炫感’这样的特性吸引,盲目去学习那些看起来很厉害,实际应用价值和范围却不大的工具。
不管是从升职加薪的角度而言,还是自我提升的角度而言,我们应该优先去学习市场应用面广的,最有用有实际价值的工具。人的精力和时间都是有限的,从最有用的学起,切忌好高骛远。先把基础的常用的工具学好,慢慢再去学习高阶工具是一个最优策略。
而且工具这个东西,其实是触类旁通的,等你学好了一部分工具,另外看起来高阶的那些说不定对你来说就已经很容易了,无非是去体验他的实际应用场景而已。
最后呢,学习工具不要只停留在应用级别,即不要只会用,要知其然知其所以然。工具的操作流程,不如他实现的原理对你来说更有价值。
接下来是编程技术,其实很多理论里把测试编程技术也归为工具的使用,不过我们把他单拿出来说。
也许有一些测试工程师其实是因为不爱写代码才做了测试这行,但是要在测试技术领域深化下去,编程技能又是不可或缺的。
是不是很纠结。
测试工程师的编程能力到底有什么用处呢?总结一下主要在以下方面:自动化测试、脚本编程,白盒/单元测试以及测试开发。
自动化测试是现在比较火的一个领域,不必多说。学些自动化测试编程,我们的目标应该不单单是应用,更应该深化到框架的编写。
脚本编程是脚本语言的应用,比如shell脚本和windows批处理这类工作控制语言,许多IT项目会很依赖这类脚本去做工作自动化控制,比如CI环境部署。
掌握编程知识同样也会帮助我们去完成白盒/单元测试这样的任务。如果我们在编程能力和测试能力双向深入发展,测试开发是一个很好(薪水也很高)的发展方向。
一个前提要说到的就是,测试工程师的编程技术门槛是比较低的。我们在学习代码编写以应用到测试工作时,一开始其实不需要多深入。
比如做为一个测试工程师去学习自动化编程,入门级级别来说,我们只用学习现有自动化工具和类库的使用,其实学习难度并没有想象的那么高。
随着学习的深入,当你有了更高的追求,再进一步去在编程领域内深造是个不错的选择。比如上文提到的去写框架,去改进框架,去引领一个机构的自动化测试。
学好了这些技术,不管是综合发展还是专项深造,我们的职业发展路线会向技术型深入。比如成为自动化测试工程师,性能测试工程师,白盒测试工程师又或者是安全测试专家等。这些职位比起测试基础岗而言,薪资水平是有着显著上升的。
第二:是行业知识
IT归根结底属于第三产业,第三产业是什么?通俗一点来讲就是服务业。IT产业是为其他基础行业服务的,最终我们要完成的事情是让传统的事务处理IT化,自动化,网络化。
这就牵扯到一个问题,不论我们做怎么样的项目、系统或软件,他的最终应用会是在另一个与计算机体系无关的领域,比如金融,比如零售,比如医疗,等等。
做为IT从业人员,除了本行的计算机应用技术以外,这些行业的知识就成为了我们需要学习掌握的第二学科。
将行业理解的透彻,是另一条IT人员必点的技能树,对于软件测试而言尤其如此。因为做为项目的测试和质量把控,我们只有非常了解软件应用的领域,才能更好的帮助我们对项目质量进行把关;而软件测试倾向的用户立场,也要求我们必须能够以专业的角度去衡量我们的产品在专有领域的适用程度。
比如在金融领域,真的要做好这一行的测试,财务领域知识、基金会计技能有的时候可能比你的测试技术更为重要。毕竟如果不精通这一领域的东西,你可能连系统到底要怎么实现用户/市场需求都把握不准,更不要提很好的把控产品的质量了。其他领域也各自都有不同程度的对行业知识的要求。
当然,有的时候测试工程师可能会有这样的经历,自己就像个雇佣兵,在数个项目之间来来回回,根本没有固定在某一个行业领域当中。客户要什么系统,我们就去测什么系统,在数个不同领域之中辗转徘徊、浅尝辄止,根本没有时间让我在某个领域中间去沉淀。
这是一种现实情况,在这种情况下,你对于某个行业的积累仍然可以帮助到你,但是你却很难成为该领域的专家。
不过如果你有机会在某个领域的测试工作中稳定下来的话,我会更推荐你去在这样的领域内深入,将测试技术和行业知识双向发展。
当测试工程师有了足够深入的某行业领域专业知识和技能以后,那么我们的发展方向就可以是‘领域测试专家’和‘领域测试咨询’。这样的人才在该行业内,一定是非常受欢迎的,高薪当然不成问题。
第三:是职场能力
职场能力可以说是一种个人素质和综合能力。
不论我们有多好的测试技术和行业知识,都需要有强大的职场能力去辅助,我们才能将自己的专业能力更好的发挥出来,否则别说当大牛拿高薪,可能工作能不能保得住都难说。
职场能力有哪些呢,我归纳了一下:
- 沟通能力
- 自律能力
- 学习能力
- 思考能力
- 抗压能力
- 规划能力
- 时间观念
- 团队精神
- 善于思考
- 承担责任
沟通能力:自不用说,测试工程师可能在一个IT团队里是沟通任务最重的,也是最需要沟通能力的。我们的测试工作强依赖着其他工作团队的产出,所以我们不但要沟通,还要会沟通;其次,我们测试工程又承担着项目质量反馈和过程改进的作用,这又要求我们要把测试结果和结论进行很好的沟通。测试人员不能不讲究沟通,沟通技能的差别是关系到我们团队地位和个人评价的非常重要的因素。
自律能力、时间观念和用于担当放到一起说,都是一个人责任感的体现。我们不鼓吹放弃自己应有的生活和娱乐,一心一意扑在工作上,做测试岗位上的劳模。但是在你分内的工作时间内,我们要尽心尽责的去做好本职工作,做自己该做的事情,该担当的责任要用于担当,舍得奉献。用自己的目标鞭策自己,不管你是为了养家糊口还是自我实现。进一步说,要主动去发现工作中的乐趣,干一行爱一行,切忌眼高手低。
学习和思考能力:要求我们有好的学习和思考意识,也要掌握好的方法论。IT行业不断发展,新兴领域不断涌入对我们的行业产生冲击,都要求我们必须肯学而且能学,在学习和工作中勤于独立思考,善于发现问题,总结问题,提出解决方案。创新能力则是学习和思考能力的一个进阶体现。
规划能力:测试基础工作说起来是由一些很繁杂的事项组成的。即使你的职位在测试路线上越走越远,你仍然摆脱不了一定程度上的杂事。所以这就要求我们有系统的规划能力,测试新人在刚入行的时候可能会觉得,细心细致对于测试这样一个‘找问题’的工种而言可能是最重要的素质,其实系统的规划能力才是我们做事的必备技能。即使是天生不够细心细致的人,通过有效的系统规划,也可以避免我们因为粗枝大叶而犯下错误,并且可以帮助我们对繁杂的工作事项和对象进行抽丝剥茧,把握主线,帮我们更为轻松高效无纰漏的完成工作。
抗压能力:做IT做测试,免不了会有工作上的压力,不管是工作时长上的,还是工作成果上的。要学会抗压,遇到挫折时不能轻易气馁,完成成果时戒骄戒躁。也要学会判断压力是否合理,加班的压力合理吗?领导的质疑合理吗?要学会科学的判断,科学的应对。其实相较而言,测试岗位的压力其实算是中等水平,不要被工作压垮,否则又何谈升职加薪。
第四:是管理能力
对于测试工程师来说,随着经验的积累和在这个行业的深入,转做管理岗可能是我们每个人都会去思考的一个方向。
当领导当然有很多好处,比如地位的上升,比如薪资的上涨--特别是在薪资的上限上,做管理和纯做技术还是有着明显差别的。
要做测试管理,除了有相应的机遇之外,当然我们个人在管理能力上也要做好准备。
我将测试管理能力划分为三个维度,分别是:
- 测试组织能力
- 测试技术能力
- 团队管理能力
测试组织能力让我们学会怎么去组织,策划,实施,监控和汇报一个测试项目。让我们能把测试这个工程给完成好,也要让他很好的完成风险管控、质量反馈和过程改进的作用。
测试技术能力让我们做为测试的管理人员了解技术在测试活动中的应用场景和机会,让我们有能力去把控一个测试工程对于技术的引入和使用。也需要我们有相应的技术能力,去指导具体技术在工程里的使用,说起来其实还是需要我们在第一点:测试技术上面下功夫。
团队管理能力是与人打交道的能力,对上沟通,对下管理,团队建设,团队提升,管理团队内部各种各样的人才,让他们能为你所用。这也是一门专门的学问。
学习好了管理能力,再遇到适合的机遇,我们就可以去向测试lead,测试经理,测试主管方向发展。
当然其实一旦你做到管理岗,后续的可能性就要增大很多,高管的机会大门就将向你敞开。取决于个人的把握,其实最后成为CTO,部门经理,VP都是有可能的,当然他就不属于测试岗位的直接进阶了。
以上我们说到的四个方向,大部分都不是独立存在的,在实际应用的场景中更多的是交织在一起,形成一个测试人员的能力体系。他们之中可以有侧重,这些能力上的侧重指引就我们的职业方向。
比如说在测试技术方面加重投入,我们的方向可能是测试技术专家和技术专项领域;
测试技术和管理能力双修,那么可能的方向可以是测试架构师,测试lead;
测试技术和行业知识双修,那么又可以成为领域测试专家。