软件测试心得

  • 软件测试行业里工程师工作岗位的分类

   有按看不看代码分的:黑盒测试工程师、白盒测试工程师

        有按主要业务分的:金融测试工程师、通信测试工程师、本地化测试工程师、游戏测试工程师

        有按主要任务分的:自动化测试工程师、性能测试工程师、安全测试工程师

        有按被测软件分的:手机app测试工程师、手游测试工程师、网页测试工程师、客户端测试工程师

   有时也有按被测软件的语言、技术分的:java测试工程师、.Net测试工程师、数据库测试工程师

   还有和开发混在一起的:测试开发工程师、测试工具开发工程师、测试架构师

   最多的还是笼统的:软件测试工程师、资深测试工程师、高级测试工程师、测试主管、测试经理

        此外最常见的就是复合的,如:外包java测试资深工程师、ios手游高级测试工程师,把上面的各类定语随机组合

  • 工作岗位类型多导致的测试人员迷茫  - 再看行业的特点

       看上面这么多岗位,可以感觉到软件测试行业就是一个大杂烩,什么岗位都有,职业发展道路复杂得难以想象啊。

    所以论坛上经常看到测试工程师发帖说“工作X年,迷茫啊”,X的值从1到10不等,至于10年以上的,属于人到中年,也没时间来发帖表示迷茫了,或已转行了,当然这行业在中国一共也没多少年。。。

扫描二维码关注公众号,回复: 5312302 查看本文章

   这个行业有以下特点

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

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

https://www.cnblogs.com/yangxia-test/articles/4136717.html

关于测试工程师的职业发展思考
        2017年,因华为裁员、中兴员工坠亡等事件,“IT吃青春饭”,“中年危机”…一词又在网络上掀起了一股巨浪。那些面临即将走上IT工作岗位,或已在IT工作岗位的青中老年们,不得不开始正视及思考自己的未来,有些或已豁然开朗、有些或已上岸、有些可能还在焦虑踌躇、有些可能一笑置之、活在当下。作为已在IT工作岗位上混迹十来年的屌丝,也谈自己的一些理解。

        哲学上有三个唯心问题:我是谁?我从哪里来?我要到哪里去?这三个问题,相信混过知乎的人都知道,因为已在知乎上被大家玩烂了。当然在万千回答中,也有一些人的一番见解也是非常正视、严肃的。而今天我要发表的不是宗教哲学或人的起源,仅仅想说明在我们的IT职业生涯起始,也许我们该进行的这番思考。

        从人的本能来说,活着,自然而然地就想追求幸福。只是每个人对幸福的定义不一样。也许你觉得幸福就是一家人坐在一起吃个饭、也许就是买个甜品慢慢地品尝、也许就是看一场电影…其实,幸福,就是你觉得此刻是最适合的。而此刻,即当下的你;最适合,即当下你的需求被满足了。那么,当下你的需求是什么,未来的需求又会是什么呢?可以先看看马斯洛的需求层次。马斯洛需求层次,将人的需求分成了5层次:

            第一层次生理需求;

            第二层次安全需求;

            第三层次社会需求;

            第四层次尊重需求;

            第五层次自我实现。

而人只要活着,就有生存需求,即满足生理需求和安全需求;当生存需求得到一定满足后,自然而然就会追求归属需求,因为人是一切社会关系的总和;当生存与归属都得到满足了后,也许有一部分会停留在这一层次,也许有一部分人会往上一层次,追求自我实现,这也是为什么历史那么会有那么人追求名留青史的原因。

        再回过头看看那三个唯心问题,首先,我是谁,即认识自我人格特点及可运用的资源;有什么人格强项,有什么人格弱项。其次,我要到哪里去,即明白自己未来想要达到的目标,未来想要达到的层次;比方说30岁、40岁、50岁在工作上达到什么层次,在生活上达到什么层次。最后,我从哪里来,即理解自己当下所处的层次;比如,我的原生家庭是什么情况、我当下面临的最主要问题是什么。从而结合三方面来制定职业规划。比如说,咱们IT测试工程师的例子如下:

    下面就IT测试工程师的职业发展路径:激流勇退、退居二线,从技术走向管理和从技术走向领域专家的三方面来阐述发展;

