行业动态

软件测试之配置管理的数据库版本控制

软件测试之配置管理的数据库版本控制

  软件配置管理(Software Configuration Management,SCM)是界定软件的组成部分,对每个部分的变更进行版本控制,并维护不同部分之间的版本关联,以使软件在开发过程中任一时间的内容都可以被追溯的管理过程。软件配置管理通常包括版本控制、变更控制和过程支持三个大的方面,涉及配置项、工作空间管理、版本控制、变更控制、状态报告、配置审计等具体活动,软件配置管理一般会贯穿到整个软件研发生命周期以及各个知识领域,本文不做具体展开。

  数据库版本是研发过程中需要把控的一个方面,但实际操作上很多时候并没有使用配置管理的思路进行统一管理,尤其是对研发管理尚未完善的团队而言更是如此。本文围绕配置管理这个主题,针对研发过程中的数据库版本控制策略展开讨论。从数据库版本这一概念入手,明确思路和目标并提供工作流程和实践模式。

软件测试之配置管理的数据库版本控制

  一.关于数据库版本

  关于配置管理下的数据库版本有三个主要概念:

  1. 配置项

  数据库相关的配置项包括所有数据库元素,如Model、DDL、DML以及各种配置文件,这些配置项都应该放到配置管理工具(常见的如SVN、Git)下进行统一管理。

  2. Change Set

  Change Set就是数据库变更的最小单元,一个ChangeSet在物理表现上就是一个脚本文件。初始化后的数据库通过Change Set进行统一的更新,每个Change Set都应该有对应的回滚脚本,如果更新失败则使用该回回滚脚本进行回滚。

  3. Baseline

  Baseline即基线,基线是数据库在特定时期的一个“快照”,为随后的工作提供一个标准和起点,通常根据功能发布范围建立数据库Baseline。

  数据库版本控制通常没有像代码版本控制那样容易把控和管理,普遍也没有在研发团队中形成统一认识,导致在服务发布过程中只有对系统非常熟悉的开发人员通过手工尝试的方式进行数据库更新操作,一方面效率较低、容易出错;另一方面也不利于团队协作。这里我们还是要强调一下数据库版本控制的重要性,个人总结以下6点:

  信息透明跟踪:版本的作用就是提供统一视图,确保所有人都知道目前数据库处于哪个状态,方面信息的透明和跟踪

  尽早发现问题:有了数据库版本,开发人员在执行数据库更新操作时就能通过版本信息判断本次更新是否合理,避免在服务运行过程中才暴露问题

  降低出错概率:如果数据库版本信息能够一目了然,所有开发人员都能显式的在该版本信息的基础上进行下一步操作,而不是通过各种容易导致错误的隐式信息进行判断

  降低维护成本:数据库与代码不同,维护是一件很困难的事情,数据库版本信息为我们进行有效的数据库维护提供一个起点

  系统基线管理:根据配置管理思想,有了版本我们才能有基线,所以数据库版本为进行配置管理相关工作提供基础

  增量迭代演进:ChangeSet实际上就是一种增量思想,即通过每一次Change Set更新确保数据库满足一定的功能,从一个稳定状态到达下一个稳定状态

  二.思路与目标

  针对数据库版本控制的特点和重要性,我们的思路:

  开发部署分离:开发环境、测试环境和生产环境严格分离是进行数据库版本控制的第一步,通常生产环境与其他环境的分离没有问题,但也要确保开发环境和测试环境的分离。开发环境和测试环境分离是确保开发过程中的数据库版本控制能够在测试环境得到第一轮的校验,避免生产环境中出现问题

  版本可见:版本号在开发、测试和实施等步骤中确保所有人都能可见是执行数据库版本控制的基础

  版本一致:版本一致指要满足系统版本等式,如下:

  

软件测试之配置管理的数据库版本控制

  版本可回滚:当更新之后的最新版本有问题时,需要支持版本回滚到稳定版本

  版本可兼容:版本可兼容是一个扩展性功能,可以根据需要进行使用。版本可兼容的应用场景在于如果本次更新失败,则可以通过数据库版本不回滚、服务器版本回滚的方式确保系统正常运行,主要目的是想避免不必要的数据库回滚。具体做法上可以采用以下思路:同时存在服务器版本和数据库版本两个版本信息,一个数据库版本对应着一批有效服务器版本,如下:

  

软件测试之配置管理的数据库版本控制

  发布时同时增加服务器版本和数据库版本;部署时如果服务器版本位于该数据库版本对应的合理服务器版本区间内(上图中的System002~System006),则该数据库版本可以不会滚,反之则必须回滚。

  要满足上述思路和目标,我们需要设计数据库版本要素,包括:

  版本号:代表数据库当前版本的唯一编号

  版本校验:每次更新和回滚时,通过版本校验判断本次更新/回滚的目标版本是否就是当前的数据库版本,如果不是,则本次操作是无效的

  版本更新:版本校验成功之后进行数据库和版本的更新操作

  版本回滚:如果更新有问题,则通过版本回滚恢复数据库到上一个稳定状态

  版本基线:通过配置管理工具进行数据库的基线管理

  同时,这里还有一个重要概念为Contraction scripts和Expansion scripts,前者是指数据库初始化时的脚本内容,后者是数据库初始化之后的所有递增性脚本内容。这样,每一个版本基线都可以看做是Contraction scripts,而每一个Change Set实际上就是Expansion scripts。
  以上是关于软件测试的知识,由多测师亲自撰写! https://www.duoceshi.com/

新闻资讯

联系我们

联系人:何女士

手机:13825291265

电话:0755-21072941

邮箱:hr@duoceshi.com

地址: 广东省深圳市龙华区龙华街道清湖和平路62号优鼎企创园D栋201室,202室

用手机扫描二维码关闭
二维码