我对软件测试行业的个人理解 4

我觉得我上一篇写得太简略了,估计很多人看了觉得不过如此,我决定在这篇里深化一下。

本文中,我定义技术路线长度或技术基础的标准为:普通人完全掌握一种技术所需要的时间,我把他的单位名称定义为Y,M,D (年,月,日)

比如3Y表示某技术需要普通人花3年时间来掌握,1M表示某技术需要普通人花1个月时间掌握。

本文有以下前提条件,基于我的个人理解:

前提一

计算机专业应届生的技术路线基础理论上为4Y,因为大学要读4年

培训班毕业非计算机专业的学生,以培训一年为例,技术基础为1Y

黑盒手工测试的技术路线为3M,因为一般只要培训3个月,不管你是不是计算机专业都能胜任

同理,软件开发中路线最短的XXX信息管理系统开发人员培训3到6个月也可胜任,算他6个月,那么特定于某种语言或框架下开发XXX信息管理系统的开发人员的技术路线长度为6M

前提二

对于大多数人来说,技术不用,则会渐渐遗忘。

也就是说假如应届计算机专业毕业生技术基础是4Y,他从事了1年与计算机无关的事业,则他的技术基础将小于4Y。(事实上,一年的空白,将使得此人的技术能力接近于0。)

推论一

我的推论就是:一个人的核心竞争力 =硬能力 + 软能力 + 外部能力

硬能力= 技术积累 + 业务积累 + 语言积累(英语)

软能力= 沟通能力+管理能力+写PPT能力+其他对工作有用的非技术能力,或者说技术能力的表现力

外部能力 = 人脉、运气、家庭条件 等等来自于外界的附加值

  • 为什么不建议应届毕业生直接从事黑盒手工测试工作?为什么特别不建议应届毕业生从事外包行业的黑盒手工测试工作?

在上述前提基础上,我们不难看出,一个计算机应届毕业生假如一毕业就从事黑盒手工测试则他的技术基础会被浪费4Y-3M = 3Y9M

也就是说浪费了3年零9个月,并且这3年零9个月的基础将在1年内消失,

一年之后,此人的技术基础将变为3M : 4Y(大学4年) + 3M(培训黑盒手工测试3个月) - 4Y(一年后,大学知识遗忘完毕) + 0(黑盒手工测试1年,零积累) =3M这也是我不建议一毕业就做测试的原因。

也就是说,工作1年的黑盒手工测试工程师如果这一年完全不接触技术,则他的技术基础变为3M,远小于应届毕业生的4Y,竞争力急剧下降。

因为,当若干年后,我们要问,一个黑盒手工测试工程师和应届生有多大区别。假如没区别或只有业务知识的积累,则当业务发生变化时/公司不景气时,此黑盒手工测试工程师将遭遇职业危机。

(这里,不排除此人在从事黑盒手工测试过程中,他的业务基础有可能不断增加(比如他做金融测试,金融以业务复杂著称),则业务积累可以替代技术积累成为他的核心竞争力。此类例子不在我考虑范围之内,因为我没进银行之类业务为核心的单位,大部分人也不容易进这样的单位。)

这个危机在外包行业尤为严重,因为外包行业通常没有多少业务积累。每次换项目,他的业务积累就归零。

外包行业的应届黑盒手工测试工程师将遭遇到的最大挑战是,无论工作多少年,他的技术基础永远是3M,业务基础永远不停归零

当然,你还可以积累语言基础,比如外资外包公司,积累良好的英语能力,这也是一种方法。

我知道有的外包公司派出刚完成黑盒手工测试3个月培训的应届生,假装成2年工作经验的黑盒手工测试工程师派去客户单位干活,并且最后获得客户好评的故事。实际上这个故事里,客户赚了。因为他用的人的技术基础是4Y3M,假如真的给他2年经验的,则那个人技术基础只有3M。于是客户当然给出了好评。

  • 理想的情况与现实

理想的情况下,我们从开发开始做起,并选择技术路线长(>=10Y)的开发工作,若干年后转成相关领域的测试,不但熟悉业务,更熟悉代码,就像国外一些几十年开发/测试经验的资深者(老头子)一样,骄傲地说我可以测试任何软件产品。这种测试人员,就是我们最初接触软件测试时,从大学老师或书籍上看到的“资深的开发做的测试”,或者说“好的测试”。但这只是理想情况。

实际上,我们中大多数人从一个错误的入口过早地进入了软件测试行业,并且选择了技术路线为3M的黑盒测试。

