应用办公生活信息教育商业
投稿投诉
商业财经
汽车智能
教育国际
房产环球
信息数码
热点科技
生活手机
晨报新闻
办公软件
科学动态
应用生物
体育时事

DevOps落地成不成,关键不在持续集成?

  作者介绍
  赵辉,前HSBC商业银行DevOps团队主管,DevOps专家,现任一线公有云企业DevOps平台解决方案架构师。
  当下的IT领域,持续测试是成功采用DevOps交付模式的关键因素。持续交付的目标,是能够快速和持续地反馈符合客户需求的高质量产品。
  然而,理想很丰满,现实很骨感。自从2012年,第一份DevOps报告由AlanaBrown发布之后,DevOps开始逐渐获得业界的认知。越来越多来自各领域和产业的IT团队开始谈论DevOps和数字化转型,其中不少团队已经根据自身对DevOps的理解采取了行动。根据哈佛商业评论的数据,在2019年大约有70的转型项目失败,而失败的原因与其DevOps落地的情况有着很强的相关性。
  本文我们具体来看看,现阶段持续测试是如何帮助团队成功落地并实现DevOps转型的。
  一、避免中心化的测试团队
  传统上来说,QA、开发和产品Owner隶属于不同的团队,即烟囱式的中心化团队。当开发完成一个功能需求的开发之后,QA团队才开始测试用例的设计,并且执行对应的测试用例,无论是手工测试还是自动化测试。当所有的测试工作结束后,产品负责人会验收这个新开发的功能是否符合预期。通常在这种开发模式下,QA团队或者产品Onwer的反馈已经晚了,因为代码已经被合并到了主干,导致任何代码的变化将造成的成本已经高出了大多数人的预期。下图是一个传统的中心化的团队结构:
  DevOps的核心观念就是提供反馈,为开发团队尽早地提供反馈机制对于实现持续集成至关重要。因此,团队的结构应该被调整为如下图所示:
  在新的开发测试运维一体化的团队中,QA将作为核心团队的一部分,和开发、产品一起来创建用户需求用例和测试用例,甚至测试用例开始的时间点,会比开发开始写下第一行代码的时间点更早。
  二、定义测试类别
  下图是一个描述测试类别的分类图。在现实中,很多团队并不清楚自己对于不同的测试类型扮演什么不同的角色、承担哪些不同的责任。
  手工探索性测试(OwnerProductOwners)
  手工探索性测试通常是由来自业务团队、或产品团队的代表最终用户的领域专家来承担,这些专家对于产品如何在真实的生产环境中使用非常清楚和自信。手工探索性测试通常是对一些常见的场景进行具有创造性的验证,模拟在现实中有可能会发生的场景。
  UI回归测试(OwnerQAengineers)
  UI测试一般会被定义为回归测试,由QA工程师进行维护。UI自动化测试脚本的维护成本是非常高的,而且对于QA工程师的技能有比较高的要求。因为在执行UI自动化测试的成本通常高于接口测试,因此,UI自动化测试不应该被用来当做一个检查点来确定代码是否应该被合入。
  这是因为,如果UI自动化回归测试失败之后,QA工程师、开发,甚至产品人员应该坐在一起,来检查自动化回归测试是否应该被更新。在这一点上,开发可以去做性能重构或者安全重构而不用担心自己新的代码会影响现有功能。
  UI测试通常被设定为每天执行,用来执行UI自动化测试的编译包通常被称为snapshot版本或者黑夜版本。
  服务接口测试(OwnerDevelopers,QAengineers)
  服务接口测试通常由开发人员,少数情况由测试人员来进行维护。开发人员需要确保自己合入主干分支的代码能够符合需求。通常情况下,服务接口测试的开发会早于业务代码的开发。开发人员在开发业务代码的时候,需要保证业务代码的功能能够通过服务接口测试的测试用例。
  这个流程在业界被称为测试驱动开发(TDD,TestDrivenDevelopment)。如果被合并入主干的代码导致了服务接口测试用例的失败,这个问题必须立刻解决。开发人员应该首先关注如何将业务代码通过服务接口测试用例,在通过用例之后,开发人员就会对接下来代码性能或者安全的重构不会影响业务逻辑而很有信心。
  单元测试作为代码质量的门限(OwnerDevelopers)
  单元测试应该关注单个类或者方法。需要注意的是,代码会腐败。开发人员应该对自己代码的codesmell(即代码风格)承担责任,并且遵守团队的代码规约。从DevOps的角度来看,代码的单元覆盖率应该在代码被合并到主干分支之前被保证。
  通常,一个PullRequest(PR)被创建之后,单元测试覆盖率应该被自动化的工具检查,并且在正式的代码人工审查之前,保证单元覆盖率和代码规约质量符合团队的规范。这么做有两个优点,其一是强迫开发人员在代码人工审查开始之前就注意代码质量,其二是团队在做人工审查的时候能够关心真正的逻辑问题和代码设计问题,而不是一些基本的代码错误,节省整个团队的时间。
  三、自动化测试数据管理
  自动化测试数据管理是一个很大的话题,而且是实现自动化测试的重要因素。通常,测试数据管理会被与测试环境管理混为一谈,但是,我个人更愿意将测试数据管理分开来谈,主要有以下几个考量。
  环境管理关注部署
  环境管理的目标是保证环境的一致性。这意味着我们必须保证基础设施和配置在测试的所有环节保持一致。部署完成后,在运行测试用例时,环境不能有变化。这一点和测试数据是不同的。
  在数据中心或者公有云环境下,环境的创建本身也类似于代码的管理,自动化构建的脚本和流水线,将会获取环境的定义,通常环境定义本身也会使用git仓库来保存,进而触发环境构建的流程。实例的初始化流程脚本也会从一个共享的配置管理数据库(CMDB)中获取配置信息来创建环境的实例。流程如下图所示:
  测试数据管理和测试用例的关联关系
  不同于环境管理,测试数据的设置和初始化需要和测试用例关联。我们需要找出基础数据和测试用例数据。
  基础数据,有些团队称之为参考数据,是一个标准的参考数据模版,用于所有的测试环境,并且独立于测试用例。所有的测试用例都需要建立在基础数据之上。每一次测试数据需要恢复到初始状态时,测试人员就可以使用基础数据覆盖当前环境中的数据集来恢复出厂设置。
  测试用例数据是在每一次执行测试用例之前,自动化引擎将会从测试数据管理平台(TestingDataManagement)获取用于初始化测试数据的增量数据。执行测试用例之后,清理工作将会把产生的中间数据清理掉,并且恢复到测试用例之前的测试数据集。因此,测试数据的准备和清理都必须做到幂等。
  具体流程如下图所示:
  结论
  测试部分通常因为更重原因,例如成本考虑、团队结构考虑,或者政治因素,在落地DevOps实践中被有意或者无意地忽略。但是,实际上测试才是实现真正的持续集成和持续交付的关键点。请注意,持续测试不仅仅是工具和技术,更是一个流程、组织结构和思维方式。
  随着数字化转型与云化从互联网行业渗透到了各个传统行业,运维迎来了新的契机,想破解运维转型困局,让Gdevops全球敏捷运维峰会北京站给你新思路:
  《建设敏捷型消费金融中台及云原生下的DevOps实践》中邮消费金融总经理助理李远鑫
  《腾讯新闻DevOps实践》腾讯客户端高级开发工程师褚佳义
  《浙江移动AIOps实践》浙江移动云计算中心NOC及AIOps负责人潘宇虹
  《云时代下,传统行业的运维转型,如何破局?》新炬网络运维产品部总经理宋辉
  《数据智能时代:构建能力开放的运营商大数据DataOps体系》中国联通大数据基础平台负责人资深架构师尹正军
  《银行日志监控系统优化手记》中国银行DevOps负责人付大亮中国银行高级软件工程师李晓宁
  《民生银行智能运维平台实践之路》民生银行智能运维平台负责人应用运维专家张舒伟作者介绍
  赵辉,前HSBC商业银行DevOps团队主管,DevOps专家,现任一线公有云企业DevOps平台解决方案架构师。
  当下的IT领域,持续测试是成功采用DevOps交付模式的关键因素。持续交付的目标,是能够快速和持续地反馈符合客户需求的高质量产品。
  然而,理想很丰满,现实很骨感。自从2012年,第一份DevOps报告由AlanaBrown发布之后,DevOps开始逐渐获得业界的认知。越来越多来自各领域和产业的IT团队开始谈论DevOps和数字化转型,其中不少团队已经根据自身对DevOps的理解采取了行动。根据哈佛商业评论的数据,在2019年大约有70的转型项目失败,而失败的原因与其DevOps落地的情况有着很强的相关性。
  本文我们具体来看看,现阶段持续测试是如何帮助团队成功落地并实现DevOps转型的。
  一、避免中心化的测试团队
  传统上来说,QA、开发和产品Owner隶属于不同的团队,即烟囱式的中心化团队。当开发完成一个功能需求的开发之后,QA团队才开始测试用例的设计,并且执行对应的测试用例,无论是手工测试还是自动化测试。当所有的测试工作结束后,产品负责人会验收这个新开发的功能是否符合预期。通常在这种开发模式下,QA团队或者产品Onwer的反馈已经晚了,因为代码已经被合并到了主干,导致任何代码的变化将造成的成本已经高出了大多数人的预期。下图是一个传统的中心化的团队结构:
  DevOps的核心观念就是提供反馈,为开发团队尽早地提供反馈机制对于实现持续集成至关重要。因此,团队的结构应该被调整为如下图所示:
  在新的开发测试运维一体化的团队中,QA将作为核心团队的一部分,和开发、产品一起来创建用户需求用例和测试用例,甚至测试用例开始的时间点,会比开发开始写下第一行代码的时间点更早。
  二、定义测试类别
  下图是一个描述测试类别的分类图。在现实中,很多团队并不清楚自己对于不同的测试类型扮演什么不同的角色、承担哪些不同的责任。
  手工探索性测试(OwnerProductOwners)
  手工探索性测试通常是由来自业务团队、或产品团队的代表最终用户的领域专家来承担,这些专家对于产品如何在真实的生产环境中使用非常清楚和自信。手工探索性测试通常是对一些常见的场景进行具有创造性的验证,模拟在现实中有可能会发生的场景。
  UI回归测试(OwnerQAengineers)
  UI测试一般会被定义为回归测试,由QA工程师进行维护。UI自动化测试脚本的维护成本是非常高的,而且对于QA工程师的技能有比较高的要求。因为在执行UI自动化测试的成本通常高于接口测试,因此,UI自动化测试不应该被用来当做一个检查点来确定代码是否应该被合入。
  这是因为,如果UI自动化回归测试失败之后,QA工程师、开发,甚至产品人员应该坐在一起,来检查自动化回归测试是否应该被更新。在这一点上,开发可以去做性能重构或者安全重构而不用担心自己新的代码会影响现有功能。
  UI测试通常被设定为每天执行,用来执行UI自动化测试的编译包通常被称为snapshot版本或者黑夜版本。
  服务接口测试(OwnerDevelopers,QAengineers)
  服务接口测试通常由开发人员,少数情况由测试人员来进行维护。开发人员需要确保自己合入主干分支的代码能够符合需求。通常情况下,服务接口测试的开发会早于业务代码的开发。开发人员在开发业务代码的时候,需要保证业务代码的功能能够通过服务接口测试的测试用例。
  这个流程在业界被称为测试驱动开发(TDD,TestDrivenDevelopment)。如果被合并入主干的代码导致了服务接口测试用例的失败,这个问题必须立刻解决。开发人员应该首先关注如何将业务代码通过服务接口测试用例,在通过用例之后,开发人员就会对接下来代码性能或者安全的重构不会影响业务逻辑而很有信心。
  单元测试作为代码质量的门限(OwnerDevelopers)
  单元测试应该关注单个类或者方法。需要注意的是,代码会腐败。开发人员应该对自己代码的codesmell(即代码风格)承担责任,并且遵守团队的代码规约。从DevOps的角度来看,代码的单元覆盖率应该在代码被合并到主干分支之前被保证。
  通常,一个PullRequest(PR)被创建之后,单元测试覆盖率应该被自动化的工具检查,并且在正式的代码人工审查之前,保证单元覆盖率和代码规约质量符合团队的规范。这么做有两个优点,其一是强迫开发人员在代码人工审查开始之前就注意代码质量,其二是团队在做人工审查的时候能够关心真正的逻辑问题和代码设计问题,而不是一些基本的代码错误,节省整个团队的时间。
  三、自动化测试数据管理
  自动化测试数据管理是一个很大的话题,而且是实现自动化测试的重要因素。通常,测试数据管理会被与测试环境管理混为一谈,但是,我个人更愿意将测试数据管理分开来谈,主要有以下几个考量。
  环境管理关注部署
  环境管理的目标是保证环境的一致性。这意味着我们必须保证基础设施和配置在测试的所有环节保持一致。部署完成后,在运行测试用例时,环境不能有变化。这一点和测试数据是不同的。
  在数据中心或者公有云环境下,环境的创建本身也类似于代码的管理,自动化构建的脚本和流水线,将会获取环境的定义,通常环境定义本身也会使用git仓库来保存,进而触发环境构建的流程。实例的初始化流程脚本也会从一个共享的配置管理数据库(CMDB)中获取配置信息来创建环境的实例。流程如下图所示:
  测试数据管理和测试用例的关联关系
  不同于环境管理,测试数据的设置和初始化需要和测试用例关联。我们需要找出基础数据和测试用例数据。
  基础数据,有些团队称之为参考数据,是一个标准的参考数据模版,用于所有的测试环境,并且独立于测试用例。所有的测试用例都需要建立在基础数据之上。每一次测试数据需要恢复到初始状态时,测试人员就可以使用基础数据覆盖当前环境中的数据集来恢复出厂设置。
  测试用例数据是在每一次执行测试用例之前,自动化引擎将会从测试数据管理平台(TestingDataManagement)获取用于初始化测试数据的增量数据。执行测试用例之后,清理工作将会把产生的中间数据清理掉,并且恢复到测试用例之前的测试数据集。因此,测试数据的准备和清理都必须做到幂等。
  具体流程如下图所示:
  结论
  测试部分通常因为更重原因,例如成本考虑、团队结构考虑,或者政治因素,在落地DevOps实践中被有意或者无意地忽略。但是,实际上测试才是实现真正的持续集成和持续交付的关键点。请注意,持续测试不仅仅是工具和技术,更是一个流程、组织结构和思维方式。
  随着数字化转型与云化从互联网行业渗透到了各个传统行业,运维迎来了新的契机,想破解运维转型困局,让Gdevops全球敏捷运维峰会北京站给你新思路:
  《建设敏捷型消费金融中台及云原生下的DevOps实践》中邮消费金融总经理助理李远鑫
  《腾讯新闻DevOps实践》腾讯客户端高级开发工程师褚佳义
  《浙江移动AIOps实践》浙江移动云计算中心NOC及AIOps负责人潘宇虹
  《云时代下,传统行业的运维转型,如何破局?》新炬网络运维产品部总经理宋辉
  《数据智能时代:构建能力开放的运营商大数据DataOps体系》中国联通大数据基础平台负责人资深架构师尹正军
  《银行日志监控系统优化手记》中国银行DevOps负责人付大亮中国银行高级软件工程师李晓宁
  《民生银行智能运维平台实践之路》民生银行智能运维平台负责人应用运维专家张舒伟

