软件测试工程师 路在何方?如何发展?职业规划是怎样的?

时间:2023-01-12 11:18:21

《测试架构师修炼之道》之 测试工程师职业规划读后感

读了《测试架构师修炼之道》之后,内心还是惶恐的,程序员35、40岁这两道坎如何应对,测试工程师其实也不例外。这本书第2章节主要讲了软件测试工程师的职业规划,内容还是非常不错的,对一些内容整理下,留作笔记,以备后用。

1、软件测试的职业发展方向

软件测试在职业发展方向上,概括来讲分为“管理”和“技术”两大类。另外也可以在质量领域发展。

1.1、软件测试在管理上的发展

比较流行的设置包括测试组长、测试经理、测试代表、测试主管、测试总监、测试部长等,不同的公司有所差异,按照管理级别的高低,大致分为以下三级。

1.1.1、初级软件测试管理者:测试组长

  • 经验:一般由两年左右工作经验的工程师担当;
  • 下级:有企业规模和产品复杂度存在差异,可能会管理2-5名软件工程师;
  • 职责:一般不会负责整个产品,只是负责其中的一个或多个特性;从事的管理工作大多仅集中在测试计划的制定和执行上;常会负责产品重点、难点测试;此外还需要负责带新员工

1.1.2、中级软件测试管理者:测试经理、测试代表、测试主管

  • 经验:三者排名不分先后,都是中级管理者;一般由4年左右工作经验的工程师担当;
  • 下级:可能会管理10-20名软件测试工程师(包括测试组长);
  • 职责:主要负责对象为产品,重要的工作还是运作项目测试,制订并执行测试计划测试总结后还需对产品质量进行评估。给出发布建议;依然还是产品骨干,还会负责产品测试重点、难点工作,所以也不会是纯粹的管理者。
  • 技能:需要掌握更多的管理知识,深入理解项目价值,做好项目管理质量管理成本管理时间管理风险管理人力管理。还需要和开发人员、市场人员、服务人员等密切配合,沟通协调能力必不可少。

1.1.3、高级软件测试管理者:测试总监、测试部长

  • 经验:一般都有10年以上软件测试工作经验;
  • 对象:主要是产品线或公司
  • 职责:需要理解产品的商业目标,直接对产品成功负责。对团队发展负责,进行人员招聘和培养,留住关键人才,提高更你性能不合格人员,提升团队胜任力和职业能力;负责项目财务管理(预算和控制);负责资源计划与分配;持续改进测试能力,提升效率和产品质量,从测试的角度对交付产品的成本、周期和质量负责;依然也不会是纯粹的管理者,依然需要对测试各种技术的领先性

1.2、软件测试在技术上的发展

在技术上的发展似乎不像在管理上的发展那么明确,一种观点是测试资历和能力分为助理软件测试工程师(或者是实习软件测试工程师)、初级中级高级主任(或资深)软件测试工程师。但是作者认为没有突出“软件测试技术”,作者更倾向一种简单分法---产品测试技术和专项测试技术产品测试技术:把某个具体(或一类)产品测试得更好的技术; 专项测试技术:不针对具体的产品,而是测试领域普遍的技术。

