接着上次的来谈,DevOps中推荐了团队组织架构,以及对应的角色职责,见下图。
在这里会发现DevOps工程师是一个作为独立在开发及运维团队的角色,而这个角色负责对开发团队和运维团队做整合管理。这里我不想多聊关于这个团队的角色划分,只想对比一下以前关于TestOps的职位定义。
那么DevOps角色做什么事情呢?
在我看来首先DevOps要为整个团队去形成度量体系,为整个软件周期的每一个过程都去做量化度量工作。
通过度量获得各个流程阶段上的相关信息,包括:
- 自动化覆盖率
- 缺陷数量
- 交付速度
- 每天构件速度(等)
在这些影响因素中,大多数都和测试有关系,在成熟的开发体系和运维体系下导致整个流水线效率低下的原因就是测试。
如何让测试与整个DevOps工作流完全融入,如何将测试过程从被动到主动(从push到get),并且配合敏捷研发实现敏捷测试,将测试周期从天压缩到小时!所以自动化就成了必须的过程,而且并不是简单的做一个自动化,而是高质量!高效率的自动化!
- 基于分层的测试
- 基于自动化的测试执行过程
- 基于可以与测试环境整合的自动化过程
从这几点来看,测试玩的一套自动化还只能说是过家家的感觉。在分层及自动化环境上还有很长的路要走!写个自动化不难,怎么完成测试环境的自动化管理,测试数据及测试设计的自动化?
在整个环境中,除了基本的测试环境(功能、自动化)、与生产环境同步的预生产环境以外,还涉及到一个快速可回退的版本机制(数据库,各个组件)。该回退机制可以快速的与生产环境的某个状态完全匹配,在互联网下的灰度发布、金丝雀或者蓝绿发布下,该功能是非常很重要的。这里就涉及到CMDB系统,当代码发布(开发需要提供代码所需要的所有配置项)后,运维负责发布及环境的管理,测试负责验证机制及所需要的相关支持,这也是为什么在DevOps中常常提到的一句话让测试和运维为开发赋能,让开发自己不会测试运维也可以一键实现测试运维。
推荐两本官方书《 持续交付-发布可靠软件的系统方法》《凤凰项目-一个IT运维的传奇故事》,其中“凤凰沙盘“项目就是基于后者的!
在DevOps中可以谈的东西还很多,但是都是比较和运维及构建有关的,这里我就不多谈了,因为这些问题会在下一篇《凤凰沙盘》中再和大家聊聊瓶颈是如何产生的!
作为测试角色,如何做到敏捷中的单元、集成、系统针对功能、非功能,并且将测试的执行前后依赖过程都自动化掉,是DevOps要解决的关键!让自动化真的完全自动化!
下次我们来聊聊有趣的沙盘!有沙盘经验的朋友欢迎一起来做一个自己的沙盘游戏!