我对软件测试⾏业的个⼈理解1
我想整理⼀下这些年来,对于软件测试⾏业的理解:)于是就有了这个⽂章。
软件测试⾏业⾥⼯程师⼯作岗位的分类
  有按看不看代码分的:⿊盒测试⼯程师、⽩盒测试⼯程师
有按主要业务分的:⾦融测试⼯程师、通信测试⼯程师、本地化测试⼯程师、游戏测试⼯程师
有按主要任务分的:⾃动化测试⼯程师、性能测试⼯程师、安全测试⼯程师
有按被测软件分的:⼿机app测试⼯程师、⼿游测试⼯程师、⽹页测试⼯程师、客户端测试⼯程师
  有时也有按被测软件的语⾔、技术分的:java测试⼯程师、.Net测试⼯程师、数据库测试⼯程师
  还有和开发混在⼀起的:测试开发⼯程师、测试⼯具开发⼯程师、测试架构师
  最多的还是笼统的:软件测试⼯程师、资深测试⼯程师、⾼级测试⼯程师、测试主管、测试经理
此外最常见的就是复合的,如:外包java测试资深⼯程师、ios⼿游⾼级测试⼯程师,把上⾯的各类定语随机组合
⼯作岗位类型多导致的测试⼈员迷茫  - 再看⾏业的特点
看上⾯这么多岗位,可以感觉到软件测试⾏业就是⼀个⼤杂烩,什么岗位都有,职业发展道路复杂得难以想象啊。
  所以论坛上经常看到测试⼯程师发帖说“⼯作X年,迷茫啊”,X的值从1到10不等,⾄于10年以上的,属于⼈到中年,也没时间来发帖表⽰迷茫了,或已转⾏了,当然这⾏业在中国⼀共也没多少年。。。
  这个⾏业有以下特点
1. 收⼊差距极⼤,有⽉薪四五千的⿊盒测试⼯程师,也有年薪⼏⼗万的资深测试⼯程师
2. 技术差距极⼤,有只会⿏标点点点的⼿⼯测试⼈员,也有精通程序代码的资深测试⼈员
3. ⼯作内容差距极⼤,有⼈每天点点⿏标,测测XXX信息管理系统,有⼈测复杂的⾦融业务,有⼈写测试⼯具,有⼈测服务器、中间
件、测socket、测⾼并发,有⼈搭建测试平台
4. 不同岗位间技术壁垒严重,⽐如你让⼀个⿊盒⼿⼯测试⼈员去看两个安全测试⼈员做渗透测试,他很可能完全看不懂这些⼈在⼲啥。
如果你给⼀个⽹站⼿⼯/⾃动化测试⼈员做⼀份数据库测试⼈员的笔试题(考具体数据库的SQL、函数、存储过程),很可能他要交⽩卷。当然反过来说,要从技术型测试岗位转⾏去做⿊盒⼿⼯测试⼈员是毫⽆壁垒的,但⼀般不会有⼈这么转。。。。
5. ⼊⾏门槛低,⼀个其他专业的⽆关⼈员通过三个⽉简单培训,即可掌握普通的⿊盒测试⽅法,成为⼀名软件测试⼯程师,拿3-5k薪⽔
6. ⿊盒⼿⼯测试是主流职业,国内⼤部分中⼩型公司都需要⼤量的⿊盒⼿⼯测试⼈员,同时巨头级的⾦融机构、互联⽹公司仍然需要资
深的⿊盒测试⼈员
  所以造成了⼤量外⾏⼈员涌⼊软件测试⾏业⾥的⿊盒⼿⼯测试岗位,并给⼈以测试⼈员技术不⾏的总体印象。
软件测试⾏业下细分职位的发展路线
⾸先⿊盒测试有以下特点:
1. 门槛低,培训三个⽉可掌握;我做外包的时候,曾有公司将3个⽉培训的应届⽣伪装成2年经验⿊盒测试⼯程师派去客户⽅⼯作。客户
⽅毫不怀疑,并最终给以好评。
2. 技术路线长度为零,⼀⼊⿊盒不复返,想做技术难难难
3. 测试技术知识⽆更新,仍然是上世纪六⼗年代左右的⿊盒测试⽅法
4. 依赖业务知识作为核⼼竞争⼒,如⾦融测试⼯程师
5. 职业发展路线⼀般是测试管理⽅向或⼲脆转⾏。可以说绝⼤部分从业⼈员如果不想转⾏的,都想做测试管理,然后可想⽽知竞争激
烈,⽽且真的只会⿊盒测试的⼈以后越来越难拿到管理岗位。为什么?因为现在有很多⼈懂⼀点技术
  所谓懂⼀点技术,就是会做⼀点⾃动化测试。
  ⾃动化测试有以下特点:
