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

我对软件测试行业的个人理解 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. 做接口测试依赖于开发人员的配合,我们没时间通读代码(对更多的人来说,其实读也读不懂),开发愿意帮助你的话,在这个岗位上你的工作很容易取得成就。

  接口功能测试是测试行业的一个黄金点。其后自然而然的你可以接触接口的压力测试,并接触正宗的性能测试。(待续)

 

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