首页 > 代码库 > 我对软件测试行业的个人理解 4

我对软件测试行业的个人理解 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众往上走 - 管理路线,走还是不走?

后面还有一些我想整理的

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

 

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