1. ⼈⼈都在提,职位描述⾥都有,但⼤多数⼈都只懂个⽪⽑(因为他们做⿊盒做久了,技术路线毫⽆积累)
2. ⾃动化测试⼯作难,⾸先⾃动化测试对企业来说成本极⾼,长期投⼊才能见效,这对国内⼩公司来
说是不可能的,其次,项⽬适合
⾃动化的不多,⽐如要做8年的40国语⾔的本地化测试项⽬就很适合,但毕竟少,⼀个极其不稳定的⽹站就很不适合,但国内⼤部分是
这种。再次,招不到会做的⼈,你能招到的⼈基本上有两种,⼀是做⿊盒测试为主,懂⼀点⾃动化测试的⼈,技术上属于基本指望不上的,学习能⼒基本没有,要靠⾼⼿教出来的;另⼀种是原来做开发,因压⼒⼤/⽆聊等原因转⾏做⾃动化测试的⼈。这种技术上有的还是可以的。但问题是测试思维⽋缺。能做,但不⼀定做得好,经常陷⼊⾃动化测试的陷阱和泥潭中。但你如果想要招懂技术、测试思维好的⼈基本上招不到,当然钱多的巨头是可以把这些⼈⽤钱砸出来的。
3. 懂⾃动化测试技术不⼀定能让你到⾃动化测试⼯作,但对⼿⼯测试⼯作的帮助极⼤。所以⿊盒测试⼈员如果怕失业、怕被应届⽣
挤⾛的,务必学⼀点点⾃动化测试来提⾼表⾯上的技术竞争⼒。就算不会做,也要会吹,⽽且基本上放⼼好了,⼀般公司是承受不了⾃动化测试的成本的,不会真的让你做⾃动化测试。
4. 全靠⾃学,没⼈教。我不懂⾃动化测试的时候看国内的各种⾃动化测试教程、书籍、视频,都觉得⾼⼤上。我懂了之后看这些觉得都
是shi。为啥? 他们不教原理,只教⼯具。不教思维,只教⽅法。后果是,你学了⽪⽑,学了“术”,⽽不懂原理,不懂“道”。⾃学者推荐使⽤英⽂资料⾃学,⽐中⽂资料强100倍。中⽂资料当然也有好的,但极少,更多的是某些⼈为赚钱写的,也有⾃⼰就⼀知半解的⼈瞎写-害⼈不浅。英⽂资料也有瞎写的,但好资料多。
5. ⾼端岗位和开发⼈员的技能重叠性⾼。这有个什么问题呢,就是你做⿊盒测试懂⼀点⾃动化测试的⼈,在竞争⾼端⾃动化测试岗位
时,⽐不过资深开发。去看看互联⽹巨头⾥对⾃动化测试⾼端岗位的职位描述就发现了,跟你平时⽤的东西完全没关系。也就是说,⾃动化测试的从业⼈员想⾛⾼端岗位,需要⾯对来⾃转⾏的开发⼈员的巨⼤挑战。
6. 可被⼿⼯测试替代。对⼤部分中⼩公司⽽⾔,⼀旦因为对⾃动化测试的成本估计不⾜,在⾃动化测试上就会陷⼊陷阱和泥潭。然后基
于国庆,很多公司会⽤⼤量的⼿⼯测试实习⽣来代替⾃动化测试。效果也还⾏。所以除⾮是很适合⾃动化测试的项⽬和对成本有充分估计的公司,⼀般不会去做⾃动化。招⼤量实习⽣有另⼀个好处,就是容易产⽣管理岗位,⿊盒测试出⾝的⼤多数就等着这种机会来做主管。
7. 职业发展路线⼀般就是⼀直继续做⾃动化或尝试挑战巨头公司的⾼端岗位,更多的⼈会⾃动化之后去和⿊盒测试⼈员竞争测试管理岗
位,这时他们有技术上的先天优势。
  ⾃动化测试的陷阱和泥潭:
