有前景,但是这是个不努力就滚〇的行业!
具体咱们聊一下以下几个方向
软件测试行业的发展背景
2020年软件测试行业发展趋势
软件测试工程师的“生命周期”
软件测试工程师的核心竞争力是什么?
软件测试工程师35岁以后怎么办?
(截止到2020年2月份,全文共更新9500字,预计阅读时间23分钟,建议收藏慢慢阅读)
相信我,这是一篇可以改变你认知的一篇回答,或许会直接影响你的职业规划!
一、软件测试行业的发展背景
微软引领的大测试时代
中国最早的对IT工程的启蒙和测试定位的探索大多来自于微软. 当年的大背景是微软故意放任windows的盗版, 并积极的输出他自身的IT生态技术栈到中国. 中国从政府到民间几乎全部使用了windows. 中国有大量的微软认证的VP等各种专家. 微软和他的附属生态带给中国的测试行业影响简单总结下就是
强调工程的严谨性. CMMI一统天下. 无数中国公司为了通过这个认证费尽脑汁. 大部分公司通过它也不是为了自己的规范, 而是为了能拿到政府或者国外机构的外包业务.
测试和研发的比例. 因为都是客户端产品. 如果交付出去出现质量问题是很难解决的. 所以测试被放在一个非常重要的位置上. 测试与研发比一度是1:2
外包公司发展迅猛. 短短的几年. 中软, 东软, 软通动力, 博彦等公司迅猛的发展起来.
51testing作为作为中国最早的测试社区门户迅速发展起来
测试技术的启蒙和发展. 主要是自动化为主. 在十年前的年代, 听一些前辈说, 有公司做性能测试, 就是有个人用哨子吹下, 然后一屋子的人就开始一起点. 所以QTP和LoadRunner出现后就迅速占领了市场.
2. 互联网时代的测试发展
互联网世界开始爆发 测试行业的主要变化是
CMMI逐渐被互联网公司忽略. 国内崛起的公司有自己的业务, 他们不屑于不实用的认证. 开启自己独特的野蛮发展的节奏. 这也就是那些外企工作的白领有优越感的一个原因.
测试技术大发展. 不再是简单的自动化了.开始进入了细化. 比如单元测试, 代码动静态测试, 接口测试, 持续集成, 各种端的自动化测试. 大家也不再迷信UI自动化, 分层自动化, 持续集成, 测试既服务等理念开始流行.
测试工程师技术型转变. 以前的测试工程师就是点点点, 不会要求技术的. 现在BAT等一线公司已经全部推行技术笔试了. 可以说不懂开发基础已经难以发展了. 点点点测试工程师已经退化到只能用于用户端的功能校验工作了.
测试研发比从1:2下降到了1:3 1:5
3. 移动互联网+创业浪潮时代的测试发展
移动互联网爆发, 技术栈和云计算也发展迅猛, 这让小公司的生产力发生了飞跃. 从而催生了一场席卷全球的创业浪潮. 这股浪潮起源于硅谷, 并迅速通过"copy to china"模式烧到了中国. 另外一个是中国大环境的变化, 导致了外资企业生存困难, 很多优秀的企业都从中国撤离.
这期间的测试行业发生了如下的变化
服务于国内企业的测试工程师开始增多. 外包测试工程师, 外企工作白领测试工程师都被外企撤离影响到了, 开始逐渐转到国内公司. 外企工作的优越感逐渐丧失, 国内的工程师开始崛起.
敏捷理念盛行. SCRUM和XP理念被迅速的普及. Scrum迎合了产品管理的需求, XP迎合了工程化发展的需求. 各自发展都很迅猛, 然后逐渐衍生了更深入的CI CD和devops等模式.
测试研发比. 下降到1:8甚至更低. 其实BAT都向往google的1:10. 只是国内目前做不到.
大质量部模式被打散. 为了提高运作效率. QA或者测试工程师团队被逐渐分拆到各个具体业务部门. 大质量部模式消失意味着测试工程师的发展开始遭遇天花板. 很多人还没能体会到这个模式带来的巨大影响.
测试技术发展. 测试平台得到了很大的发展. 研发工程师, 技术型测试工程师也开始逐渐发挥价值. 比如新型的全链路压测, 全链路追, 测试监控, 各种接口测试和mock平台, 各种云测和专项测试平台. 独立的测试服务公司也开始层出不穷.
4. 大数据和智能时代
人类已经进入DT时代. 大数据, 机器学习, 深度学习, 图形渲染等技术栈已经成熟了. 随之而来会形成新的生产力并落地.
这个阶段大家刚开始感受到. 我暂时不做评论.
二、2020年软件测试行业发展趋势
之所以列举过去的变化其实是为了想告诉大家, 不要认为目前的模式就是行业的现状. 目前各家公司仍然是处于不同的理念和不同的历史阶段中.
没有绝对的对错. 只有适合与否.
那么处于2020年,软件测试这个行业又将如何发展呢?我谈一下几点,如果你处在这个行业,一定能体会到我说的对不对。
表面"衰落"的测试行业
鉴于过去的大形势变化, 不懂技术的测试工程师会逐渐被淘汰出局. 一波测试工程师的失业潮是在所难免的.虽然早期我也呼吁身边的人赶紧脱离落后的业务体系, 脱离落后的测试技能, 但是看到很多人越来越生活艰难, 也是挺心痛的. 包括测试工程师的需求越来越少, 招聘职位也越来越少, 典型的新崛起的巨无霸公司比如facebook早期都没有QA. 甚至前几年一度有QA团队是否值得存在的争论. 表面看起来是测试行业衰落了.
有趣的是大家讨论QA团队是否值得存在的初衷, 是为了更好的保证质量. 这还是挺耐人寻味的. 绝大多数的公司, 都是非常支持QA部门的存在的, 问题在于QA团队的存在的价值到底是大还是小. 过去陈旧的测试体系, 落后的测试人员能力, 冗长的测试流程是被整个IT行业诟病的一个关键.当研发的生产力在逐渐的提升, 运维的部署在逐渐的自动化, QA所带来的价值和耗费的成本就越来越不能忽视了. 甚至成为了一个项目的最大的成本. 这是任何一家公司都无法忽视的问题. 早年阿里巴巴的高管曾经集体去硅谷拜访新崛起的巨无霸, 得到的结论就是他们的流程和执行力比国内强很多. 甚至facebook早年都没有QA就成长为大公司了.所以阿里就迅速推动了流程的裁剪. 这部分包括裁撤SQA, 裁撤需求分析师, 裁撤项目经理, 削减QA名额. 进入产品, 研发, 测试三足鼎立的最简模式. QA会不会被撤掉也取决于这个部门的价值. 所以不要想当然的觉得"存在即合理", 现在部分的公司已经在试验"无QA"的模式了. 互联网唯一不变的就是变化
比如一个典型的例子, 在搜索, 推荐, 机器学习等方向的算法测试是很重要的领域, 是需要专业的测试工程师参与的. 这个行业能容纳很多的测试团队. 但是测试行业这些年就没形成对这个领域的正确测试方法, 结果最后丢失了这个市场. 现在都是研发自己保证了. 因为找不到合格的测试工程师去保证这个业务.
同样在性能测试领域也是如此, 随着性能测试平台, 全链路压测, 性能监控, AB Test, 云压测这类技术和服务的出现, 性能测试工程师的需求也会缩小. 越来越多公司里的性能测试都已经变成研发主导了. 丢失了这块的业务, 性能测试QA的需求量自然会受影响.
一定要记住, 业务空间决定QA的生存空间, 这是所有行业都通行的道理. 如果你不能满足业务需求, 就会被淘汰出局, 要么选择退守防御要么选择勇于接受挑战
那测试行业的未来是什么样的那, 很多人会担心. 不过我还是整体乐观的.因为我喜欢整个行业, 这些年也一直在进行不断的思辨. 说下我的看法
- 测试从业人员的规模
从业人员规模跟生产力负相关, 跟业务规模正相关. 以后能有多大取决于技术和业务规模的双重因素.
首先是大环境因素, 随着各种行业的互联网化, IT行业在扩大, 外卖, 美甲, 甚至是无人机汽车航天产业都将成为科技公司. 研发的队伍会扩大, QA的队伍自然也会整体扩大. 前提是QA自己要跟得上时代.
其次是随着生产力提升自然就不会需要这么多人的. 哪个行业都这样, 测试行业并不特殊. 就跟汽车行业一样. 早年堆人, 然后堆工具, 堆技术, 上机器人, 改进流程. 行业技术改进, 测试技术改进, 测试工具和测试服务的改进, 都会一定程度提高了测试效率, 减少了成本. 这种改进会导致QA的团队更精炼高效. 人数多意味着大家的价值跟富士康工厂里的工人一样廉价. 追求高附加值才是正确的路. 这对公司和测试团队都是双赢的.
第三个因素是行业地位. devops的流行是推动了研发和运维的密切合作. 一旦这个阶段完成, 产品的生产部署会非常的流畅. 随之而来的就是问题会越来越早的暴露, 大家对质量会更加的重视. 到时候就会进入一个新的时代, DevQA. 运维逐渐会管道化, Dev和QA会成为新的主角. 只是到时候能撑大局的不一定是现在的软件测试工程师了 会是新时代的测试工程师.
测试行业会越来越专业. 人才, 技术, 工具, 开源平台, 服务会越来越多. 越来越完善. 术业有专攻, 专业化分工仍然是大趋势. 技术层面上也会有创新. 以前的测试只能留下测试用例和业务知识文档 没有什么连续性积累. 随着接口测试, 质量监控, 覆盖率分析, 业务建模等技术的突破, QA也会形成自己稳定可积累的业务数据, 并逐渐形成自己的平台和业务. 业务空间+技术门槛的双重因素是我坚信QA部门能长期存在的一个核心因素.
- 测试行业的管理会逐渐扁平化
几乎大部分的互联网公司都在分拆业务和QA团队从而提高执行力. 所以管理上百人的总监职位会越来越少, 而管理百人以下的总监会越来越多. 不排除少量的巨无霸仍然没有改变. 或者有些烧钱的初创公司倒行逆施. 其中这些测试管理者会遇到一些新的挑战, 比如更高层是研发出身居多. 不懂研发体系几乎没有发展空间了. 测试管理体系失去了上层建筑, 对未来的影响还是深远的. 会有阵痛, 但是结果肯定会是好的
- 测试技术人才需求增多
原因是多方面的. 大公司因为分拆的问题. 不再有统一的测试技术支撑部门, 所以分拆之后的每个团队都需要组建对应的职能团队, 对测试技术人员的需求反而会增多. 中小型公司也苛求质量保证效果, 不止是要好, 而且要求更快, 也需要大量的技术人才. 这几年通过各种招聘网站的招聘job的描述也能看得出来.
- 外包测试的灾难和新生
原来做欧美日韩外包业务的公司会因为国内互联网的发展逐渐式微, 他们需要转型做国内.但是国内对外包业务也大多排斥, 而且外包业务在效率沟通管理上都有诸多弊端. 其自身也无法承载对测试工程师的培养和长期发展. 所以这几年会有大量的外包测试工程师转型. 这方面需要有新的优秀的外包服务公司.能做到有自己的测试服务, 测试技术和高级的测试研究工程师才行. 比如东软也开始做自己的各种云测平台之类的, 就是一种为了迎合新时代的变更.
- 不懂开发的测试工程师已经是新时代的文盲
第一个是工作上已经没有太大的晋升空间. 第二个是也很难跳槽. 最好的结果是凭借多年的经验转管理. 我跟行业的很多测试经理交流过, 大部分工作超过6年的人, 在测试执行上会倦怠, 在测试技术的改进上已经无法入门, 还不如招实习生. 相对来说, 有技术基础的人在工作8年以上仍然会保持自己的学习热情.所以未来测试团队的架构基本会是多数业务测试工程师+少数测试专家+测试经理的管理模式. 以前不识字的是文盲, 后来是不识英文的是文盲, 在继各国呼吁加强对IT技术的重视后, 新时代的文盲就已经快是不懂开发的人了.testerhome社区的成立的初衷就是希望唤醒整个行业对测试技术的重视.
- 测试行业的门槛增加
以前处于发展期, 行业对人才的苛求是第一位的. 现在随着大公司发展稳定, 招人已经稳定了.他们基本只在211院校校招. 社招也看学历. 初创公司多是融资烧钱为主, 在学历上和阅历上也是看的很高. 能够不拘一格降人才的公司会越来越少. 我之前推荐了不少同学去其他优秀的公司, 其中有一部分同学就是技术不错, 但是学历未过关. 所以希望大家技能和学历上能够好好的重视这个问题. 除了学历门槛, 如上一条所说技术门槛也存在. 所以加油吧, 少年!
- 测试行业的薪资在提高
测试行业经过自身的净化洗涤会有新生. 典型的变化就是薪资从以前的3k-15k的范围, 整体提升到1w-3w之间. 技术含量的提升, 责任的提升必然会带来整体的回报. 现在只要技术好, 学历没问题. 工作3年拿个两三万的月薪是很平常的.
后面会详细说薪资的方面。
- 研发工程师进入测试领域
这些年整个行业对测试行业的发展非常不满意, 通俗点讲, 大家都觉得测试很Low, 但是又不能没有。研发提交项目给测试的心情就跟以前过年要去火车站排队买票一样. 要申请测试资源, 给测试讲解业务和实现, 遇到比较low的或者新入职的, 连搭建环境都不会还得手把手教. 研发只是修改一行代码, QA或者测试那边就炸锅了.各种流程足以让研发头发都能掉好几根. 作为参考对比, 再思考下运维. 当年部署个环境跟提交测试很像. 要申请运维的介入, 要申请机器资源, 然后提交部署文档, 还要明确基础环境, 依赖库等各种细节的版本号. 遇到本地行发布环境不行之类的问题还得跟运维撕逼. 当年运维行业还流行着一句, "人"才是最关键的发布保证者. 而现在随着持续交付和devops的流行. 发布都已经做到"丝般柔滑"了, 一键发布,自由选择灰度,平时的发布甚至都不需要运维参与. 尝试了新模式的甜头后, 对测试行业的弊端已经很难忍受了. 所以在优秀的测试工程师和架构师难找的情况下, 已经有越来越多的公司选择直接用研发工程师来顶了. 他们的追求很简单. 单测->接口测试->基础的冒烟测试, 能够做到自动化就可以了. 如果能像运维那样做成测试即服务就更完美了.
三、软件测试工程师的“生命周期”
聊完了行业背景和发展趋势,接下来聊一聊关于你自身的发展规划。
注意,接下来聊的就关系到你的薪资了!
产品的生命周期是从准备进入市场到淘汰退出市场的全部过程,一个软件测试工程师的职业生涯的周期也是这样。如何把“生命周期”的每个阶段都最大程度的利用好,是我们每个软件测试从业者都应该关注的问题。
- 入门阶段
这个阶段你或许是刚从学校毕业,也或许是从其他行业转行,就会对软件测试行业产生一系列的疑问,比如前景怎么样?薪资高不高?加班多不多?零基础应该如何学习?需要学会哪些技能才能找到工作?
其实这些都不重要,重要的是你一定要搞明白这个行业是做什么的,你是否适合这个行业。
前些年培训大热的时候,很多同学听到“前景很好,互联网薪资高,不用写代码,不用加班,越老越吃香”的吹嘘,便一股脑的投入到这个行业来。干了几年,钱没挣到,技术也没有沉淀,混不下去只能再次转行。
如果你像题主一样,还没有进入这个行业或者刚开始了解,那么几个问题你一定一定要进行思考:
你是否能够接受互联网行业的工作节奏?
你是否真的热爱这个行业,起码有足够的热情愿意去钻研?
你的学习能力是否能够让你在日新月异的技术浪潮中不掉队?
首先作为互联网行业,必然会有加班,即使不是996,也必然会有紧急任务或者上线,问下自己是否能够接受这样的工作节奏。如果赶到要上线了,通宵也是常有的,第二天早上你下班了,你的同事刚刚拎着早餐上班。
其次,如果你对这个行业有者基本的热情,或者说不讨厌这个行业,那么起码你能够有动力去钻研,去自我驱动,这样才能保证你的工作对自己不是一种煎熬。
最后,互联网行业,技术日新月异,能够在软件测试这个行业长久的走下去,必然要不断的学习。如果讨厌学习,或者上进心比较差,那不建议你进入这个行业。
如果上面3个方面都没有问题,那么恭喜你可以进入下一个阶段。2. 初级阶段
到了这个阶段,你已经开始上手做测试了,哪怕是最基础的点点点,你也已经知道互联网企业测试流程是什么样子了,可以说这个时候是你最朝气蓬勃的时候。
你在工作中遇到问题时的窘、遇见大神时的敬仰,都会转化为你努力求知的动力。阅读书籍、看公开课、逛论坛,你的各种知识和技能会在这个阶段急剧扩充。
但是这个时候,也尤其要注意不要病急乱投医。
这个阶段我不建议基础没有打牢,就开始学习自动化,最后啥也没有搞明白。业务能力才是最重要的,自动化玩的再溜,也只是个辅助。基础不牢,地动山摇。![3. 中级阶段
这个时候的你,或许已经做测试有1-2年的时间了,很多工作也得心应手,薪资也基本稳定,技术上知道的也比较多,但是仍然感觉自己什么都不会。
对,你缺少某个方向的深入研究!
处于软件测试行业的中级阶段,必然要面临的一个问题就是我该朝哪个方向去深入发展。自动化还是性能?Python还是Java?APP还是web?
我以我的经验给你一点建议:
关于发展方向
无论APP测试也好、web测试也好,或者想研究自动化,或者想专精性能,都是可以的。没有什么所谓的好不好,重要的是你喜不喜欢,如果你觉得性能做着心累,没有自动化测试有成就感,那就一门心思去研究自动化测试。只要往某个方向专精,一段时间后你就可以成为大神。
关于语言选择
以前我专门写过一篇关于软件测试工程师语言选择的回答,简单来说,就是刚接触的时候,可以选择Python,上手更快,更加灵活,到了高级阶段,应对更大的业务形态,还得学会Java。做技术的,会很多种语言很正常。
自动化测试还是性能测试
对于自动化测试,不要被其牵着走,不要过分夸大作用,也不要为了自动化而去自动化。
性能测试某种程度上会比自动化更难搞定。代码、运维、计算机原理、数据库、业务等等,你都要搞懂。写脚本或者执行都还好,难的是性能分析和调优。当然如果这个阶段你对自己的要求还不是很高,那么掌握性能测试的基本流程和简单的性能分析就可以了。更多的比如搭建压测环境、监控性能指标等等,还是要在实战中去积累经验的。
对于这两个方面,我建议都去学习,因为目前的招聘需求,都已经是标配要求。4. 高级阶段
如果你已经是软件测试行业的老油条了,那相信你很多“坑”都已经踩过了。
到了这个阶段,可以说是软件测试工程师的最大的职业发展瓶颈。业内的大神们,也都是突破了这个阶段,才获得新的发展。
一般在这个阶段,会面临3个方向的发展:技术专家
这条路较为坎坷,但是也最为抗打。如果你不善于人际关系,不问世事,又对技术有这浓厚的兴趣,那么建议你走技术这条路。平时多撸代码、多和开发沟通,写一些测试平台或者测试工具。同时开发能力也要不错,这样才能成为一个高阶的测试开发工程师。
管理方向
做技术累,做管理更累,因为和人打交道是最复杂的。既要协调上下级的关系,又要统筹安排好各项工作。如果喜欢走管理路线,不要脱离业务只做管理,建议做一名技术管理,在带领团队的同时,不断的提升自己的技术。一方面技术不行很难服众,另一方面也是锻炼自己落地一些团队方案的能力。虽然说管理的“生命周期”比纯技术会长一些,但是一定不能放弃技术。
转行其他
研发、产品、运维,或者创业,都是面临瓶颈之后的新的出路。其中尤其是创业,不要草率,见过太多创业失败又回来上班的,啥都折腾没了。四、软件测试工程师的核心竞争力是什么?
薪资不能完全代表你的能力,但是能够代表你的实力。
我从互联网薪资等级入手,谈一谈该如何提升自己的核心竞争力。
1.薪酬数据参考
我根据人才的基本属性并用实际的例子总结, 按照8年跨度. 总结了行业的一些典型人才的现状. 为了保密, 我模糊了相关数据. 与真实情况会有偏差.我手里也有更多的数据, 我也一直想搞个决策树模型, 但是一直没完整的做出来. 这次就先简单列举这几个典型的案例吧.
- 职业上升的关键因素
技术能力决定了你的薪资增长加速度. 在月薪1w到3w中间. 技术能力助力会较多.
管理能力决定了你的薪资阶层. 月薪2w-5w是管理层基本薪资. 后面的要靠公司的股票和奖金
业务能力决定了你的地位和长期回报. 对业务的把控决定你在团队的影响力和重视度. 也关联期权和股票的数量.
运气和选择决定了你的人生轨迹. 选择的好就能获得最大回报.
股票或者期权回报是超过工资的. 选择一家靠谱的可持久的公司很重要.
作为个人发展, 我的建议是扎实的提升你的技能, 培养好你的人脉和软实力. 至于运气和选择不用焦虑, 如果你有能力, 自然会有高人拉拢你. 比如之前就经常有朋友联系我, 说是XX公司要发期权了, XX公司要上市了, 跟我们一起干吧. 人品好, 技术好, 大家都会喜欢与你为伍的。
如果现在的你还是处于比较初级的技能阶段,建议你可以从以下几个方面逐步的提升自己:
硬实力:
1、坚持少做重复性工作,提升自己的工作的幸福感和成就感,促使自己不断的学习钻研;
2、掌握一门编程语言,Python或者Java都行,会了Python之后会灵活一些,能够写一些脚本或者小型的应用,将来在面对测试和运维之间的区域时,去部署和维护一些web应用和测试服务器,Python就会变得非常有用。如果是掌握Java,在面对Java写的测试框架的时候,能够很好的处理好测试与开发交叉的领域。在面试过程中,大概率也会碰到问你jvm的问题;
3、计算机的理论知识,这个简单一些,比如各层的协议、抓包工具等;
4、操作系统上,Linux基本的操作和命令、shell脚本、ios和Android系统;
5、前端基础知识,目的是解决测试和开发的交叉领域,bootstrap、css、html、javascript、jquery。
6、数据库,性能测试很重要,接口测试也要用到。
软实力:
1、不达目的誓不罢休,研究问题搞不明白就不放弃,这是你的职业精神,也是决定你能否具备钻研能力持续成长,我们的校长思寒老师,有时候半夜研究出来一个问题,还在群里很开心的说他研究出来了,人家都是架构师了,还这样呢。
2、耐得住寂寞,可能在你刚进入测试行业,很长一段时间你的能力也提升不上去,有时候工作有是比较重复,觉得自己没有价值。但是只要方向是对的,量变终究会引起质变。
3、学会沟通,学会与开发沟通,学会与产品沟通,学会与团队沟通,还有就是学会与你自己沟通。
4、不断学习,不要吃老本。
五、软件测试工程师35岁以后怎么办?
35岁干不动,都只是借口而已。
能干的,依然能够很好的在这个行业发展,干不了的,注定会被一浪比一浪高的后浪,拍死在沙滩上。我身边一堆做测试开发的、自动化或者性能测试的大咖们,基本上都是35+了,怎么能说35+干不动呢。
所以,按照我前面说的,尤其是职业规划和核心竞争力那里,尽早的对自己进行规划和提升,确定好目标,坚定不移的走下去,所谓的职业瓶颈,是困不住未来你这位大牛的!
另外关于职场,也有一些过来人的经验想要啰嗦一下:
职场建议
切莫在不该有的年龄追求权利
这会断送你的整个前程. 在一些面试场合, 如果面试官问你愿不愿意做管理, 如果你回答是, 那么面试基本就挂了.
一定要确认面试你的人是不是真的希望你走管理路线. 大多只是测试你是不是真的是个实干家.
过早参与管理工作也会导致个人技能发展的不健全. 这会为以后带来隐患.
过于追求权力必然也会引发办公室政治和各种利益斗争. 所以请谨慎面对这个毒苹果。
在薪资和工作机会之间做合理的权衡
每家公司都有自己的薪资体系. 你要参考这个数据来合理的确定自己的薪资, 不要有幻想. 不要觉得别人因为某次成功的忽悠拿到多就懊恼.
一个优秀而扎实的工作经历会让你受益一生, 会为你的简历增光不少. 对于这种机会降薪也值得去.
一个合理的节奏是1-2年主要是积累能力. 能糊口即可. 2-5年可以适当的跳槽追求更好的待遇或者更闪光的工作履历. 五年以上就是物色好的机会一飞冲天了.
如果跳槽太多, 一些大公司也会非常的在意, 会影响你的面试. 比如工作经验不到一年或者两年就跳槽的人, 很容易被BAT认为轻浮。
最后,我想说:
成年人的世界没有容易二字,软件测试行业的未来是你我共同创造!