在《关于软件质量,大家都在关注什么》一文中,我们了解到软件测试领域新的关键趋势主要体现在以下几个方面:
- AI的发展与软件测试
- 敏捷与DevOps
- 自动化测试
- 环境和数据
- 成本与效能
图片来自网络(https://unsplash.com/)
在这样的趋势下,测试人员的职业发展之路有什么变化呢?我们先来看看测试人员的技术发展方向有哪些。
技术方向
基于前面提到的新趋势,测试人员的职责由单一的测试软件系统是否工作、是否满足业务需求变得更加多样化,测试人员可以全流程参与软件开发,让测试活动贯穿软件开发整个生命周期。因此,测试人员的职业发展技术方向有:
- 敏捷测试专家
- 高级测试开发专家
- 专项测试专家
- QAOps专家
1. 敏捷测试专家
敏捷测试强调的是尽早测试和频繁测试,测试人员需要能够从需求分析阶段开始介入,全流程参与,跟整个团队一起实现团队为质量负责。对敏捷测试专家的技能要求有:
领域测试能力:测试人员需要丰富的业务知识、较强的业务敏感度和业务理解能力,熟悉各种不同类型的业务模式,包括新兴业务IoT、智能服务、区块链等,能够制定相应的测试策略,有效协助团队做好质量内建,实现交付价值最大化。
自动化测试能力:自动化测试是敏捷开展的必要条件,自动化测试技能是测试人员的必备技能。成为敏捷测试专家,要求测试人员了解不同的自动化测试框架的优缺点,能够指导项目自动化工具的选型;了解测试分层的思想,能够帮助团队制定合适的自动化测试策略;能够实现业务功能层的自动化测试,能够跟开发人员一起参与底层自动化测试(接口测试、单元测试等)的评审工作;了解持续集成工具,能够在持续集成流水线上配置和运行自动化测试。
沟通协调能力:敏捷测试要求团队为质量负责,测试人员作为主力,需要承担起质量的分析者和协调者的角色,要求有很好的跟不同角色沟通和协调团队合作的能力。
2. 高级测试开发专家
高级测试开发专家的必备技能要求有高级自动化测试、白盒测试、开发和平台构建能力,要求有很强的测试代码编写能力,能够自行开发自动化测试工具、搭建自动化测试框架、构建自动化测试平台和服务。
同时,最好还有AI应用的基础算法应用能力和自然语言处理技能,需要了解和掌握AI相关知识,以及AI知识在测试中的应用,以帮助实现自动化测试的智能化。
3. 专项测试专家
专项测试技能集包括安全、性能等跨功能测试技能,需要有扎实的计算机基础知识,了解安全问题的类型、安全测试工具的优缺点,能够提供安全测试解决方案;熟悉性能影响因素、性能测试关注点以及提供性能调优方案等。
专项测试技能也包括测试数据和测试环境的管理,要求熟悉虚拟化、云计算技术、数据匿名化等数据处理技术,能够提供测试数据和环境管理的方案。
4. QAOps专家
测试右移已经越来越被重视,这意味着测试活动需要右移到生产环境,需要测试人员跟Ops人员更紧密的合作,QAOps专家也应运而生。QAOps专家需要了解基础设施相关技术与实践,了解日志管理、日志监控以及日志分析技术,同时还要有用户行为分析能力,通过跟Ops的合作,充分利用生产环境的各种类型的信息来优化软件开发和测试流程,以实现最终优化业务价值的目标。
图片来自网络(https://unsplash.com/)
管理方向
管理岗位在新的趋势下有些将不复存在,一般在相对传统的组织架构下才会有,但是目前来看还是有相当的企业是适用的,在此也简单聊一下。根据每个公司的情况不同,测试人员直接相关的管理岗位也会有些不同,大体有如下这些:
- 测试组长
- 测试经理
- 项目测试负责人
- 测试总监
1. 测试组长
测试组长一般带几个测试工程师, 负责任务分派和人员管理等工作。除了必备的测试技能外,测试组长需要的管理技能有:
任务优先级识别能力:需要能够识别任务的优先级,并根据当前工作合理分配给不同的人去完成。
培养团队成员的能力:带领团队需要对团队成员进行培养和发展相应的能力,需要能够识别不同人员的自身特点,有针对性的培养相应的技能。
沟通协调能力:要带领好团队,较强的沟通协调能力必定能事半功倍,让团队工作更顺畅。
2. 测试经理
测试经理一般是管理一个测试部门,下面可能有多个测试小组。测试经理除了需要关注技术外,还需要关注部门的发展、绩效等。需要的相应技能有:
技术洞察力:测试经理需要对技术趋势和先进测试工具有较多了解,需要能够帮助团队确定测试技术和测试工具的研究和使用,以提高团队的工作效能。
风险识别能力:测试经理需要能够很好的理解业务需求、识别项目风险,负责制定测试策略和具体的实施方案,并能进行总结、报告,及时反馈项目质量状态。
培养团队成员的能力:团队成员的能力培养非常重要,测试经理跟测试组长一样需要这个技能。
沟通协调能力:测试经理不仅需要协调测试部门内部的各种情况,还需要横向跟公司其他部门进行沟通协调,沟通协调能力更加重要。
3. 项目测试负责人
项目测试负责人主要负责一个项目的质量保障工作,需要有跟测试经理相似的技能:技术洞察力、风险识别能力和沟通协调能力。
4. 测试总监
测试总监是测试经理的延伸,属于质量部门的最高负责人,需要负责公司所有项目的质量活动,所要求的的技能跟测试经理类似。
图片来自网络(https://unsplash.com/)
易转型方向
除了测试直接相关的管理岗位外,根据测试人员的职业特点,以下两个岗位是比较适合转型的方向:
- 项目经理
- 产品经理
1. 项目经理
测试人员,尤其是敏捷团队的测试人员,涉及到项目质量相关的方方面面,自然有着能纵观大局的机会,成功转型项目经理的例子非常常见。相应的技能要求有:
团队管理能力:管理团队,包括人员风险识别、协调沟通等方面,需要掌握一定的人际关系相关的软技能。
客户关系管理能力:项目经理除了要搞定团队,还有最为关键的是要处理好跟客户的关系,客户关系管理技能特别重要。
决策能力:决策能力是一种综合的判断能力,即面对几个方案或错综复杂的情况,能够做出正确的判断并采取行动。
2. 产品经理
软件测试人员都需要能够很好的理解业务需求,一般都有很强的业务能力,转型当产品经理是一个不错的方向。产品经理相应的技能要求有:
用户需求挖掘能力:产品经理需要有包括挖掘潜在用户需求、确定需求优先级、构建用户画像的能力。
多维度思考能力:产品经理需要能够从基本维度、外在维度、核心维度和商业价值维度思考的能力。
抽象能力:产品经理不仅要能从事物本身进行抽象,还需要能够考虑不同层次的抽象;抽象完后,还需要把抽象的对象回归到展示层面,需要有抽象回归具象的能力。
图片来自网络(https://unsplash.com/)
三个转变
测试人员要培养前面介绍的技能,首先需要实现下面三个转变:
1. 对测试的认知
测试活动不仅是验证系统功能,可以更加的多样化。比如,测试左移就包括对需要的澄清和验证,测试右移则包括生产环境的监控和信息收集等。
测试人员不是质量的把关者,好的质量意味着要交付更多的价值,而不是没有缺陷那么简单,测试人员不再是发现缺陷越多越有成就,而是要想着如何跟不同角色高效合作,使得交付的产品能够优化业务价值。
2. 对技术的关注
由于测试活动的多样性,不能只关心测试相关技术,要把视野扩展到软件开发过程中各个环节接触到的领域知识和不同类型的技术,不同业务类型、技术架构和基础设施等都会对测试有不同的影响和要求。
3. 测试不可以独立存在
测试不能再以独立部门自居,需要跟不同的角色更多的沟通和合作。比如,需求分析阶段需要跟需求人员有密切的沟通,实现自动化测试过程中可以跟开发人员结对或其他方式的深度合作,生产环境下的测试需要跟Ops人员紧密合作等。
同时,测试人员对于系统所采用的技术架构、技术方案的设计思路都需要有所了解,从而更好的理解开发的工作、理解架构演进对于测试的影响,更好的开展测试工作。
最后
了解了发展方向,如何才能让自己的职业生涯更圆满呢?更多的学习建议可以参考我去年在BQConf的演讲《BQConf演讲:软件测试人员该何去何从》里提到的那几个方面:
- 确定方向,目标驱动
- 持续学习,把知识变成技能
- 勇于突破,系统思考
愿各位测试同仁的职业发展之路更加顺畅!
通告:敏捷测试的指导性原则 - Thoughtworks洞见
通告:敏捷测试的指导性原则 - 林子的空间
敏捷测试,其实并不是对象化的测试活动,比如,Web测试,测试的是web端的应用,接口测试,测试的是服务的接口,等等;另外还有非软件的测试,比如,硬件的测试,信号系统的测试,等等。但敏捷测试并不是具体的一种测试活的,而是一大类,在敏捷开发过程中,和质量相关的,测试活动和非测试活动的集合。
所以,敏捷测试强依赖于敏捷开发,我们很难想象在瀑布开发模式下进行敏捷测试。如果定义“敏捷测试专家”的技术型发展方向,那么,为什么没有“非敏捷测试”专家的方向呢?比如“瀑布开发模式下的测试专家”(我谁便叫的)。
己见
敏捷测试的确不是一种测试活动,敏捷测试人员有着它的独特性,需要的技能跟非敏捷的测试人员是不对称的,传统的测试人员分工单一一些,比如做手动的功能测试、自动化测试、专项性能测试等,而敏捷测试人员的技能要求要全面一些,所以才有了敏捷测试专家。