激流勇退、退居二线

        IT行业相比其他非金融行业,起薪高;相比金融行业,个人能力占绝大多数因素,无须依赖太多的其他资源,找工作更容易。因此,如果只是想在最初的几年奋斗,获取一笔相对同等年龄段里较高的收入,帮助自己生存下来,可以在有家庭负累之前,努力奋斗在项目化线上,等准备有家庭负累时,考虑退居二线,转岗需求分析师、质量保障工程师、配置管理工程师、运维或客服,甚至跳槽甲方公司做业务人员或者运维人员等生命周期更长一些、压力相对小一些的职业。主要原因是:往小了说,项目容易出业绩,对短期的收入提升有较大的帮助;往大点说,项目接触的软件过程比较全面,帮助积累软件工程过程各个阶段的流程、规范、技术知识,可以快速地掌握一个软件研发的生命周期。对于将来打算往上下游部门转岗、抑或是内部职能协同部门转岗来说,都是打下了坚实的技术基础;再往大点说,合作的人员对象比较广,从外部的客户,到内部的上下游部门、职能系统部门,建立相对比较宽泛的人际关系。这些对于无论是往内部的上下游部门转岗、抑或是职能转岗,甚至于跳槽甲方都是非常好的人脉积累。

从技术走向领域专家

        靠技术吃饭,即靠能力吃饭,能力是个比较抽象的东西,无法一眼就能鉴定的。因此,很多公司在招聘高级别的技术专家,一方面,通过面试获取一定信息;另一方面,通过其他的渠道,获取候选人在原公司的工作表现情况。如果技术专家是个善于沟通表达的,那也还好,通过面试的概率比较大。如若不太擅长表达,那就难说了。再想象下,一个在某个领域里已经积累十几年的专家,找工作时,还需要自己投简历,等着意向公司进行简历筛选、笔试、面试,是不是有点low的feel?再想想,即使技术专家通过了面试,进入了目标公司,全新的合作伙伴、全新的领导、全新的工作模式,是不是都需要有一个熟悉并建立信任的过程。好点的情况,就是碰见一个伯乐,给予了比较广阔的环境供发挥,展现自我价值。而通常,都是需要从0开始,从最底层开始做起,也许就由于水土不服,新公司的发展还不尽如人意,从而被打回到了一线。再想想,如果换成猎头公司主动找到你,给你介绍高阶的就业机会,是不是感觉高大上了点。再进一步想想,新的领导也对你的过往和能力有个比较全面和深刻的认识,与你已建立了相对信任的基础;新的合作伙伴,因了解你的过往和能力,或者曾经受过你的影响,与你已建立了比较良好的友谊;新公司的一切发展是不是就有了更好的基础,未来相对的是不是也会有更多的可能性。

        说了那么多,其实就是想传达的是:只能通过干活,展现自我能力,影响周围的人,影响的只能是个点;需要学会通过学习、干活修炼自我能力,通过知识传播、与行业技术沟通交流,建立比较广泛的影响,树立领域专家形象。

那怎么做到呢?

        1.修炼内功

                 测试领域,基础设施主要涵盖软件测试过程规范、软件测试技术、软件测试管理、开发技术;应用领域层面主要涵盖被测软件业务行业知识、自动化测试原理及测试框架、性能测试原理及测试框架、兼容性测试原理及测试框架、安全性测试原理及测试框架。因此,首先,需要坚持不懈地学习编程语言及可应用的开发框架知识,建立被测系统的技术知识。其次,前期可通过不断地挑战项目,从项目参与者到项目管理者的进阶路程,以掌握软件测试过程规范、技术及管理;最后,根据发展方向,做到T型人才;在主发展方向上深耕细作,在其他辅助方面做到基础了解;比如,项目测试管理,需要在业务行业知识上深入学习,在自动化测试、性能测试、兼容性等方面做到基础学习,拓宽视野,制定更好的测试方案,以及与其他团队有效协同;

        2.及时总结,写博客、做培训,分享传播知识   

                 修炼内功时,利用框架性思维,建立学习框架。对内,及时总结,形成领域知识,增加授课课题,及时参与内部培训,分享经验总结,锻炼授课能力。对外,系统运营自己的博客。一方面,总结梳理掌握的知识;一方面,后续方便后续的回顾;另一方面,分享他人,提供一定的指导作用;建立行业技术讨论圈,树立领域影响力。

        3.有条件多参与行业的培训、研讨会议,套个脸熟

                 有很多培训公司,会定期举办行业技术讨论会,建立讲师资源。或者定期举办培训沙龙。可以多参与,交流。了解讲师资格条件,提供授课课题,争取对外培训或经验分享。