一个好的开始是成功的一半,假如你是从开发开始做或者直接从自动化开始做的,可以跳到后面部分了。

  • 从0基础到3M众 - 黑盒手工测试路线

黑盒手工测试,我称之为“3M众”,3M众是最多的。有本专业的,有其他专业的,不管什么专业,你从事黑盒手工测试一年以上或者培训3个月以上,你就是3M众的一员了。

我接触的最多,同时也是向我提问的人力最多的就是3M众,我以前也是“3M众”之一,并几乎完全荒废了大学4年的技术基础,刚毕业的时候我还会写jsp,还会用ssh,还会数据库建模和设计,还能用java自己写个动态的网站。后来我会个毛线,全忘光。

基于我的个人理解,

黑盒手工测试工程师的技术门槛是0,技术路线长度(包括门槛)是3M,简称3M众

3M众要掌握的东西通常有:

1.几十年没变化过的测试用例设计方法

2.变来变去其实还是一样的软件生命周期,从瀑布模型到快速迭代模型

3.至少一个bug管理工具,如jira,并学会如何提交bug,如何说服开发修bug

4.至少一个测试用例管理工具,甚至excel也行,并掌握如何写测试用例、如何填测试结果

5.至少一个拿得出手的手工黑盒测试项目,如参与测试XXX信息管理系统的用户注册模块,XXXX模块

毕业标准则是:

1.至少一个拿得出手的完整项目。如负责测试xxxx信息管理系统的A模块、B模块;并能测类似的新项目

高一点的要求是:

2.能自己搭建测试环境做build做deploy

3M众最大的迷茫就是:“感觉学不到东西"

然后3M众最常听到的就是,“从用户角度来看问题找BUG”、“提高沟通能力以适应各种(怪)脾气开发人员”、“如果需求不停变,你能忍受吗”、“能忍受重复劳动的枯燥吗”、“一个优秀的测试人员应该具备什么素质”

我觉得这些是在诱使一个3M众成为一个永久的3M众,并且开始向业务积累、软能力以及自我安慰方向发展。

其中的成功人士因为有了足够的业务积累和软能力而直接变身为测试管理人员。这确实很好,但是,这比例太低了点吧。人人都想变管理,人人都想进银行之类业务复杂到能让测试人员依靠业务积累就成正果的行业。

但是这成功比例太低

我有工作了7年当上测试经理的同事,也有工作了8年,还是资深黑盒手工测试工程师的同事,这种事情见得多了。不一定谁强谁弱,有时起决定性因素的是外部能力。而且另一个问题是“中年危机”你怎么应对,40岁遭遇公司倒闭,你一个3M众怎么办?假如你的行业被互联网行业冲击得要消失了你怎么办(比如我的同事遭遇了DVD光盘刻录行业之衰落)。

  • 从3M众到3Y众 - 自动化测试路线

一个3M众自然而然地会开始迷茫”学不到东西“,然后到处发帖、问人、互相讨论。运气不好的人会被引领到“软能力”方向、“业务积累”方向、甚至“混日子”方向和“自我催眠”方向。

然后有一部分3M众因为遇到一个好领导或者好公司或者看到一些好文章,而被点拨,开始走自动化测试的路线。

自动化测试路线是最常见的黑盒手工测试人员的技术发展方向,直接走性能测试路线的人比这个少多了。

但这条路并不好走。首先是技术门槛问题。

黑盒手工测试技术门槛是0,而网页自动化测试技术门槛我觉得是1Y+ X(X取决于英语能力,英语越强则X越小)

自动化测试的路线上,我个人掌握其基础大概花了3个月,掌握其原理又花了3个月,从掌握到应用自如的程度又花了6个月,之后继续充电和深化,从应用自如到有所突破又花了大概3个月。中间还有浪费在黑盒手工测试上和重复劳动上的沉淀时间若干个月。

照我自身经验来看,自动化测试的技术门槛是大学刚毕业的那个4Y+掌握基础用的3M,或者培训班里培训java开发用的6M+掌握基础用的3M,然后自动化测试的技术路线长度对我来说是一共9M+若干沉淀时间。

这里大部分人没我快,主要原因是:英语的积累不同

我这里的自学速度快的主要原因是接触到的学习资料质量高,全部用英文资料,并且个人学习能力还不错。

那么根据我接触的一般人的进度,掌握基础(包括程序语言基础)要1Y,掌握原理又要1Y,应用自如又要1Y,最后能不能有所突破则要看缘分了。

所以我的理解下,

