DevOps 是 Developer Operations 的缩写,是一种简化开发人员和运维人员协同工作的方式,以更快、更高质量地部署代码。DevOps 代表了具有快速发布周期的敏捷开发上的最佳实践,例如在传统模式下,金融小店项目往往是几天甚至几周才发布一个版本,在应用 DevOps 模式后,项目组使用敏捷开发和精简发布,每次新的构建发布都会在云端服务创建一个新的应用版本,基于云服务的快速部署,项目组发布程序的效率明显提升,从而实现一天多次发布。
当开发人员使用 DevOps 时,测试是开发中非常关键的部分,开发人员在开发和持续集成发布的过程需要以测试为驱动。在这种情况下,测试人员与开发人员互相配合,从而实现相关技能的提升,与此同时,测试人员必须确保所有测试用例的自动化和完整代码覆盖的单元测试,来保证测试质量。相较于传统测试,DevOps 模式在测试过程中的变化具体体现在以下几个方面。
1.测试分层
传统的瀑布模式下大多以手工测试为主,很少使用接口测试、单元测试这些代码级测试。整体的测试流程都是在开发代码全部完成发布后才开始进行的,软件的缺陷直到整个项目流程的最后阶段才会发现。采用 DevOps 模式之后,以底层运行速度快、消耗小的单元测试为主,加大接口自动化测试的占比,同时设计大量的界面自动化来代替手工测试。 相比传统方式而言,无论是测试的介入时间还是缺陷的发现时间都大大提前,从而减短整个项目的开发测试周期,减少修复缺陷的成本。通过测试左移,提升了开发测试间的持续性。
2.测试环境管理
以往的开发环境、测试环境、性能环境、准生产环境、生产环境,都需要手动搭建和管理,环境之间基础软件版本、硬件、数据可能存在差异且易出错,测试人员要和开发人员确认好操作系统信息、环境变量、数据库、中间件信息等,按照操作手册逐步执行才能顺利部署好一套环境。在 DevOps 模式下,开发测试人员可以从 TFS 中配置统一的环境信息,确保不同环境中的各种信息保持一致,使环境具有标准化、可配置和易维护的特点。
3.测试用例管理
测试用例的管理是所有测试的基础,在测试的不同阶段(如回归测试、冒烟测试)都需要围绕测试用例进行校验,在使用 DevOps 模式之前,我们通过自动化测试平台进行接口、界面自动化的设计、执行、分析结果的工作,在 TFS 中进行手工案例的执行、管理工作。为了更好的实践 DevOps,我行实现了自动化测试平台和 TFS 之间的数据传递,以及自动化案例统一管理和版本控制。通过“需求-功能-用例-缺陷追溯”各环节的迭代来确保需求的测试覆盖率,并提供测试验收报告。自动化测试促进了测试效率、稳定性和反馈速度的大幅度提升。
相对于传统模式,在 DevOps 模式下,测试工作则更强调测试左移,测试人员会更早地参与到软件项目前期的各项活动中,在功能开发之前定义好相的测试用例,同时尽可能完善测试自动化,在持续集成阶段开始运行自动化测试案例。另一方面,在测试工作中重点关注测试相关度量指标,依靠完善的度量体系对整个研发过程进行监控从而不断推动软件的持续改进。
作者简介
常会鑫,中国农业银行移动营销系统金融小店测试经理,负责移动营销系统金融小店 DevOps 三级贯标测试相关工作,具备丰富的 DevOps 实践经验。 2020年6月19日,由云计算开源产业联盟指导、高效运维社区和 DevOps 时代社区联合举办的 GNSEC 2020 全球新一代软件工程线上峰会上,隆重发布了 DevOps 标准持续交付部分第七批评估结果。
中国农业银行本次参评的 5 个项目均顺利通过由中国信息通信研究院(以下简称信通院)开展的《研发运营一体化( DevOps )能力成熟度模型》持续交付部分3级评估。
中国农业银行通过 DevOps 标准持续交付部分的 3 级评估的项目,分别是:
-
信贷中台项目
-
个人网银项目
-
分布式应用互联平台(AIR)项目
-
增值税进项税管理项目
-
金融小店项目
DevOps 标准共分5级,持续交付部分如果能达到 3 级已经是国内领先水准,这代表着中国农业银行在参评项目的持续交付能力达到国内领先水平。