从技术走向管理

        管理是一门科学,更是一门哲学。三五人的团队负责人,叫做管理;几十号人的团队负责人,也叫管理;上百人的团队负责人,也叫管理;乃至几千几万的,都叫管理。但是不同团队规模需要的管理能力模型是有差异的。给管理分个层次,把组织一线人员开展工作及为结果负责的团队管理者,称之为一线主管;负责传达公司战术(分解KPI指标),并组织一线主管开展工作,并为KPI执行埋单的,称之为中层管理者;根据公司战略,制定战术(KPI指标)组织中层管理者开展工作,并为公司的某一块运营埋单的,称之为高层管理;制定公司战略,为公司整体经营埋单,称之为公司执行总裁;

        大多数IT的一线主管都是技而优则管,技术强、工作做的漂亮,才更容易脱颖而出,同时,也是考虑一线主管需要更多地聚焦于具体的工作开展,正所谓“兵熊熊一个,将熊熊一窝”。因此,一线主管,一方面,要对自己所负责领域的业务、流程、技术的熟练掌握;确保制定的执行策略,高效且贴合实际。也是为了打造执行团队,进行人员梯队培养,积累培训素材;另一方面,由于软件行业的技术更新迭代速度快、产品的生命周期短,因此,还需要较强的学习能力,持续不断地学习行业的新业务、新技术,从而善于发现问题、解决问题,改进工作效率和质量。最后,还需要对上司指令的绝对服从,就好比如将军制定了战术,下达了任务,而任务执行时,将领根据自己的想法随意调整了方案,最后因为局部的方案调整,导致全局的战术发生了变动。这有可能带来了更好的结果,但绝大多数都是带来了更坏的结果,毕竟上司掌握的信息更多,看问题相对更全面点。退一万步说,执行过程,稳妥比风险来得更重要。

        中层管理者,更多聚焦于搭班子、建梯队,上传下达、协调沟通,同时需要为新技术、新手段做决策,以及寻找自己的安全壁垒。说白了,就是一来,要建立高效的执行团队,保证工作不折不扣地执行;二来,要建立良好的人际关系,包括与下属、与协同部门、与上级,确保沟通更顺畅,资源协调更容易,从而有效地保障了工作的开展;三来,要持续的行业学习能力、技术学习能力,不断积累行业知识,建立前瞻性视角,确保团队的业务、技术水平与时俱进,跟上行业发展的脚步,以及更好为辅导、协助一线管理者开展工作。最后,因为中层管理者,脱离一线执行,当公司、行业整体发展减缓或者萎缩时,处于最容易被裁减的一拨人,因此,中层管理者相对更缺乏安全感,更急需建立自我核心竞争力,所以不要过早地放弃了技术能力,应时刻保持可管、可做的能力。同时,需要多参加一些行业知识交流分享、培训等,建立广泛的行业人际关系圈。

        高层管理者,更多是为公司的运营制定战术,为具体的某一块业务运营埋单。因此,需要对外可营销、拓展业务,维护客户关系,建立有效地客户关系网及资源;对内确保业务被高效落地执行,上有领导支持、下有高效执行团队。
https://blog.csdn.net/Somnus_tester/article/details/79545302

猜你喜欢

转载自blog.csdn.net/ly930156123/article/details/86621167