1.2.1、产品测试专家:软件测试架构师

  • 方向:软件测试在技术上可以向产品测试技术专家方向发展;
  • 别称:有些公司称产品测试技术专家软件测试系统架构师(书中简称为测试架构师
  • 测试架构师和系统架构师的区别软件测试工程师 路在何方?如何发展?职业规划是怎样的?

1.2.2、专项测试工程师

  • 方向:还可以向专项测试工程师方向发展,成为软件测试某领域的专家

  • 分类: ①从测试体系角度看:测试体系中任何一个环节,测试策略、测试分析设计、测试执行、测试评估、测试流程等每个领域包含了很多可以深入发展研究的技术,比如自动化测试技术测试工具(产品测试模拟工具和测试流程管理工具)开发缺陷分析测试评估等技能; ②从产品质量属性看:专项测试技术还包含性能测试技术、可靠性测试技术、安全性测试技术等;

  • 测试技术类专项测试技术软件测试工程师 路在何方?如何发展?职业规划是怎样的?

  • 质量属性类专项测试技术软件测试工程师 路在何方?如何发展?职业规划是怎样的?

1.3、“角色”和“段位”

如果只为没有发生变化,工作两年的测试工程师和工作3年的测试工程师差别在哪里?工作3年的测试工程师和工作4年的测试工程师差别又在哪里? 书中作者引用了姜汝祥的《请给我结果》这本书中的一个关于“秘书九段”的故事,从中找到了答案(此故事后续单独找出来分享)。 总结测试组长、测试经理、测试架构师、测试总监等,都是被赋予了不同责任的“角色”,“角色”的转变在一定程度上反映了职业的发展。但是不能说“发展”一定要“角色”发生变化。从“秘书”变成了“老板”,是“发展”没错,同样从“一段秘书”升级为“二段秘书”也是“发展”。

普通测试工程师的“测试六段”:

  • 测试一段:执行测试用例,记录问题反馈给开发,使得开发能读懂问题描述的含义;
  • 测试二段:对产品需求有一定的了解,能根据产品需求 分析、设计产品的测试用例;发现问题能初步定位;
  • 测试三段:对需求和实现有较深入了解,设计用例会注意用例的有效性,测试用例会考虑使用自动化测试等方法提升测试执行的效率;
  • 测试四段:深入理解产品需求和实现,理解产品的隐形需求,对产品性能、可靠性、易用性等非功能属性的测试均为有所涉及,并掌握其中的测试方法,会使用测试缺陷分析技术,会评估产品质量;
  • 测试五段:不断追求最适合产品的测试技术,关注测试过程改进,推动产品测试技术的进步;
  • 测试六段:走向前端,做缺陷预防,能将测试方法标准化,并固化为测试工具和流程。

1.4、软件测试在质量领域的发展

  • 方向:可以向“质量管理”领域发展;
  • 质量和软件测试的理解:“软件测试”是一种“质量活动”,但是不能认为“质量”活动就是“软件测试”。
  • 质量的发展:工业革命时期,“质量”叫“质量检验”(QI),就是关注“产品能否符合工厂制定的标准”;随着社会生产力的发展,“质量控制(QC)”被提出,标志着开始从用户的角度来评价质量。在ISO9000(1986,1994)中又进一步发展为“质量保证(QA)”,“质量是设计出来的” “质量就是满足用户的需求” “客户满意度”成为新的质量发展方向。现在质量进一步发展为“卓越运营”,质量已经被提到了企业战略的角度。“质量管理”也成为了现代企业管理中非常重要的一个环节。
  • 方向1-产品流程设计:例如IPD
  • 方向2-企业质量管理者:质量大师朱兰把“质量策划”、“质量控制”、“质量改进”称为质量管理三部曲。 ①质量策划:致力于制订质量目标并规定必要的运行过程和相关的资源以实现质量目标; ②质量控制:致力于满足质量要求; ③质量改进:致力于增强满足质量要求的能力。
  • 质量管理体系方法: ①建立一个以过程改进为主体的质量管理体系; ②明确体系内各过程的相互依赖关系,使其相互协调; ③控制并协调质量管理体系各过程的运行,关注其中的关键过程,规定关键活动的运作方式和模式; ④理解为实现共同目标所需要的作用和责任,减少因为职责不明导致的障碍; ⑤子行动前确定做需要资源的需求; ⑥设定系统目标以及各个过程的分目标,通过分目标的实现,确保实现预期的总目标; ⑦通过监控和评估,持续改进质量管理体系,不断提高组织的业绩。
  • 方向3-客户满意度管理专家: ①重点是识别关键用户的满意要素和做好与用户接触点相关的质量保证; ②“关键用户满意度要素”是指通过对特定细分市场进行调查后,分析得出这类用户对特定的产品质量要求和服务特性,并把关键客户满意度要素作为企业产品与服务战略的输入,使企业最大限度地保持产品竞争力; ③“用户接触点相关的质量保证”:是指包含客户可以感知到的产品和服务,其中服务包括产品推广、投标达标、供货保障、工程交付、技术支持、备件支持和客户培训等。 ④还需要对用户有很好的需求和理解。这里的需求不仅仅局限于产品,而是客户可感知的方方面面。

2、软件工程师职业规划建议

2.1、做管理还是做技术

2.1.1、思想的转变

①也许受到中国传统观念“学而优则仕”的影响,很多人会不假思索地选择做管理; ②甚至会认为一个30岁的软件测试工程师还在做技术是一件丢人的事情; ③其实先抛开问题不说,单纯从时间来推断,本科生正常情况下23岁毕业,到30岁有7年时间;研究生25岁毕业,到30岁只有5年时间,对软件测试这种深入难、且对从业者综合要求很高的职业来说,5年、7年其实并不算太长,对软件测试的理解只能算是“管中窥豹”而已; ④所以建议软件工程师在计划职业发展里程碑时,可以把时间放得更长一些,5年一个小台阶,10年一个大台阶

2.1.2、软件测试在“技术方向”和“管理方向”上又是可以相互转换、交叉发展的

①这是因为软件是一门基于实践的学科,对软件测试来说,“管理”不可能是“绝对的管理”; ②软件测试的管理者首先要是产品测试技术专家,这是“做正确的事”的基础;很难想象一个不懂测试技术、不理解各项测试活动的软件测试管理者如何评估软件测试的重点、难点,如何做计划,如何评估风险控制项目进度; ③“技术”也不能是“绝对的技术”,不理解“价值” “目标” “成本”的技术人员容易犯的错误就是陷入“唯技术论”中,缺乏“管理”思想会让他们制定的测试策略不切实际,一纸空文的测试策略是没有意义的; ④一个理想的测试团队,具有测试经理(测试代表)和 测试架构师两个角色。测试经理负责管理,测试架构师负责技术,但并不意味着测试经理只有管理,测试架构师只管技术。相反,两者要熟悉彼此领域的关键活动,能够评审关键的交付件,相互能够提供各自领域关键活动的决策参考,可以相互备份; ⑤所以建议软件测试管理者一定不要过早的放弃技术,走所谓的“纯管理”路线,把自己陷入各种管理会议、沟通协调中。不要认为读了几本书,参加了几次沙龙论坛、几次培训就能掌握关键的测试技术方法,只有在产品测试中不断地实践、总结、再实践、再总结,才能不断提升自己。如果技术有短板,测试管理水平也不能真正上去,随着测试资历的加深,职业能力和资历变得越来越不匹配,个人职业发展道路反而越来越窄。

2.2、对测试工作“跳槽”的建议

2.2.1、不要轻易跳槽,学会“韬光养晦”

100个个人心中有100个哈姆雷特,100个人心中有100个想跳槽的理由。概括无非就两种:一是遇到难以解决的问题;二是现有职业和自己的职业规划不符。 ①对于第一种情况,建议是理性、慎重、再理性、再慎重、没有一个“完美”的公司,职场上遇到的问题很可能是**“共性**”问题,比如加班、绩效考评不公平等,很难通过说跳槽可以彻底解决问题了; ②低于第二种情况,如果通过跳槽可以获得更好的职业发展机会和更广阔的职业发展舞台,比如公司更规范,职业发展通道更明确,职位上有所提升,当然要跳槽; ③不建议做“平级”之间跳动。当然如果B公司提供了比A公司高很多的薪水,也许可以考虑一下。“平级”跳槽不会对个人能力提升带来明确的益处,而且要考虑适应新环境新制度新的人际关系这类隐形成本,考虑熟悉产品的成本,很多公司的HR对频繁跳槽的候选者有“稳定性差”的印象,当机会来临的时候,可能就抓不住了。 ④上策要学会“韬光养晦”。软件测试不仅需要实力,更需要机遇。比如目前的公司暂时提供不了“测试管理”的机会,与其自怨自艾,不如工作总寻找各种做“测试管理”的机会,如指导新同事工作组织分享测试技术改进测试流程等。另外可以观察那些优秀的测试管理者是如何处理测试项目事务的,琢磨他们解决问题的思路和方法,积累自己的经验,提升相关能力。有了这些准备,当机会来临的时候,你才能抓住。机会只会垂青有准备的人

2.2.2、跳槽时除了考虑公司,还要考虑测试产品的持续性

建议在跳槽的时候,除了考虑公司、薪水、职位之外,还要考虑产品的持续性,让之前的经验尽可能多地“复用”。相似的产品,不同的公司,还给了你一个站在新的角度理解产品、审视产品测试的机会。

2.3、软件测试创业

2.3.1、软件测试咨询

比如: ①测试技术培训; ②测试团队成熟度评估及改进; ③测试流程建设; ④测试项目改进; ⑤测试工具开发 。。。。。。

2.3.2、软件测试高端外包

①现在软件测试外包主要的运作思路是将公司认为非核心的部分外包出去进行测试,主要走“低端”; ②产品的非功能属性包括性能、安全、可靠性、易用性、兼容性等领域,每个领域又有若干个子领域,每个领域几乎都有自己的测试方法和测试工具,雇佣或培训测试人员掌握相关技能,购齐相关的测试工具,再搭建测试环境进行测试,对任何一个团队来说,都是一笔不菲的开销; ③软件测试高端外包内容针对的就是软件测试中的这些重要的非功能属性进行的专项测试。

2.3.3、测试工具开发

①软件测试工具可以分为和产品相关的测试工具、和测试技术相关的测试工具、和测试管理相关的测试工具; ②和产品相关的测试工具一般都是为了解决产品测试的具体问题而开发的,针对性都很强。如产品性能测试工具Avalanche、IXIA、LoadRunner;产品安全性测试工具Metasploit、BackTrack等。也可以根据产品测试难点有针对性地开发定制一些工具,如对一些私有协议开发协议异常测试工具、开发模拟用户大量呼入的测试工具等; ③和测试技术相关的测试工具有针对产品特点的自动化测试平台(或二次开发)、用例设计工具等; ④和测试管理有关的工具有测试缺陷分析管理工具,测试需求、用例跟踪管理工具等等。