1. HP公司的QTP⼴告深⼊⼈⼼,录制回放的⾃动化现在仍有许多⽀持者。但这类岗位停留于⼯具的使⽤上,对个⼈来说,技术路线极
短。因为这种⼯具就是为了让不怎么会技术的⼈使⽤⽽设计的。对公司来说,商业⼯具确实是成本最低的⾃动化测试解决⽅案。所以有不少公司仍然⽤他。但他很难招到愿意为公司牺牲⾃⼰的技术路线的⼈,⼀般他只能招到懂⼀点点技术的⿊盒测试⼈员来做这种⾃动化测试。这⾥有⼀个很⽼的典故:某测试⼈员来到⼀家软件公司,技术负责⼈指着⾓落⾥⼀台积满灰尘的电脑说,这是我们的⾃动化测试专⽤机,不过录制的脚本⽼是跑不起来,现在我们已经不太搞⾃动化测试了。
2. 开源⼯具单独⽆法使⽤,⽽懂⼀点技术的⿊盒测试⼈员搭不好测试框架。以⽹站测试威⼒,最流⾏的开源⼯具selenium,必须和测试
执⾏器(xunit系列)⼀起⽤。团队需要⾄少有⼀个⼈有搭建测试框架的能⼒。实际上很多团队没有这号
⼈。搭出来的测试框架⽤四个字形容就是⼀塌糊涂。总之这对后⾯的⼈影响很⼤,如果搭框架的⼈已离职,你最好想清楚要不要去这种项⽬做⾃动化测试。⼀个蹩脚的框架会让你痛不欲⽣,产⽣还不如做⼿⼯测试的念头。
3. 为什么懂⼀点技术的⿊盒测试⼈员搭不好测试框架。为什么懂⼀点测试的开发⼈员也搭不好测试框架。因为,他们有⼀个共同特征:
不懂⾃动化测试原理。⽐如说,⾃动化测试要关注可维护性,要设计合理的代码重⽤机制,以⽹页测试最流⾏的开源⼯具selenium来说,官⽹就有介绍页⾯对象模型的使⽤⽅法。但⼀般⼈看不懂。再⽐如搭⼀个好的selenium框架需要很好的编程语⾔基础。假设你招了⼤部分转⾏做测试的初级开发⼈员或懂⼀点技术的⿊盒测试⼈员⽤java和selenium来做⽹页⾃动化测试,你跟他说“多⽤组合少⽤继承”,他完全不懂你说什么,他反正写java就不管三七⼆⼗⼀继承继承再继承,他娘的他就会个继承,要么他⼲脆把所有东西塞⼀个类⾥⾯,然后你会看到他们在测试代码⾥写出⼏千⾏的上帝类、写出⼗⼏个类的继承链。你跟他说testNG的测试执⾏机制,他也⼀头雾⽔。我看到过某实际项⽬中使⽤了5年的⾃动化测试脚本,⾥⾯竟然是⽤⾃⼰的代码重新实现testNG⾃带功能的,并且除了增加测试代码复杂度以外毫⽆任何好处(难道是他们初代作者为了提⾼测试⼈员不可替代性的⼤智慧?),还有开发⼈员异想天开得⽤spring来封装测试类的(那他肯定没⽤过xunit系列测试执⾏器)。还有时候你会看到⼏千⾏测试数据和⼏千⾏测试预期结果放在同⼀个⽂本⽂件⾥,然后后来⼈不到要的数据,就胡乱地往这个巨⼤的⽂
本⽂件⾥写⼀⾏⾃⼰要的数据,他也不管是不是跟前⾯的重复了。对这种,我只想说⼀句,那个已经离职掉了的原作者,你回来让我打⼀顿消消⽓好不好。
  综上所述,基于这些原因,中⼩公司你想搞⽤户界⾯层的⾃动化测试,多半搞不好。但⾃动化测试不等于⽤户界⾯⾃动化测试。还可以搞接⼝,搞单元测试。接⼝测试是⼀个很适合做⾃动化的切⼊点,如果技术负责⼈问我怎么开始做⾃动化,我就会推荐他从接⼝测试的⾃动化开始。这⼀点对公司、对测试⼈员都有巨⼤好处,是少见的双赢。
  我做接⼝测试⼯作时的体会:
1. 这他娘的⽐⿊盒测试简单⽆数倍,薪资竟然⽐⿊盒测试⾼。
2. 太容易了,好爽。
3. 不要给我招懂⼀点技术的⿊盒测试⼈员,也不要给我招转⾏做测试的初级开发。好吧,只能招到这样的。最后他们做的东西我都要返
⼯⼀遍,还不如我⾃⼰做来着……算了慢慢教。如果不懂⾃动化测试原理,你烦我也烦。你烦做不好,我烦教不会。
4. 做接⼝测试依赖于开发⼈员的配合,我们没时间通读代码(对更多的⼈来说,其实读也读不懂),开发愿意帮助你的话,在这个岗位
app接口测试工具上你的⼯作很容易取得成就。
  接⼝功能测试是测试⾏业的⼀个黄⾦点。其后⾃然⽽然的你可以接触接⼝的压⼒测试,并接触正宗的性能测试。(待续)