自动化测试工程师的技术门槛是1Y+ X(X取决于英语能力,英语越强则X越小),技术路线长度(包括门槛)是3Y,简称3Y众

3Y众要掌握的东西通常有:

1.至少一个程序语言或脚本语言,如java或python

2.至少一个主流自动化测试工具,如selenium,并理解其大概原理

3.至少一个主流测试执行器,如testNG,并理解其大概原理

4.至少一个拿得出手的自动化测试项目,如自动化测试XXX信息管理系统。

而毕业标准则是

1.至少一个拿得出手的自己负责自动化测试项目,如基于XXX架构做了XXX系统的自动化测试脚本

2.理解至少一个自动化测试工具的深入原理,如selenium,并能在此基础上搭建自己的测试框架,如我们可以随便搭建一个java+selenium2+testNG+Jenkins+selenium grid的测试框架并使用page object factory模式。

高一点的要求是

3.能理解别人的自动化测试框架的代码和他们这样写的原因,比如我随便看看以前公司其他人搭建的自动化测试框架,可以看出他的写法有哪些好的地方,不好的地方,他当时为什么选择了这种不好的写法,现在能不能优化,成本要多少。他用的某种测试工具的优缺点,他选用的测试数据组织方式是否有可以优化的地方

4.读过一点开源工具的源代码

5.至少一个持续集成下的自动化测试项目,如jenkins下的

6.至少掌握一个非windows操作系统的操作和基本脚本

如果是你是做自动化接口测试的,那真是好运气,相应的只是改了改工具,而接口自动化测试遭遇垃圾框架的几率小得多。

自动化测试最怕的是:

1.录制回放测试工具 - 这工具不但扼杀你的技术路线,还会让你陷入一直傻傻录脚本的尴尬境地。唯一好处是给公司省钱。

2.垃圾框架 - 由初级开发人员在未掌握自动化测试基本原理时制作而成,会让你做自动化测试做得比黑盒手工测试还痛苦。诸如200个方法的上帝类,20个类的继承链,1000行测试数据和1000行预期结果混合杂乱放置的测试数据文本文件,麻烦得要死的关键字驱动的excel表格,一半要人工复核的不可靠测试结果,傻傻搞不清楚的业余级测试执行方式,莫名其妙死在那里还没法调试的持续集成测试脚本等等,以上均是我目睹的自动化测试做得比较成功的案例里的,他们至少自动化做出来了,虽然很垃圾,还有很多半途而废的失败案例更糟。

3.承担不起自动化测试成本的公司。自动化测试成本较高,特别是用户界面层最高。即使是接口层,仍比手工测试高。小公司我看还是算了吧,搞不来的。现在2014年,你花个12k/月在杭州只能请到3Y众里水平一般的,想找个技术好的纯属碰运气。但你看,小公司可能会20k/月请一个资深ios开发,但不会给20k/月来请一个资深自动化测试,资深自动化测试还是比不过资深开发。

3Y众的迷茫是“没有开发收入高“,“要不要做管理”,“性能测试怎么做”,“学的新东西老用不到,不用一段时间又忘记了”,“开发基础没打好,好多东西不懂”,“技术路线后面还有没有了“,”这框架太垃圾,做自动化测试比手工还累“

到了这个阶段已经没多少人会满足于3M时代的“与开发沟通的技巧”之类的东西了。很显然当我们有和开发对等的技能时,并不需要看谁的脸色。很多人的工作根本不直接和开发打交道,就是写测试脚本、脚本发现的bug自然有人去跟。也有人做测试框架,压根不接触开发。我有段时间主要做测试框架的维护改进、测试脚本的review和带转职过来做自动化测试的开发,也有一段时间做自动化测试培训。

此时我们有了和一般开发不同的技能树,至少在面对初级开发人员时会比较有底气,当然高级的开发人员还是略显牛逼。显然,对于测试人员来说,从3Y到10Y的技术路线不是那么好找的。

如果一个自动化测试人员自以为自己有10Y的技术积累,而实际上和3Y路线走上来的新人水平差不多,那就会遇到和黑盒手工测试人员一样的被替代的危机。当然另一个方面来说,如果项目不倒灶,自己写的自动化测试脚本,自己维护起来显然比别人有优势。问题是这里仍旧有一个高级版"中年危机",如果你参与的自动化测试项目结束了。如果你使用的自动化测试技术过时了,如selenium 1,如果你用的工具本身就很有局限性如fitnesse,或者你用的是一些内部工具,然后公司倒闭,内部工具的工作经验变得毫无用处,如诺基亚手机部门。那你怎么办呀。实际上,当自动化测试掌握到一定程度后,我发现,自动化测试工作岗位在杭州很少,但是“要求懂一点自动化的黑盒手工测试岗位”不少。跟上海的同事交流发现那边自动化测试岗位比杭州多,但也有很多拿自动化做幌子的岗位存在,包括现在互联网巨头的一些测试开发工作岗位也有其实是黑盒手工测试为主的。

