《测试驱动数据库开发》—第2章2.4节增量构建

简介:

本节书摘来自异步社区《测试驱动数据库开发》一书中的第2章2.4节增量构建,作者【美】Max Guernsey, III,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.4 增量构建
测试驱动数据库开发
那么,该如何与上述机制进行交互呢?最好的方式应该是把数据库的每一次变更当做一个单独的版本用文档记录下来,并找到一个好方式(如版本号)来将这些变更进行排序。只要数据库能够标识已经发生了哪些变更,就能构建一个通用的机制来按正确的顺序实施正确的变更。

2.4.1 用文档记录每一次数据库的变更
开始的时候,只编写涉及一个变更的脚本。只要该脚本没有在重要的数据库上运行,就可以根据开发人员的意图,或者根据需求的变化,来随意地修改这个脚本。此时,该脚本其实是在不久的将来要做的事情的计划。

然而,当将变更提交(commit)到数据库之后,就再也不要修改上述脚本。这是变更被提交到生产环境的过渡,意味着该脚本不再是将来要发生的变更的蓝图,取而代之的是,该脚本变成了记录过去发生的事情的文档。所以从本质上讲,这个文档现在变成了历史记录。

当变更已经被提交并变成历史记录后,就可以为下一次变更创建一个新的文档。开发人员可以持续地修改这份文档,直到该文档以一种不可逆转的方式被提交到数据库为止,然后停止修改该文档,并创建另一份文档。

通过文档记录每一步骤执行的顺序也很重要。这既可以像为每份文档分配一个版本号这样的简单(如版本1是用于创建一个初始化的数据库,版本2是用于添加一些结构,等等),也可以像指出这一个过渡要先于另一个过渡这样的复杂。另外,也可能记录与上述情况完全不同的内容,比如像给一个已经提交的版本添加日期戳,来标识本次变更首次提交到生产环境的确切时间。

2.4.2 标识当前版本
数据库构建机制必须能够标识哪些变更已经施加到某个给定的数据库实例之上。这一点很重要,因为这样就可以避免将过去已经实施的变更再次施加到数据库上。要做到这一点其实比较容易,通常在数据库中创建一个表来标识在什么时间对数据库施加了哪个版本的脚本。

2.4.3 根据需要依次实施变更
在上述条件都具备后,就能构建一个机制,用来在正确的时间实施正确的变更。在只存在版本的线性增长这种最简单的情况下,即每个版本仅有一个前驱(predecessor)版本和最多一个后继版本,开发人员可以用非常低廉的成本来编写该机制。在以下章节内容中将介绍一些能够展示该机制如何工作的伪代码。在本书的配套代码中有一个实现该机制的代码示例,将其移植到你的系统平台上应该不会太困难。请访问http://maxthe3rd.com/test-driven-database-development/code.aspx来下载代码。

本文仅用于学习和交流目的,不代表异步社区观点。非商业转载请注明作译者、出处,并保留本文的原始链接。

相关文章
|
4月前
|
敏捷开发 测试技术 API
测试金字塔:构建高效自动化测试策略的基石
测试金字塔:构建高效自动化测试策略的基石
374 116
|
4月前
|
测试技术 API 数据库
测试金字塔:构建高效自动化测试策略的基石
测试金字塔:构建高效自动化测试策略的基石
407 114
|
4月前
|
测试技术 持续交付 API
测试的艺术:掌握测试金字塔,构建高效测试策略
测试的艺术:掌握测试金字塔,构建高效测试策略
313 77
|
4月前
|
设计模式 前端开发 测试技术
告别脆弱:构建稳定UI自动化测试的3个核心策略
告别脆弱:构建稳定UI自动化测试的3个核心策略
499 113
|
4月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
4月前
|
人工智能 自然语言处理 JavaScript
Playwright MCP在UI回归测试中的实战:构建AI自主测试智能体
Playwright MCP结合AI智能体,革新UI回归测试:通过自然语言驱动浏览器操作,降低脚本编写门槛,提升测试效率与覆盖范围。借助快照解析、智能定位与Jira等工具集成,实现从需求描述到自动化执行的闭环,推动测试迈向智能化、民主化新阶段。
|
5月前
|
SQL 弹性计算 关系型数据库
如何用读写分离构建高效稳定的数据库架构?
在少写多读业务场景中,主实例读请求压力大,影响性能。通过创建只读实例并使用数据库代理实现读写分离,可有效降低主实例负载,提升系统性能与可用性。本文详解配置步骤,助你构建高效稳定的数据库架构。
存储 人工智能 机器人
171 0
|
5月前
|
安全 关系型数据库 数据管理
阿里云数据库:构建高性能与安全的数据管理系统
阿里云数据库提供RDS、PolarDB、Tair等核心产品,具备高可用、弹性扩展、安全合规及智能运维等技术优势,广泛应用于电商、游戏、金融等行业,助力企业高效管理数据,提升业务连续性与竞争力。
|
6月前
|
存储 人工智能 文字识别
从零开始打造AI测试平台:文档解析与知识库构建详解
AI时代构建高效测试平台面临新挑战。本文聚焦AI问答系统知识库建设,重点解析文档解析关键环节,为测试工程师提供实用技术指导和测试方法论