TestOps时代将至

一十一

一十一

2018-01-13 12:15:18

历史

谈东西总要有个历史来谈,因为这样更能明白怎么出来的。

在最早软件行业是个人主义体系,也就是一个人搞定开发、搞定环境发布、搞定维护及测试。所以在软件早期由于比较简单是可以做到一个人搞定一切的,但是随着软件的复杂性提升,这是不现实的,所以开始有非常明确的分工开始,也是我们平常在招聘条件中看到的要求:

1.开发工程师(前端、后端、数据库等)

2.测试工程师(功能、性能、自动化等)

3.运维工程师(网络、版本控制等)

职业的分工是非常正常的,而软件的开发也从小作坊开始逐步成为大型流水线模式,所以瀑布模型逐步的成熟,整个软件的团队也越发巨大,而同时分工也就会越来越细,每个人都像一个小小的螺丝,自己不知道在整个机器内的作用,但是却又发挥着重要的一环。

而最近几年,随着技术的不断突破,项目的研发周期随着软件的成熟度上升下降,快速发布、微型发布已经成了常态,传统的瀑布型已经完全跟不上节奏,敏捷的流行也为后面的整合提供了基础。


DevOps

整个话题个人觉得应该先从开发运维谈起,开发负责代码实现,而运维负责发布及在线的监控。最早是开发自己负责开发、部署、监控、维护,由于技术能力要求,在若干年前是分离的,而现在为了解决版本发布不成功的问题,越来越多的情况下需要开发自己参与及管理负责发布问题,避免由于环境问题导致的发布失败,进一步性能测试的需要,开发人员自己也需要懂的环境的部署、监控。

所以DevOps开发运维这个职位诞生了。简单来说DevOps就是又懂开发又懂运维的人员,复合型的人才,论开发能力可能不是顶级的,论运维能力同理,但是这样的角色解决了开发团队和运维团队的沟通协作问题。DevOps的主要工作就是让开发与运维发布统一无缝化,进一步做到任意开发版本都能自动发布生产环境。这其中也涉及到部分质量验证的过程,但只有过程说明(静态检查、单元、接口、系统自动化、安全扫描等),没有能力具体落地。


TestDev

TestDev测试开发,主要是传统测试人员,在有了一定的开发基础后,负责开发一些测试脚本提供给其它测试人员更好的执行测试。在行业中也会存在着DevTest开发测试这样一类暂时特殊的职业,其主要是开发人员自己会部署和进行一些测试工作。

DevOps中涉及到的很多质量保证工作都需要自动化执行,所以测试也需要跟上自动化,而传统的功能测试人员是没有这个技术能力的,所以测试开发职位就这样诞生了(也和自动化技术本身需要开发有关)。

TestDev是真的将测试从手工驱动变为自动执行的关键角色,现在在测试的圈子里面应该还是非常主流的学习发展方向。往往会几个工具框架(SeleniumAppiumJmeter等),然后配合一些开发知识将传统的测试在技术和执行上代码化,就成为了TestDev工程师。

TestOps

最后来说一下TestOps,到了这里可能大家都会大概明白了,虽然TestDev可以做好自动化测试,但是这个还是和以前Dev做的事情类似,能够确保自己的东西是自动化运行的,并不能有效的将这个测试工作与产品发布以及整个软件生命周期整合起来,更多的时候像是一个独立于体系外的流程。

DevOps给了我们很好的提示,仅仅做好自己的一块事情是不够的,在整个系统中影响的因素有很多,如果不能与DevOps早期整合,测试所做的事情就仍然不能成为流程中的一个关键因素,从而导致质量把控的效果不能发挥。

作为TestOps的关键在于如何将质量控制的内容有效与平台、发布、监控整合,确保开发版本通过有效的自动化验证体系进入发布版本,而发布版本又具备相关监控内容支持测试需要。

这些工作在性能测试中是有部分体现的:

  1. 上线后的运维数据提供作为负载和性能指标的基础;

  2. 调优后的数据通过线上的结果进行进一步的验证;

大多数性能测试工程师都会在DevOpsTest之间反复切换,从而做到有效的测试,知其然知其所以然。

所以TestOps或者TestDev都可以说是测试部门与别的部门的一种协调职位,这种职位能够有效的将对应的Ops或者Dev沟通协调起来,传统的测试经理的职位更偏向全或者是管理,而现在的职位更偏向技术。

TestOps需要会什么和做什么

简单来说测试运维需要会测试会运维,所谓的会测试是指应该具备一个高级测试所需要的所有测试技能而会运维能够掌握发布及平台管理中涉及到的运维知识。

现在各个公司有很多可以实现自动化测试的人员TestDev,也有很多能够熟悉业务设计测试用例的人员,但是这些测试都还是局限于用户需求以及独立测试的情况,作为测试运维需要解决以下几点:

1.快速构建测试环境的自动化平台

         能够通过平台快速的完成各个服务器或者客户端版本的切换部署工作,解决测试中涉及到的环境问题。

2.快速构建测试所需测试数据的自动化平台

         能够通过平台快速的完成各个系统所需要的各种数据的生成还原工作,解决测试中涉及到的测试数据问题。

3.快速切换测试版本

         能够快速的切换发布版本,方便在各个版本之间切换或者同时存在,解决测试中涉及到缺陷定位及版本比较问题。

4.构建从研发到发布的全测试流程及测试规范体系

         能够规范DevOps中关于质量流程验证所需要的测试内容及测试方法,通过标准等,解决上线自动发布中对于质量定义的权责。

 

最后补上一张图,关于DevOpsTestDevTestOps的关系

TIM截图20180113121432.jpg


TestOps中文社区公众号
 
 微信   :  wonter
 QQ群 :  632418478
用户评论(0)
意见反馈
举报