测试行业发展背景
微软引领的大测试时代
中国最早的对 IT 工程的启蒙和测试定位的探索大多来自于微软。当年的大背景是微软故意放任 Windows 的盗版,并积极的输出他自身的 IT 生态技术栈到中国。中国从政府到民间几乎全部使用了 Windows。中国有大量的微软认证的 VP 等各种专家。
微软和他的附属生态带给中国测试行业的影响,简单总结下:
强调工程的严谨性。CMMI 一统天下。无数中国公司为了通过这个认证费尽脑汁。大部分公司通过它也不是为了自己的规范,而是为了能拿到政府或者国外机构的外包业务。
测试和研发的比例。因为都是客户端产品。如果交付出去出现质量问题是很难解决的。所以测试被放在一个非常重要的位置上。测试与研发比一度是 1:2
外包公司发展迅猛。短短的几年。中软,东软,软通动力,博彦等公司迅猛的发展起来。
测试技术的启蒙和发展。主要是自动化为主。在十年前的年代,听一些前辈说,有公司做性能测试,就是有人用哨子吹下,然后一屋子的人就开始一起点。所以当 QTP 和 LoadRunner 出现后,就迅速占领了市场。
国内崛起的公司有自己的业务,他们不屑于不实用的认证,开启了自己独特的野蛮发展的节奏。这也是之前在外企工作的白领有优越感的一个原因。
测试技术大发展。不再是简单的自动化测试,技术开始更加细化。比如单元测试,代码动静态测试,接口测试,持续集成,各种端的自动化测试。大家也不再迷信 UI 自动化,而分层自动化,持续集成,测试既服务等理念开始流行。
测试工程师技术型转变。以前的测试工程师就是点点点,不会要求技术的。但现在 BAT 等一线公司已经全部推行技术笔试了。可以说,不懂开发基础的测试人已经难以发展了。点点点测试工程师已经退化到只能用于用户端的功能校验工作了。
测试研发比:从 1:2 下降到了 1:3、1:5。
# 移动互联网+创业浪潮时代的测试发展
移动互联网爆发,IT 研发技术栈和云计算服务也发展迅猛,这让小公司的生产力有飞跃性变化,也催生了一场席卷全球的创业浪潮。这股浪潮起源于硅谷,并迅速通过"Copy to China"模式烧到了中国。另外一个是中国大环境的变化,导致了外资企业生存困难,很多优秀的企业都从中国撤离。
这期间的测试行业发生了如下的变化:
服务于国内企业的测试工程师开始增多。外包测试工程师,外企工作白领测试工程师都被外企撤离影响到了,开始逐渐转到国内公司。外企工作的优越感逐渐丧失,国内的工程师开始崛起。
敏捷理念盛行。SCRUM 和 XP 理念被迅速的普及。Scrum 迎合了产品管理的需求,XP 迎合了工程化发展的需求。各自发展都很迅猛,然后逐渐衍生了更深入的 CI、CD 和 DevOps 等模式。
测试研发比。下降到 1:8 甚至更低。其实 BAT 都向往 Google 的 1:10。只是国内目前做不到。
大质量部模式被打散。为了提高运作效率,QA 或者测试工程师团队被逐渐分拆到各个具体业务部门。大质量部模式消失意味着测试工程师的发展开始遭遇天花板。很多人还没能体会到这个模式带来的巨大影响。
测试技术新发展。测试平台得到了很大的发展。研发工程师,技术型测试工程师也开始逐渐发挥价值。比如新型的全链路压测,全链路追,测试监控,各种接口测试和 mock 平台,各种云测和专项测试平台。独立的测试服务公司也开始层出不穷。
大数据和智能时代
人类已经进入 DT 时代。大数据,机器学习,深度学习,图形渲染等技术栈也已经成熟了。随之而来会形成新的生产力并落地到测试行业,这个阶段大家刚开始感受到。我暂时不做评论。
测试行业发展总结
之所以列举过去的行业变化,其实是为了告诉大家,不要认为目前的模式就是行业的长期现状。目前不同企业仍然是处于不同的理念和不同的历史阶段中。没有绝对的对错,只有适合与否。
这些变化都是围绕着几条核心的主线发展的:
业务发展
业务发展带来了对质量和速度的追求。这是整个行业发展的主线。
业务发展的需求影响到了产品研发和测试。它和资本一样是贪婪的,无时无刻不在追求着突破瓶颈。追求更快更好的发展。它决定着很多公司的生死和很多行业工程师的前途。研发,产品,QA 都是要为业务服务的。
技术发展
技术是生产力的重要组成部分,技术的发展是自带加速度的。每次质变都会带来一些行业重大的变更。技术的成熟度决定了测试行业的成就能做多大。
作为测试工程师要善于利用当前的技术栈打造符合当前需求的解决方案。
管理发展
公司主体在追求简单高效的管理上是永不止步的。技术和工具的每前进一步,就意味着组织沟通的能力在增强。管理这个方向会逐渐的扁平化。高层管理会越来越少。一线管理会越来越多。
作为测试行业比较尴尬的一点是大质量部模式模式的消失,让测试行业的发展开始遭遇天花板。如果 Hold 不住研发和产品,在测试行业发展的人是没法往上有很好的晋升的。
测试工程师职业发展关键因素
薪酬数据参考
我根据测试人才的基本属性并用实际的例子总结,按照 8 年跨度(08-16),总结了行业的一些典型人才的职业发展现状(鉴于隐私要求,模糊了相关数据,与真实情况略有偏差)。
我手里也有更多的数据,之前也一直想搞个决策树模型,但是一直没完整的做出来。这次就先简单列举这几个典型的案,简要分析下测试人的职业发展关键因素。
职业上升的关键因素
技术能力决定了你的薪资增长加速度。在月薪 1-3w 中间。技术能力助力会较多。
管理能力决定了你的薪资阶层。月薪 2-5w 是管理层基本薪资。后面的要靠公司的股票和奖金。
业务能力决定了你的地位和长期回报。对业务的把控决定你在团队的影响力和重视度,也关联期权和股票的数量。
运气和选择决定了你的人生轨迹。选择的好就能获得最大回报。
股票或者期权回报是超过工资的。选择一家靠谱的可持久的公司很重要。
作为个人发展,我的建议是扎实的提升你的技能,培养好你的人脉和软实力。至于运气和选择不用焦虑,如果你有能力,自然会有高人拉拢你。比如之前就经常有朋友联系我,说是 XX 公司要发期权了,XX 公司要上市了,跟我们一起干吧。人品好,技术好,大家都会喜欢与你为伍的。
职场发展建议
切莫在不该有的年龄追求权利
这会断送你的整个前程。在一些面试场合,如果面试官问你愿不愿意做管理,如果你回答是,那么面试基本就挂了。一定要确认面试你的人是不是真的希望你走管理路线。大多只是测试你是不是真的是个实干家。
过早参与管理工作也会导致个人技能发展的不健全。这会为以后带来隐患。过于追求权力必然也会引发办公室政治和各种利益斗争。所以请谨慎面对这个毒苹果。
在薪资和工作机会之间做合理的权衡
每家公司都有自己的薪资体系。你要参考这个数据来合理的确定自己的薪资,不要有幻想。不要觉得别人因为某次成功的忽悠拿到多就懊恼。
一个优秀而扎实的工作经历会让你受益一生,会为你的简历增光不少。对于这种机会降薪也值得去。
一个合理的节奏是,刚参加工作 1-2 年内主要是积累能力,薪资能糊口即可。2-5 年,可以适当的跳槽追求更好的待遇或者更闪光的工作履历。5年以上,就是要物色好的机会一飞冲天了。
如果跳槽太多,一些大公司也会非常的在意,会影响你的面试。比如工作经验不到一年或者两年就跳槽的人,很容易被 BAT 认为轻浮。
当下测试行业的发展
表面"衰落"的测试行业
鉴于过去的大形势变化,不懂技术的测试工程师会逐渐被淘汰出局。一波测试工程师的失业潮是在所难免的。虽然早期我也呼吁身边的人赶紧脱离落后的业务体系,脱离落后的测试技能,但是看到很多人越来越生活艰难,也是挺心痛的。
包括测试工程师的需求越来越少,招聘职位也越来越少,典型的新崛起的巨无霸公司比如 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 团队,从而提高执行力。所以管理上百人的总监职位会越来越少,而管理百人以下的总监会越来越多。不排除少量的巨无霸仍然没有改变。或者有些烧钱的初创公司倒行逆施。
其中这些测试管理者会遇到一些新的挑战,比如更高层是研发出身居多。不懂研发体系几乎没有发展空间了。测试管理体系失去了上层建筑,对未来的影响还是深远的。会有阵痛,但是结果肯定会是好的。
测试技术人才需求增多
原因是多方面的。大公司因为分拆的问题。不再有统一的测试技术支撑部门,所以分拆之后的每个团队都需要组建对应的职能团队,对测试技术人员的需求反而会增多。
中小型公司也苛求质量保证效果,不止是要好,而且要求更快,也需要大量的技术人才。这几年通过各种招聘网站的招聘 JD 的描述也能看得出来。
外包测试的灾难和新生
原来做欧美日韩外包业务的公司会因为国内互联网的发展逐渐式微,他们需要转型做国内。但是国内对外包业务也大多排斥,而且外包业务在效率沟通管理上都有诸多弊端。其自身也无法承载对测试工程师的培养和长期发展。所以这几年会有大量的外包测试工程师转型。
这方面需要有新的优秀的外包服务公司。能做到有自己的测试服务,测试技术和高级的测试研究工程师才行。比如东软也开始做自己的各种云测平台之类的,就是一种为了迎合新时代的变更。
不懂开发的测试工程师已经是新时代的文盲
第一个是工作上已经没有太大的晋升空间。第二个是也很难跳槽。最好的结果是凭借多年的经验转管理。
我跟行业的很多测试经理交流过,大部分工作超过 6 年的人,在测试执行上会倦怠,在测试技术的改进上已经无法入门,还不如招实习生。相对来说,有技术基础的人在工作 8 年以上仍然会保持自己的学习热情。
所以未来测试团队的架构基本会是多数业务测试工程师 + 少数测试专家 + 测试经理的管理模式。
以前不识字的是文盲,后来是不识英文的是文盲,在继各国呼吁加强对 IT 技术的重视后,新时代的文盲就已经快是不懂开发的人了。TesterHome 社区成立的初衷就是希望唤醒整个行业对测试技术的重视。
测试行业的门槛增加
以前处于发展期,行业对人才的苛求是第一位的。现在随着大公司发展稳定,招人已经稳定了。
他们基本只在 211 院校校招。社招也看学历。初创公司多是融资烧钱为主,在学历上和阅历上也是看的很高。能够不拘一格降人才的公司会越来越少。
我之前推荐了不少同学去其他优秀的公司,其中有一部分同学就是技术不错,但是学历未过关。所以希望大家技能和学历上能够好好的重视这个问题。除了学历门槛,如上一条所说技术门槛也存在。所以加油吧,少年!
测试行业的薪资在提高
测试行业经过自身的净化洗涤会有新生。典型的变化就是薪资从以前的 3k-15k 的范围,整体提升到 1w-3w 之间。
技术含量的提升,责任的提升必然会带来整体的回报。现在测试工程师只要技术好,学历没问题。工作 3 年拿个两三万的月薪是很平常的。
研发工程师进入测试领域
这些年整个 IT 行业对测试行业的发展非常不满意,通俗点讲,大家都觉得测试很 Low,但是又不能没有。研发提交项目给测试的心情就跟以前过年要去火车站排队买票一样。要申请测试资源,给测试讲解业务和实现,遇到比较 low 的或者新入职的,连搭建环境都不会,还得手把手教。
研发只是修改一行代码,QA 或者测试那边就炸锅了。各种流程足以让研发头发都能掉好几根。
作为参考对比,再思考下运维。当年部署个环境跟提交测试很像。要申请运维的介入,要申请机器资源,然后提交部署文档,还要明确基础环境,依赖库等各种细节的版本号。
遇到本地行发布环境不行之类的问题还得跟运维撕逼。当年运维行业还流行着一句," 人 " 才是最关键的发布保证者。
而现在随着持续交付和 DevOps 的流行。发布都已经做到"丝般柔滑"了,一键发布,自由选择灰度,平时的发布甚至都不需要运维参与。尝试了新模式的甜头后,对测试行业的弊端已经很难忍受了。
所以在优秀的测试工程师和测试架构师难找的情况下,已经有越来越多的公司选择直接用研发工程师来顶了。他们的追求很简单。单测->接口测试->基础的冒烟测试,能够做到自动化就可以了。如果能像运维那样做成测试即服务就更完美了。
总结
我一直坚信,QA 的价值是非常的大,测试行业在经过这次调整后也会发展的很好。至于说未来能有多辉煌,就要看大家的努力了。
测试职业发展建议
测试行业和其他行业的发展没有本质的区别。这些年都已经规范化了。一般的公司都会有两条路线发展。一个是 P 或者 T 简称的技术路线,一个是 M 的管理路线。
每个方向都有很大的发展空间,级别也是很多,年薪也是从 20w 到 100w 以上都有。稍大的公司大都是并行发展的。小公司可能就只有管理路线可走了。所以做技术的同学,最好是在大公司发展,去小公司就要适当调整自己工作重心。
测试技能发展
首先技能和技术只是过程,业务的质量才是目标。
一个合格的优秀的测试工程师,应该是能做到如下几点:
懂业务。能扎实的保证业务质量。不排斥用脑力和体力去保证质量。
懂技术。能够做深入的自动化或者分析工作。能够利用工具和技术解决问题。
懂架构。能够跟研发和产品进行正常的交流,保证产品需求和实现都没问题。能带团队走上更好的发展。
成长为测试开发工程师
而随着敏捷开发、DevOps、持续交付的流行,软件测试人员必须成长进阶为测试开发工程师,同时具备一定的开发和运维能力。
测试开发工程师会通过测试左移,更深入介入开发工作,提前与开发人员一起制定测试计划,推动代码评审、代码审计、单元测试、自动化冒烟测试、测试精准化分析以及研发自测等来保证研发阶段的质量。
测试开发工程师会也通过测试右移,参与配置部署,将自动化测试用例配置到持续交付链中,并全流程监控发布后的应用质量。总之,作为 DevOps 关键角色,测试人员将推动开发和运维共同实现高效交付高质量产品的目标。
但这里想强调一点,并不看好只开发测试工具的测试开发工程师。开发一款测试工具,设计一个更好的测试框架,发明一种更先进的测试手段。这是个人成长带来的自然成果,但不是目标。
很多人会觉得开发测试工具的测试开发是有前途的,其实也不是。只是他碰巧赶上了测试行业的技术转型期的需要。我记得在百度的时候,好多负责单测工具,单测框架的维护团队,经常凌晨两三点还在修复 Bug。但是几年过去,这些人的努力大多没有很好的回报。
这是因为他们做的事情脱离业务目标太远。一旦完成目标,他们也容易被“管道化”,成为边缘角色。这个行业除了极少数技术的狂热爱好者,能够找到自己在行业的技术地位外,大多数人都应该去追随业务的发展。业务才是测试的根基。
测试行业和以前的战国时代一样,成为一个统帅团队叱咤风云的将军,还是成为一个打造兵器满怀工匠精神的铁匠,都是值得尊敬的。在冷兵器时代排兵布阵管理就是王道,在热兵器时代下技术和科技是重要力量。这个需要看每个人的爱好和追求。明确自己的发展方向和爱好就可以。
关于测试技术路线,我的建议是:
多读书。能系统的了解很多东西。
多看别人的代码。他山之石可以攻玉。别人的开源代码里面藏着很多的经验和智慧。要善于学习。
早期多造轮子。这是一种不断演习的强化锻炼。可以强化自己的技能。
多承担开源维护工作。尽可能的参与开源社区的维护工作。跟这些人的协作你能学习到很多有用的实践知识。能够强化自己的沟通协调和架构设计的能力。
多泡论坛交流。闭门造车,敝帚自珍,固步自封都是没什么成长的。跟这些保守的人交流你也学不到太多。
打怪升级。从部门里一件件的改进做起,实现把技术转化为生产力。
进行系统化学习。在原有技能欠缺的情况下全面学习企业主流技能。
最后:职业发展亦如此,测试人除了埋头踏实苦干,更要懂得抬头思考远望,在行业变化中找到正确的方向。这里我为大家也整理了一些笔记资料,供大家参考想要领取可以加微信:xiang520and获取,另外咋们这边也有一个大牛圈子给大家平时学习讨论交流QQ群:243771258
本文作者:黄延胜