60岁陈冲近照惊艳百万网友一手捧红李小璐,有哈佛优秀毕业女儿1961年,陈冲出生在上海一个高级知识分子家庭里。父亲陈星荣是医学博士,曾任华山医院院长(对,就是张文宏医生现在工作的华山医院)母亲张安中是药理学家,外婆史伊凡是留……辟谣经期同房会感染,一定要禁欲?医生教你怎么办明天就是情人节,又是一年大型虐狗现场。单身的你建议不要看这篇文章,默默走开就好,这是写给有伴侣的朋友们看的。有伴侣的你,看文章之前,先问问自己情人节礼物准备好了吗?要是没……在生死面前,超速就是拿生命在开玩笑昨天有个新闻在圈内引起了较大的轰动,于大脚于月仙因车祸在内蒙不幸去世。这不知道是第几个因车祸去世的明星了。悲伤、感叹之余,一种无语的情绪缠绕在心间,都说珍惜生命,可是,轮到自己……这就是生活年轻的时候不懂,原来那是不爱你,对你可以冷漠到那个程度,你依然不愿撒手,直到最后背伤得身心俱疲、在也没有一丝力气和一丝勇气,直到心彻底冰冷。。还好命还在,还好有一个生的机会重来……这种新型家庭暴力比打骂孩子后果更严重!多少父母还在做一、什么是隐形暴力隐形暴力,一个近段时间不时冲上热搜的词语,或许你对这个词语并不了解,但很可能你或你身边的人正在无意识地使用它教育孩子。隐形暴力教育通常也叫精神虐待……盘点明星高考分数,易烊千玺双项第一,张新成纪录至今无人打破导语:君子有三乐,而王天下不与存焉。父母俱存,兄弟无故,一乐也;仰不愧于天,俯不怍于人,二乐也;得天下英才而教育之,三乐也。君子有三乐,而王天下不与存焉一年一度的高考已经……甲亢治疗后,回家调理需要注意什么?甲亢的危害我们不能忽视,因为这是一种慢性疾病,所以在治疗的过程中,患者首先应该调节好自己的心态。住院治疗是治疗甲亢的一部分,但是出院之后患者还需要注意很多问题。甲亢患者在……高考遇到调剂怎么办?调剂不是末日,这三个方式可以选择高考结束后,录取结果可谓是几家欢喜几家愁,相信每个高考的考生都希望自己可以考上心仪的大学。不过很多时候,进入心仪的大学还是不够的,因为如果最终被录取的专业不是自己所喜欢的,那么……8月初凉意,莲子正当时,美食最佳品,N种吃法百吃不厌进入盛夏8月,天气由暑热向秋凉过度,这个月,我们要经历立秋和处暑两个节气,三伏天也从中伏走向末伏,直至8月中下旬的出伏。8月叶未落,暑未消,天气仍热,夏秋之交,火燥俱盛,……别告诉父母你年薪这么高大龄剩女不听劝,后来哭都没地方哭文文儿父母和子女,本应该是最相互信任的人。但是,随着子女长大,慢慢地跟父母之间也有了小心思,因为有时候如果不留一手,就可能让自己陷入困境。我一个表姐今年36岁了,在……教师节过成了教师劫!给老师一天快乐真的就这样难?今天,又是教师节了。为什么一说教师节,就要在前面加一个又?或许有人说,你过的教师节多呗!可是,如果只有这一点味道,那加上这个又字,也太平淡了些。举两个例子,你或许就……教育部开学未定,心要先定,不要在该奋斗的年纪选择安逸近期,全国各地新冠反扑。截止8月15日18时,全国有15个高风险地区,204个中风险地区。防疫形势依然严峻,目前,已有多所学校对暑期、开学等发布最新要求。教育……
我,104岁,客居他乡80多年,唯一的想法就是能和父母团聚讲述丨王宗芹《壹点说》的读者朋友们,大家好,我叫王宗芹,安徽宿州人,今年104岁,现居蚌埠。1934年,淮河发大水,我从老家逃荒来到蚌埠怀远境内,遇到一位好心人,给了我5……人家都好好的,就你离婚了最近在陪我们家老大看《爸爸去哪儿》,这部综艺节目开演的时候我还没有怀我们老大呢,今年我们老大都快六岁了,真是不自觉的想感叹真是时光荏苒啊。上个周他看到第五季了,第五季的嘉……缓解压力音乐Onemoretime音乐的种类有很多,所以对音乐的喜好每个人也是不一样的,很多时候人们听惯了热血的摇滚,就想换一些比较静心的音乐来感受一下。尼采曾经说过没有音乐,生命是没有价值的音乐是……高考后学生扎堆摘眼镜,医生近视手术,不是所有人都适合文:大白高考生填完志愿后也已经进入暑假一段时间了,迈过人生第一个重要关卡,很多孩子的愿望清单也被一一提上日程。近日,一些准大学生扎堆摘眼镜的事情登上热搜,出于对未来……宝宝不爱学习怎么办?怎样激发宝宝的学习兴趣?一岁半左右的宝宝,正是行为认知能力发展的重要阶段,我们该如何激发孩子的学习兴趣呢?今天就给大家推荐几种方法。1。陪宝宝一起阅读绘本,在给宝宝阅读绘本时,先让宝宝用小手翻一……时间管理能力提升孩子成绩提升成绩今天讲一讲时间管理能力的第四点微鼓励首先,不管是在孩子的生活中还是学习上,我们都要对孩子进行相应的鼓励。可是,我们家长往往是怎么样做的?唠叨孩子,你这……锻炼宝宝自主进食能力,你可以这样做别人家的宝宝两岁多就自己吃饭了,一手拿着勺子,一手扶着碗,吃得可香了。再回头看看自己家的娃,老母亲只能发出叹气的声音,宝宝啥时候才学会自己吃饭呀?今天,我们就来唠一……通过参加正规的月嫂培训成为一个更优秀的人每个人的成长经历都是一本丰富多彩的故事书,而书的品质不在于厚度,更不在于浮华的装帧,丰富且充实的内容才能打动读者。张华玉是一个做了十多年的小学老师,因为喜欢孩子,所想转行挑战一……2021黑龙江公务员考试报考指南(二)三、关于面试人选资格确认1。如何理解男性适龄报考者需进行兵役登记?根据《中华人民共和国兵役法》规定,兵役登记是对符合兵役登记条件男性公民进行的注册管理,是法律赋予每……儿童注意力不集中,掌握这些技巧就够了好多孩子都存在这个现象,如:不管做什么事情总是不到一分钟注意力就跑了;因为别人的一句话总是扭过头去看等等这也是困扰家长的一个大问题。从小培养孩子的专注力,不仅有助于孩子养……怀孕几个月可以看男女右上角立即关注,更多健康内容不再错过,不定期惊喜送给你怀孕几个月可以看男女?怀孕的时候,许多人对于宝宝的性别是极其重视的,所以许多人都想知道究竟怀孕几个月可以看出男女呢?……在秋冬季节宝宝应该怎样穿?毕竟有一种冷,叫做你妈妈觉得你冷这几天天气又降温了,好多的妈妈都不知道应该怎样给宝宝穿衣服了,穿多穿少也不太好掌握,穿多了就怕冬天的时候孩子受不了冬天的冷,穿的少了就怕孩子感冒,邻居家的孩子这几天就因为衣服的……
友情链接:易事利快生活快传网聚热点七猫云快好知快百科中准网快好找文好找中准网快软网