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

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

时间: 2024-12-14 15:53:58

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

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

我觉得我上一篇写得太简略了,估计很多人看了觉得不过如此,我决定在这篇里深化一下. 本文中,我定义技术路线长度或技术基础的标准为:普通人完全掌握一种技术所需要的时间,我把他的单位名称定义为Y,M,D (年,月,日) 比如3Y表示某技术需要普通人花3年时间来掌握,1M表示某技术需要普通人花1个月时间掌握. 本文有以下前提条件,基于我的个人理解: 前提一 计算机专业应届生的技术路线基础理论上为4Y,因为大学要读4年 培训班毕业非计算机专业的学生,以培训一年为例,技术基础为1Y 黑盒手工测试的技术路线为

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

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

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

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

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

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

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

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

软件测试行业的职业素养

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

软件测试行业

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

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

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

软件测试行业展望

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