最后特别指出,外包行业的自动化测试仍然是不靠谱的占多数,比如所谓的平台自动化测试工程师,有些外包到互联网巨头做自动化测试的人在一些属于巨头的测试开发人员做好的自动化测试平台上,使用被包装又包装的面向领域语言编写测试脚本,对个人毫无技术积累,和黑盒手工测试有一拼。这是由外包行业能用就行,达到需求就能收钱,以及产值固定(如你的合同签订多少钱一人月就是多少钱一人月)决定的。不像做产品,不但要能用,还要精益求精以求卖得更好,当产品卖得好的时候,个人平均产值也高,说明工作产生的价值高。

总的来说,混到3Y众这个级别,算是傲视3M众了,有无数3M众一辈子也到不了3Y众的高度,如果基础太差,或者学习能力不足,很可能卡在某个地方上不来。

下一期/几期我想总结一下对于以下路线的理解

  • 从3M众到3Y众(伪) - 懂一点自动化的黑盒手工测试路线(“伪”3Y众仍旧可以混得比3M众好很多)
  • 从3M众到3Y众 - 接口自动化测试路线(我专门开一个讲接口测试的章节满足一下有的朋友的好奇心吧)
  • 从3M众到3Y众 - 移动端测试(我也不熟,只能凭感觉写写)

还有一些我不确定的猜想

  • 从3Y众往上走 - 性能测试路线?
  • 从3Y众往上走 - 测试开发路线?白盒测试路线?
  • 从3Y众往上走 - 如果掌握3个3Y众路线是不是可以摇身一变变成9Y众甚至传说中的测试架构师?
  • 从3Y众往上走 - 管理路线,走还是不走?

后面还有一些我想整理的

  • 核心竞争力 - 所谓“博”靠的是一堆不稀奇的技术组合成一个稀缺的技术组合?
  • 技术重叠度 - 来自开发人员、运维人员、其他技术人员的挑战
  • 公司/工作岗位和测试人员的技术路线、业务路线、管理路线的长度 - 怎么选公司?
  • 无尽的加班 - 小公司加班地狱的经历 - 为啥每次上线总是在半夜三更或凌晨,不管是做中国用的网站还是美国用的网站都在中国半夜上线?
时间: 2024-08-10 09:13:58

我对软件测试行业的个人理解 4的相关文章

我对软件测试行业的个人理解 1

我想整理一下这些年来,对于软件测试行业的理解:)于是就有了这个文章. 软件测试行业里工程师工作岗位的分类 有按看不看代码分的:黑盒测试工程师.白盒测试工程师 有按主要业务分的:金融测试工程师.通信测试工程师.本地化测试工程师.游戏测试工程师 有按主要任务分的:自动化测试工程师.性能测试工程师.安全测试工程师 有按被测软件分的:手机app测试工程师.手游测试工程师.网页测试工程师.客户端测试工程师  有时也有按被测软件的语言.技术分的:java测试工程师..Net测试工程师.数据库测试工程师  

我对软件测试行业的个人理解 3

有人发消息问我: 我该做什么,走什么路线? 我想做XXX该怎么办? 我学了XXXXX但是只懂皮毛怎么办? 我想去XXX公司,要怎么做? 有什么书推荐? 我感觉学不到东西,怎么办? 我感觉测试很无聊,怎么办? ------------------------------------- 想去XXX公司,是需要敲门砖的. 这里有一个矛盾,大家都想去大公司.好公司,但是大公司好公司凭什么让你去. 我觉得,这时通常需要一个敲门砖的,比如, 高学历或名牌大学毕业 大公司可能校招的时候就只去几个学校招人,那么

我对软件测试行业的个人理解 5 - 关于核心竞争力的思考

按我的理解: 一个人的核心竞争力 =硬能力 + 软能力 + 外部能力 硬能力= 技术积累 + 业务积累 + 语言积累(英语) 软能力= 沟通能力+管理能力+写PPT能力+其他对工作有用的非技术能力,或者说技术能力的表现力 外部能力 = 人脉.运气.家庭条件 等等来自于外界的附加值 其中,硬能力是比较难学的东西,软能力则是通用的东西,外部能力很多时候是比较难改变的东西. 语言积累(英语) 首先语言积累很重要,不管是不是在外企工作,阅读英文资料都是提升自己技术积累的必由之路.以我熟悉的自动化测试为例

