历史
谈东西总要有个历史来谈,因为这样更能明白怎么出来的。
在最早软件行业是个人主义体系,也就是一个人搞定开发、搞定环境发布、搞定维护及测试。所以在软件早期由于比较简单是可以做到一个人搞定一切的,但是随着软件的复杂性提升,这是不现实的,所以开始有非常明确的分工开始,也是我们平常在招聘条件中看到的要求:
1.开发工程师(前端、后端、数据库等)
2.测试工程师(功能、性能、自动化等)
3.运维工程师(网络、版本控制等)
职业的分工是非常正常的,而软件的开发也从小作坊开始逐步成为大型流水线模式,所以瀑布模型逐步的成熟,整个软件的团队也越发巨大,而同时分工也就会越来越细,每个人都像一个小小的螺丝,自己不知道在整个机器内的作用,但是却又发挥着重要的一环。
而最近几年,随着技术的不断突破,项目的研发周期随着软件的成熟度上升下降,快速发布、微型发布已经成了常态,传统的瀑布型已经完全跟不上节奏,敏捷的流行也为后面的整合提供了基础。
DevOps
整个话题个人觉得应该先从开发运维谈起,开发负责代码实现,而运维负责发布及在线的监控。最早是开发自己负责开发、部署、监控、维护,由于技术能力要求,在若干年前是分离的,而现在为了解决版本发布不成功的问题,越来越多的情况下需要开发自己参与及管理负责发布问题,避免由于环境问题导致的发布失败,进一步性能测试的需要,开发人员自己也需要懂的环境的部署、监控。
所以DevOps开发运维这个职位诞生了。简单来说DevOps就是又懂开发又懂运维的人员,复合型的人才,论开发能力可能不是顶级的,论运维能力同理,但是这样的角色解决了开发团队和运维团队的沟通协作问题。DevOps的主要工作就是让开发与运维发布统一无缝化,进一步做到任意开发版本都能自动发布生产环境。这其中也涉及到部分质量验证的过程,但只有过程说明(静态检查、单元、接口、系统自动化、安全扫描等),没有能力具体落地。
TestDev
TestDev测试开发,主要是传统测试人员,在有了一定的开发基础后,负责开发一些测试脚本提供给其它测试人员更好的执行测试。在行业中也会存在着DevTest开发测试这样一类暂时特殊的职业,其主要是开发人员自己会部署和进行一些测试工作。
在DevOps中涉及到的很多质量保证工作都需要自动化执行,所以测试也需要跟上自动化,而传统的功能测试人员是没有这个技术能力的,所以测试开发职位就这样诞生了(也和自动化技术本身需要开发有关)。
TestDev是真的将测试从手工驱动变为自动执行的关键角色,现在在测试的圈子里面应该还是非常主流的学习发展方向。往往会几个工具框架(Selenium、Appium、Jmeter等),然后配合一些开发知识将传统的测试在技术和执行上代码化,就成为了TestDev工程师。