大家好,我是小文,今天给大家介绍下软件测试行业的职业发展路径,很多同学不清楚这个行业的职业发展,工作职责,特别是刚入行的从业者。接下来我带大家一起了解下我们的软件测试行业。
从测试从业者的发展路径来看,测试行业分为:技术方向 & 管理方向 。(本篇先介绍技术方向)
技术方向大致分为三个:测试工程师、自动化测试工程师、测试开发。
每个职位又分为:初、中、高、资深。
下面先给大家介绍每个技术方向对人员的要求和需要掌握的大致技能。
测试工程师,这个职位是我们一般招聘网站看着最普遍的职位,但现在这个职位又被划分的很细,测试工程师是统称,随着前几年移动互联网到来,大部分公司从 PC 端转向了移动,特别是大公司,对这些职位分工非常细,每个职位都有自己的部门,分为移动测试工程师、PC 测试工程师、服务端测试工程师。
测试工程师
职位职责:
1、深度参与产品研发项目, 协同产品经理、业务研发、用户反馈团队优质交付产品;
2、参与质量体系规划、建设;
3、线上线下故障追踪及分析;
4、完善研发过程中质量和效率问题的发现机制, 并提出明确改进意见;
职位要求:
1、本科及以上学历,计算机、通信等相关专业;
2、 认可快速发展阶段的移动互联网公司及文化;
3、优秀的产品意识, 对市场上典型 App 有自己的想法和改进方案;
4、快速适应和学习能力、热爱质量效率工作;
5、熟练使用常用客户端、服务端开发/测试工具;
6、能够独立把握一个端(Android / iOS)的产品迭代工作。
这是我从网上找到的一家公司的职位说明。从职位要求上来看,能够独立把握一个端(Android / iOS)的产品迭代工作,可看出是移动端测试的工程师岗位,其实测试工程师首先要掌握的就是对产品业务的理解,(当然其他方向的也需要掌握)因为测试工程师需要对产品做迭代测试工作,技能的话,大部分为业界俗称为点点点的业务方向工作,前提是用例设计要到位(这是最基本的),当然要会一些移动端和服务端的开发/测试工具,比如接口测试 postman,抓包 charles,移动端开发和服务端开发工具的基本使用,如果熟练使用最好,如果稍微会点简单代码更好了,对被测对象的底层和质量有思考、有了解最好,当然不强求。(至少高级点的要求是 要不业务强,要不就技术强)。
这里要说一点每个公司对职位要求是高低不同的,一般要公司规模,稍微好点的对其要求会更高。一般测试工程师岗位入门门槛较低,如果肯努力,一个方向工作 2 年差不多就可以到中级了。
高级的话,至少要能达到能带领一个产品线的业务测试工作,这里指的是业务功能测试加少量的技术工作,而且要带人,有带人的经验,凭个人经验感觉至少 3-5 年或资深 5 年以上才可以做到。
再说说自动化测试这个方向:(下面是去除公司名称后的职位说明)
岗位职责:
作为自动化测试工程师,与敏捷团队一起,保障电商平台的质量
参加每日站会兵更新测试状态
负责设计、完善并且执行测试用例
报告并追踪 bug,协助开发同事定位问题根源
汇报测试结果
开发并维护自动化测试脚本,包括 UI 层和微服务层,来支持持续集成
岗位要求:
1-3 年以上 Selenium 或者 service/API 自动化测试经验
英语听说读写熟练
熟悉 java 语言,mysql/mongodb 数据库
了解 TestNG, Git, Maven, Jenkins 以及其他自动化/持续集成工具和框架
自动化、顾名思义就是把业务自动化起来,进行自动化测试,这里说的自动化比如 Selenium,不是录制,而是能写自动化测试 Case,Jenkins 持续集成,需要会写测试脚本,因为要与敏捷团队一起,测试负责写功能 case,自动化把 case 写成脚本,做持续集成,还对常用测试工具熟悉,了解测试自动化测试流程,具备基本的代码能力等。
还有的公司会招性能测试工程师,也算自动化的一种吧,对人大多数要求做性能分析、风险控制、性能评估、调优建议,这种职位一般要求专业性比较强,一般调优就非常难,要求对求职者的技能要求非常高,比如数据库性能、代码性能,个人认为不是一般的只会用 1-2 个性能工具测试者能胜任的了的,除非公司职位要求不高。
测试开发
任职要求:
1、计算机或其他相关专业本科及以上学历
2、熟悉 python/php/java 等至少一种编程语言,有 Shell 或 ruby 等使用经验者优先;
3、熟悉 Linux 或 Unix 操作系统;
4、熟悉软件的开发测试流程,掌握常用测试用例设计方法;
5、广泛的技术视野,具备很强的学习能力、分析能力和解决问题的能力;
6、喜欢钻研技术,工作积极主动,不断追求产品的完善;
7、具备奉献精神,善于沟通,善于团队合作。
这种职位大厂最多,门槛较高,工作内容为开发、测试,一般来说主要负责设计和编写测试部门所需的测试工具(测试工具、平台、自动化测试、单元测试),近几年确实也有一些公司招聘给出的测试开发岗位,但实际功能测试(我了解的至少稍微知名的大厂不会这样),这个职位主要是为了提升测试团队的工作效率,必须具备非常强的代码能力,也要有测试思维,能理解测试部门的业务需求,对测试整个流程、诉求、痛点了解,开发出的工具,能解决问题,提高效率。这个岗位对语言要求较高,目前使用较多的是 Python、C++、Java。
测试开发岗位要求必须要求是计算机专业科班出身,基础要求很高,个人经验总结:对于一般没代码基础的测试工程师如果想转测试开发岗的话,要付出学习时间很多,过程很艰难。高级一般 3-5 年工作经验、资深 5 年以上。(年限和经验不完全对等,也存在牛人 2-3 年就资深了,这取决于个人经历和技术基础,毕竟少数)
至于安全测试工程师,目前少之又少的职位,这个职位必须有代码经验的,偏底层代码漏洞测试的,这里不做过多介绍。
总之无论是哪个方向,前提都需要对业务本身有充分的理解和认知,无论是测试还是测试开发、自动化测试、需要在业务工作中找到痛点、否则开发出来的东西也就是自娱自乐了。
声明:上述观点为个人经验总结和观察,如有不对的地方请随时指正或留言交流。
作者:小文(一个即将从业 10 年的软件测试行业工作者)