我对软件测试行业的个人理解 6 - 浅谈自动化测试原理

   自动化测试是我从进入这个行业开始,听到最多的词汇之一了.大家,特别是手工测试工程师,很多都想了解自动化测试,学习工具,并以此提高自己的收入.今天我不讲工具.而是讲讲这个词背后的原理,为读者从事自动化测试工作打一个理论基础.如果打算从事专职自动化测试工作,不论是你原来是开发人员,还是手工测试人员,都必须了解这个基础.以我实际上的工作中遇到的新人来看,最缺的就是这个理论基础,而工具大家都能学会.我下面用自顶向下的方式来解释自动化测试的原理,从高度抽象讲到具体内容.当然这些只是我的个人理解,整理

我对软件测试行业的个人理解 2

上一篇讲到接口测试对个人的好处.而对公司来说呢? 首先你招人做接口测试的话,成果很容易看得到,想刷KPI的技术负责人/测试负责人们,做接口测试可以很容易地提高测试覆盖率,实现持续集成测试.当然,如果你的系统架构上就不适合做接口测试的话,那就没办法了.有段时间流行SOA架构的东西,挺适合做接口测试的.后来的云计算,我其实不太了解,但我以前公司(某硅谷150强里排70多位的某公司)云计算组的测试也就是测测接口,偶尔做个爬虫,再做做性能测试,最后做成持续集成的,最后再把这套东西跟测试管理平台一接,往他

软件测试行业的职业素养

很多人懵懵懂懂进入了软件测试行业,有些人做的开开心心,事业发展顺顺利利,有些人不断地换工作,每次工作都不开心,不知道是自己怎么了,还是周围怎么了.在不断地换工作过程中,你有考虑过自己是否适合这个行业吗?下面我来给你讲下软件测试人员的基本素质. 软件测试人员的基本素质你根据自己的判断觉得自己很OK,想入行,但软件测试行业会喜欢你吗?你符合行业的职业道德吗?可能有些人觉得这都不重要,重要的是我喜欢.但是我个人觉得这很重要.这里插一个真实的例子:一家杭州软件测试公司主管上周开掉一个很有技术能力的成员,

软件测试行业

很多人对软件测试行业并不熟悉,下面来给大家讲讲软件测试这个行业的乐趣.烦恼.第三方测试.测试技术的发展方向和趋势.从这4方面给大家软件测试,让大家对这个行业有一定的了解. 软件测试的乐趣 首先是一种程序破坏的纯粹快乐.如同玩保龄球时感到愉快一样,生活压力让更多的人喜欢破坏事物. 其次是这种破坏行为具有价值,内心深处,我们惧怕被他人发现我们的破坏行为,但测试过程中的这种破坏行为对他人是有所帮助的.工作就是鼓励我们这么做. 再次是整个过程体现出魔术般的力量.你的一个细微的操作,有时就能让一个庞大的系

详谈软件测试体系框架的理解

详谈软件测试体系框架的理解 测试应该站在两点至高点上思考问题:产品质量,和效率上 用这几点来思考问题:是什么,为什么,怎么办 用测试框架来筛选过滤测试点:测试框架有:功能测试,性能测试,可靠性测试,负载测试,易用性测试,强度测试,安全测试,配置测试,安装测试,卸载测试,文档测试,故障恢复测试,界面测试,容量测试,兼容性测试,分布测试. 用用例设计方法把测试点变成可执行的用例:如:等价类,边界值,输入域,场景分析法,错误推测法,等. 排序:再依次按照紧急程度,影响严重程度,安排计划这些事. 文档输

软件测试行业展望

新年开篇,总结过去展望未来,18年对于我来说是个不平凡的一年,主动离开了相对安逸的岗位,经历了半996的生活,体验着国企的风采,一路走来收获满满,结识了很多朋友,最终也明白了很多道理.作为测试行业的小老鸟,借着19年闲暇之余根据自身感触展望一下软件测试行业的未来(有点写大了). 1.注重质量更注重速度 过去一个功能点的测试基本包括测试计划+测试方案+测试用例+测试执行+回归测试,整个流程下来至少三两天,而如今一个版本下来都不一定给测试团队三两天的时间,并且为了产品的品牌效益,质量更加严苛,未来整