《测试驱动数据库开发》—第2章2.5节实现

简介:

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

2.5 实现
测试驱动数据库开发
至此,前面描述的方式能够让读者初步地刻画和实例化数据库的类。下面将介绍一些实现一个数据库的类的方法。本书先从总体需求入手,然后提供一个数据库类的伪代码实现,可以将其移植到任何平台上。

2.5.1 需求
让我们来看看一个良好的数据库的类的实例化机制应该是什么样子的。了解这些需求能够让你编写自己的机制,或者当你面对的需求明显不同于本书描述的情况时,可以调整本书建议的机制,从而适应你的具体情况。

我已经确定了4个需求,并用4个以字母C开头的单词来分别描述之,称其为“4C机制”,希望这个词儿能流行起来。

4C机制如下所述,数据库的类的实例化机制必须是完整的(Complete),对于一个特定的版本,该机制执行了所有必要的变更;该机制必须是正确的(Correct),同样的变更从不在数据库上施加两遍;该机制必须是一致的(Consistent),每一次变更的实施,都是以完全相同的顺序来执行;最后,该机制必须是可控的(Controllable),只要想构建一个特定的数据库,读者就一定能够规定一个目标版本来构建之。

2.5.2 数据库实例化机制的伪代码
用可重复的方式来可靠地更新数据库的算法其实出奇地简单。经过多年的完善,至少与开始时搞出的东西相比,我总是惊讶于它是如此地简单。

UpgradeDatabase(<db>, <design>, <target version>)
  <current version> = current version of <db>
  <required versions> =
     versions from <design> after <current version> and up through
<target version>
  sort <required versions> in ascending order
  for each <version> in <required versions>
     execute transition for <version> against <db>
     update current version of <db> to version number of <version>

上述伪代码的实现细节将留给读者来完成,但是本书通常用XML文档的形式来表达数据库的设计,并且把已经施加到数据库上的变更版本存储在一个数据库表中。这样,数据库的“当前”版本就能够通过选择该表最近插入的行来推断。

2.5.3 输入的伪代码
上述算法的输入可以是一个XML文件或一些其他格式的文本文件。只要数据库的每一个版本可以被确定下来,被适当地排序,并能在数据库实例进行实例化时声明其所需的步骤,任何格式的输入都是可以的。

为了说明这个问题,下面给读者一段简单的XML,包含了用于构建和升级一个小型数据库的脚本:

<database>
  <version id="1">CREATE TABLE FOO(A I NT)</version>
  <version id="3">CREATE TABLE BAR(C CHAR(30))</version>
  <version id="2">ALTER TABLE FOO ADD B NVARCHAR(20)</version>
</database>

如上所示,XML文件包含了可用来排序、标识和执行SQL语句的所有信息,这些信息用来构建数据库或将数据库更新到任何特定的版本。

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

相关文章
|
5月前
|
人工智能 自然语言处理 测试技术
从人工到AI驱动:天猫测试全流程自动化变革实践
天猫技术质量团队探索AI在测试全流程的落地应用,覆盖需求解析、用例生成、数据构造、执行验证等核心环节。通过AI+自然语言驱动,实现测试自动化、可溯化与可管理化,在用例生成、数据构造和执行校验中显著提效,推动测试体系从人工迈向AI全流程自动化,提升效率40%以上,用例覆盖超70%,并构建行业级知识资产沉淀平台。
从人工到AI驱动:天猫测试全流程自动化变革实践
|
8月前
|
数据采集 人工智能 监控
人工智能驱动的软件工程:测试左移的崛起价值
本文探讨了人工智能驱动下测试左移理念在软件工程中的重要性,分析测试工程师在需求评估、AI代码生成及遗留系统优化中的关键作用,揭示AI带来的挑战与机遇,并指出测试工程师需提升技能、关注合规与可维护性,以在AI时代保障软件质量。
444 89
|
11月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
1588 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
数据采集 人工智能 自然语言处理
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
Midscene.js 是一款基于 AI 技术的 UI 自动化测试框架,通过自然语言交互简化测试流程,支持动作执行、数据查询和页面断言,提供可视化报告,适用于多种应用场景。
3792 1
Midscene.js:AI 驱动的 UI 自动化测试框架,支持自然语言交互,生成可视化报告
|
机器学习/深度学习 人工智能 自然语言处理
智能化软件测试:AI驱动的自动化测试策略与实践####
本文深入探讨了人工智能(AI)在软件测试领域的创新应用,通过分析AI技术如何优化测试流程、提升测试效率及质量,阐述了智能化软件测试的核心价值。文章首先概述了传统软件测试面临的挑战,随后详细介绍了AI驱动的自动化测试工具与框架,包括自然语言处理(NLP)、机器学习(ML)算法在缺陷预测、测试用例生成及自动化回归测试中的应用实例。最后,文章展望了智能化软件测试的未来发展趋势,强调了持续学习与适应能力对于保持测试策略有效性的重要性。 ####
|
机器学习/深度学习 数据采集 人工智能
探索AI驱动的自动化测试新纪元###
本文旨在探讨人工智能如何革新软件测试领域,通过AI技术提升测试效率、精准度和覆盖范围。在智能算法的支持下,自动化测试不再局限于简单的脚本回放,而是能够模拟复杂场景、预测潜在缺陷,并实现自我学习与优化。我们正步入一个测试更加主动、灵活且高效的新时代,本文将深入剖析这一变革的核心驱动力及其对未来软件开发的影响。 ###
|
存储 测试技术 数据库
数据驱动测试和关键词驱动测试的区别
数据驱动测试 数据驱动测试或 DDT 也被称为参数化测试。
369 1
|
机器学习/深度学习 人工智能 自然语言处理
AI驱动的自动化测试:提升软件质量的未来之路
【9月更文挑战第3天】AI驱动的自动化测试是提升软件质量的未来之路。它借助AI技术的力量,实现了测试用例的智能生成、测试策略的优化、故障预测与定位等功能的自动化和智能化。随着技术的不断进步和应用场景的不断拓展,AI驱动的自动化测试将在未来发挥更加重要的作用,为软件开发和运维提供更加高效、准确和可靠的解决方案。
|
机器学习/深度学习 人工智能 自然语言处理
探索软件自动化测试的未来:AI驱动的测试策略
【7月更文挑战第47天】 随着人工智能(AI)技术不断进步,其在软件测试领域的应用也日益广泛。本文将探讨如何整合AI技术与现有的自动化测试流程,提出一个面向未来的测试策略。文章重点分析了AI在测试用例生成、执行、结果分析和持续集成中的作用,同时预测了这种技术融合对测试工程师角色的影响,以及它如何提高软件测试的效率和准确性。
|
Java 测试技术
单元测试问题之想通过单元测试来驱动代码的设计与重构,如何实现
单元测试问题之想通过单元测试来驱动代码的设计与重构,如何实现