在软件测试行业摸爬滚打这么多年,即将人到中年,也会和大家一样面临转型或者跳槽的问题。这里总结了一下自我的看法。
对于找工作这个事情,有这么个普遍现象。工作供求无法匹配~
1、对于测试招聘者,特别是一、二线互联网公司的招聘者最苦恼的事儿就是招人。对于公司而言,想找到一个合适的人很难,每天各种撒网,简历看几百份,面试几十个人,能找到一个中意的小伙伴就不错了。
2、很多测试小伙伴发现找工作很难,特别是百度、腾讯这些大公司,他们需要有以下能力:代码要会写,要有软件架构能力,面试也总是能问到平时根本用不到的技术问题。而工作经验,沟通能力,学历、年龄…这些都成了面试官否决的理由。
为什么?
能力要求不匹配是最核心的问题。2010年后,互联网行业的真正兴起让国内软件开发模式开始缓慢调头,快速迭代的模式逐步兴起,开发周期越来越短,迭代越来越快,但系统越来越越庞大、复杂。原来的测试工作模式和工作范围越来越无法满足要求了。
但大量从业人员技能范围转变是一件很难的事情,行业是有巨大惯性的。从宏观上看大量QA技能转变跟不上需求转变是造成市场供求不匹配的主要原因。
应该怎么办?
那么软件测试的职业发展方向有哪些?作为软件测试工程师,又该如何为自己制订职业发展规划?
第一:只做手工测试,不懂系统实现的测试工程师的职业发展会越来越受限。 第二:能够转型成适应市场需求的同学将在近几年的时间获得超额回报(因为市场供不应求,企业不得不抬高价格来寻找这样的人)。 第三:对于个体来说,自我成长永远最重要,自己永远要对自己的发展负责,别依赖外部环境,自己想办法变成市场的香饽饽才靠谱。
那么,那些一面试就各种offer的人,为什么如此抢手?
这里也给我的个人观点,关于沟通能力、工作态度、面试技巧这些,在这里就不多说了,作为一位过来人也是希望你们少走一些弯路。
我今天主要从技术角度去说一下:
01、测试的核心-项目实战经验
一般来说,理论部分所有人都是需要掌握的,实际工作中理论不会作为考核人才的标准。这里不是说基础知识不重要,而是从面试角度来讲,如果你有完整系统的测试项目实战经验,你就超过了50%以上的应聘者。
什么叫做比较复杂系统呢?
投入50人开发出来的系统就可以称作一个复杂系统了。因此,复杂系统并不是很罕见。但是,如果你只接触一个简单的模块,甚至只是测试一个稳定模块的维护性开发,而不是通盘理解,不能说是测试过复杂系统。有从头到尾接触一个完整项目的经历很宝贵。
02、测试的基本-测试考证
从我们公司的HR来看,他们面试过数百人,经常会问几个问题:如果测试时间不够,你会怎么办?如果让你去测试一个你完全不熟悉的系统,你会怎么办?你平时会使用哪些测试设计方法?看似很稀松平常的问题,非常考验人。
因为大部分从业者都没有经受过系统训练和学习,工作多年,依然技能不足,意识跑偏。对软件测试之后的工作来说,ISTQB的考试以及系统的知识,建议去考个ISTQB证书,你就能超过80%以上的应聘者了。
03、一步步进阶测试开发
想要offer拿到手抽筋,最快的方法就是提升自己的技术水平。只会手工点点点注定走不长久,那如何从功能测试进阶到自动化测试/测试开发,需要具备哪些硬技能呢?(以前都是简单的罗列出一些知识点,这里具体来说一下)
1)具备一定测试经验。
我猜肯定有人会说:这不是废话吗?测试开发没有测试经验怎么做!但我要反驳你了,就是有些学习能力很强的朋友,可谓手到擒来。但对于我们普通人而言,只有设身处地的经历过测试人员的痛点和难点,才能切实解决他们的问题。
2)会使用常用重要的测试工具。
这里划重点,可能很多小伙伴依然在做手工测试,但如果想要胜任测试开发,你必须进阶自动化,会使用测试工具,比如ui自动化常用的selenium;接口自动化常用的Postman;性能测试常用的Loadrunner、jmeter;单元测试常用的testng、junit;安全测试常用的appscan,js注入,xss注入,sql注入等等。
3)具备测试工具开发能力。
下面介绍一些主流的技术栈:
测试工具系统框架搭建:
1)java+maven+SpringMVC ; 2)python+django
对于第一种框架,最好创建分层化的多模块工程,以便更好的设计代码框架和结构。通常dao层主要是和数据库关联;web层是controller,是前端和服务层的衔接;service层提供一些公共服务或业务处理逻辑。Maven工程有了之后,运用当前主流的框架-springMVC,将前后端数据库关联起来。
对于无代码基础,想入门测试开发的小伙伴,可学习第二种框架:python+django,较为易学易用。
前端页面:html,css,jquery,bootstrap,Echarts,前端页面是门脸,是使用人员操作的入口,也是数据输入和展示最直观的地方。
Css样式决定页面布局和美观度;jquery是一种js框架,极大地简化了 js 编程;echarts能够提供简单易用的常用图表,使页面更加有档次感、数据展示更加直观简洁。
后端服务:spring,mybatis,使用Spring框架可以简化很多基础性的工作,配置好后可以方便构建业务应用,是一个非侵入性的轻量级容器。
数据库:Mysql或Orcale 的数据库安装,库表创建,字段设计,常用的sql语句 系统:能熟练在windows或linux系统上搭建项目,日志查看等操作 服务容器:tomcat服务部署,nginx负载配置,docker使用 持续集成:git,jenkins 开发工具:idea和eclipse 代码调试:testng或junit的单元调试及debug和远程debug使用 ……
04、技能以外-你的个人特质
一般有如下特质会大大加分:快速学习、系统性学习、学以致用、系统性思考、强大的推动力、技术思维、突出的沟通能力、条理性、抗压性、乐观精神、抗挫折能力、迅速调整的能力、迭代改进的意识、ownership、团队合作、愿景和规划。 这些特性体现人的内核,有强大内核的人,做什么都行,技能暂时不足,也一定能补足。所以,在招聘的时候往往对是否录用的判断起决定性作用~
05、这里补充一条基础知识
这个你得会,操作系统工作基础原理与基础操作、网络知识如TCP/IP, HTTP知识、数据库知识、SQL的熟练使用、Web及移动端知识、安全知识、基本的安全攻防原理、软件工程/开发过程管理···
真正解决问题的机会,还是来源于工作中,关于技能提升,不管是自学也好,还是参加培训机构,都是需要一个正确的方向去引导你学习,这样学习起来也会比较轻松,不会走多余的弯路,所以说思路很重要。
学习的动力其实是一个很简单的东西,说成目标可能会更好理解一点,你想学成之后能达到什么程度,这样你也能在学习的过程中不被困难所难倒,也会有源源不断的动力促使你前进。
以上并不是给不想学自动化测试或提升更多的人们的一个借口。而是觉得测试者不要在工作中迷失了自己。目前就大量招聘信息来说,想要高薪得会以下几点:
会一门编程语言,懂自动化测试,懂Appium操作,元素定位、操作、等待、滑动等,深入讲解PO、unittest、yaml、配置文件、测试报告等知识,基于关键字驱动、Pytest和jenkins持续集成完成App测试框架设计与开发、测试工具、比如性能测试工具loadrunner,自动化测试工具selenium、Appium。
做为一名有8年工作经验的测试人员,接下来我想分享一下这些年来,我对于技术一些归纳和总结,和自己对作为一名高级测试者需要掌握那些技能的笔记分享,希望能帮助到有心在技术这条道路上一路走到黑的朋友!
下面分享我整理的这一份2022年可能是最全的软件自动化测试开发工程师发展方向知识架构体系图。
了解测试的基础技能,掌握主流缺陷管理工具的使用,熟练测试环境的操作与运维
Linux作为现在最流行的软件环境系统,一定需要掌握,目前的招聘要求都需要有Linux能力。
掌握Shell脚本:包括Shell基础与运用、Shell逻辑控制、Shell逻辑函数
自动化必经之路:前端开发基础知识以及互联网网络必备知识四、互联网程序原理
软件测试工程师必备MySQL数据库知识,不仅仅停留在基本的“增删改查”。
Fiddler,Wireshark,Sniffer,Tcpdump各种抓包工具适用于各种项目,总有一款适合你的
接口测试神器,你绕不开的强大工具:Jmeter。小巧灵活:Postman
了解自动化的目的,熟练掌握TestNG&unittest自动化框架,以及断言与日志处理
专业接口调用、测试解决方案。组建完整的web和接口自动化框架,Appium整体使用
揭开TestOps的神秘面纱,持续集成Jenkins框架烂熟于心
软件测试的彼岸:性能测试和安全测试,选个方向努力爬坑吧!
希望大家能照着这个体系在1-2年内完成这样一个体系的构建。
可以说,这个过程会让你痛不欲生,但只要你熬过去了。以后的生活就轻松很多。正所谓万事开头难,只要迈出了第一步,你就已经成功了一半,等到完成之后再回顾这一段路程的时候,你肯定会感慨良多。
合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方进群即可自行领取。