图书介绍

测试驱动数据库开发PDF|Epub|txt|kindle电子书版本网盘下载

测试驱动数据库开发
  • (美)格恩齐著 著
  • 出版社: 北京:人民邮电出版社
  • ISBN:9787115346285
  • 出版时间:2014
  • 标注页数:270页
  • 文件大小:41MB
  • 文件页数:291页
  • 主题词:数据库系统-系统开发

PDF下载


点此进入-本书在线PDF格式电子书下载【推荐-云解压-方便快捷】直接下载PDF格式图书。移动端-PC端通用
种子下载[BT下载速度快]温馨提示:(请使用BT下载软件FDM进行下载)软件下载地址页直链下载[便捷但速度慢]  [在线试读本书]   [在线获取解压码]

下载说明

测试驱动数据库开发PDF格式电子书版下载

下载的文件为RAR压缩包。需要使用解压软件进行解压得到PDF格式图书。

建议使用BT下载工具Free Download Manager进行下载,简称FDM(免费,没有广告,支持多平台)。本站资源全部打包为BT种子。所以需要使用专业的BT下载软件进行下载。如BitComet qBittorrent uTorrent等BT下载工具。迅雷目前由于本站不是热门资源。不推荐使用!后期资源热门了。安装了迅雷也可以迅雷进行下载!

(文件页数 要大于 标注页数,上中下等多册电子书除外)

注意:本站所有压缩包均有解压码: 点击下载压缩包解压工具

图书目录

第1章 为何改变书的内容、谁是目标读者和什么是障碍1

1.1 为何改变书的内容1

1.1.1 每天敏捷都在逐步地入侵我们的领域2

1.1.2 若没有TDD敏捷就没有成效2

1.1.3 在数据库领域运用TDD是个挑战3

1.2 谁是目标读者3

1.2.1 TDD和OOP3

1.2.2 应用程序和数据库4

1.3 什么是障碍4

1.3.1 数据库就是对象4

1.3.2 TDD适用于类,不适用于对象4

1.3.3 我们需要数据库的类5

1.4 小结6

第2章 建立数据库的类7

2.1 TDD中类的角色7

2.1.1 可靠的实例化过程7

2.1.2 测试检查对象8

2.2 面向对象编程语言中的类8

2.2.1 类的构建很容易:构建新对象即可8

2.2.2 一条途径:必要时析构9

2.3 数据库的类9

2.3.1 两条途径:创建或改变10

2.3.2 难点:统一两条途径10

2.3.3 真实的数据库的生长情况11

2.3.4 将每个数据库构建成生产数据库会怎么样11

2.3.5 所有数据库都遵循完全相同的途径12

2.4 增量构建12

2.4.1 用文档记录每一次数据库的变更12

2.4.2 标识当前版本13

2.4.3 根据需要依次实施变更13

2.5 实现13

2.5.1 需求13

2.5.2 数据库实例化机制的伪代码14

2.5.3 输入的伪代码14

2.6 小结14

第3章 讲一点TDD16

3.1 测试先行的技术16

3.1.1 编写测试代码17

3.1.2 让测试失败得有一些有价值的启示19

3.1.3 看到测试运行通过19

3.1.4 重复20

3.2 测试即规格21

3.2.1 “测试不是测试,而是规格”21

3.2.2 “测试不是规格,而是测试”22

3.2.3 测试是可运行的规格22

3.2.4 增量设计24

3.3 构建良好的规格24

3.3.1 规定行为,而不是结构24

3.3.2 从一无所有开始驱动设计,而不是从其他方式开始25

3.3.3 从内向外地定义设计25

3.3.4 从外向内地定义设计27

3.4 小结29

第4章 安全地改变设计31

4.1 什么是安全31

4.1.1 违约有点糟32

4.1.2 丢失数据可能会让你被炒鱿鱼33

4.1.3 不改设计也同样危险34

4.2 解决方案:过渡测试37

4.2.1 测试驱动的实例化37

4.2.2 建立过渡测试38

4.2.3 累加变化的过渡测试40

4.2.4 过渡测试的变形44

4.2.5 为什么不使用公共接口49

4.3 过渡保障49

4.3.1 Read/Read过渡测试49

4.3.2 每次升级时通过数据库的类来运行52

4.3.3 备份和失败时回滚53

4.3.4 让过渡测试充分利用过渡保障53

4.4 小结54

第5章 遵循接口55

5.1 接口的优势55

5.1.1 更强的耦合语言56

5.1.2 弱耦合的语言57

5.1.3 共识57

5.1.4 耦合到数据库的类58

5.1.5 问题是发生了重复58

5.2 像客户对象般的遵循58

5.2.1 创建DatabaseDesign类的需求58

5.2.2 规定DatabaseDesign类60

5.2.3 摆脱使用多个客户端平台时出现的重复61

5.2.4 当耦合出问题时会发生什么62

5.2.5 消除数据库构建和客户端代码之间的重复62

5.2.6 解除实现与设计之间的耦合63

5.3 症结:变更64

5.3.1 随时间而变化的设计64

5.3.2 记录所有版本的设计65

5.3.3 耦合到设计的正确版本68

5.4 症结:耦合69

5.4.1 不同的客户端耦合到不同的版本69

5.4.2 总是不得不修改所有东西也是重复69

5.4.3 透镜概念介绍73

5.4.4 虚拟透镜76

5.4.5 “当前”透镜78

5.4.6 “新”透镜79

5.5 小结81

第6章 定义行为82

6.1 一组新问题83

6.1.1 无封装83

6.1.2 隐藏一切84

6.1.3 数据库中的业务逻辑84

6.2 知识、信息与行为85

6.2.1 通告86

6.2.2 知识88

6.2.3 行为90

6.3 由外而内地开发92

6.3.1 定义测试93

6.3.2 生长出接口94

6.3.3 生长出行为和结构95

6.4 用规格来实现合理的设计97

6.4.1 开发当下的需求,而不是将来的需求97

6.4.2 用增量的方式构建98

6.4.3 将访问限定在规定的内容上98

6.4.4 小结99

第7章 为可维护性而构建100

7.1 再也不要担心未来100

7.1.1 在当下寻找机会101

7.1.2 针对通告进行设计102

7.1.3 使用行为来翻译通告和知识106

7.2 用激情和热忱来保护知识108

7.2.1 不做改变是最危险的选择108

7.2.2 让设计保持自然110

7.3 当事情在未来发生时再处理111

7.3.1 定义新的设计111

7.3.2 引入最小的变化113

7.3.3 让测试运行通过115

7.3.4 停下来,思考,重构117

7.3.5 小结119

第8章 错误与修复121

8.1 各种错误121

8.1.1 轴:好的错误还是坏的错误122

8.1.2 轴:错误发布了没有124

8.2 处理好的错误125

8.2.1 修复它就好了125

8.2.2 现在就记录行为126

8.2.3 回溯功能的根源128

8.3 处理坏的错误129

8.3.1 未发布的错误129

8.3.2 已发布的错误133

8.3.3 灾难性的错误139

8.4 小结140

第9章 设计141

9.1 结构与设计142

9.1.1 结构:执行细节142

9.1.2 测试和类信息144

9.2 什么是设计144

9.2.1 概念之桶145

9.2.2 真正的TDD中强制性的部分147

9.3 组合与聚合148

9.3.1 组合:一件事有多个组成部分148

9.3.2 聚合:连接截然不同的东西151

9.4 复用154

9.4.1 避免将同样的内容开发两遍154

9.4.2 通过组合或聚合来实现复用156

9.5 抽象157

9.5.1 发现运用抽象的机会157

9.5.2 封装行为159

9.5.3 寻找各种方式来允许变化发生在依赖关系中164

9.5.4 处理时间问题165

9.6 小结169

第10章 mocking171

10.1 测试单个的行为171

10.1.1 为什么封装172

10.1.2 测试就是对那些在其控制之外的一切进行测试172

10.1.3 从测试那里来控制不相关的行为173

10.1.4 mocking控制了行为174

10.2 在面向对象编程中的mocking174

10.2.1 设置175

10.2.2 解耦179

10.2.3 隔离181

10.2.4 集成182

10.3 在数据库设计中使用mocking182

10.3.1 示例问题183

10.3.2 示例解决方案184

10.3.3 组合187

10.3.4 聚合188

10.3.5 为可测试性而设计188

10.4 小结189

第11章 重构190

11.1 什么是重构190

11.1.1 改变设计但不改变行为191

11.1.2 在测试运行通过的背景下192

11.2 较低和较高风险的设计变更199

11.2.1 较低风险:改变类一级的设计199

11.2.2 中等风险:重新安排行为的逻辑200

11.2.3 较高风险改变知识的容器202

11.2.4 这不是一个跳过测试的邀请202

11.3 小结202

第12章 遗留数据库203

12.1 提升到一个类203

12.1.1 推导初始版本204

12.1.2 用测试来钉牢过渡行为206

12.2 控制耦合207

12.2.1 识别和锁定现有的使用数据库的情况207

12.2.2 按需封装209

12.3 控制变更210

12.3.1 用测试驱动新的行为210

12.3.2 按需钉牢构造行为212

12.3.3 按需钉牢行为213

12.3.4 实现新的行为214

12.4 查找接缝和组件215

12.4.1 查找接缝215

12.4.2 封装组件218

12.5 小结222

第13章 Fa?ade模式224

13.1 使用Fa?ade的封装224

13.1.1 Fa?ade模式的说明225

13.1.2 测试驱动开发出来的新的Fa?ade数据库229

13.1.3 使用组合方法的替代方案235

13.1.4 封装还是不封装235

13.2 扼杀旧接口236

13.2.1 将正在改变的行为转移到Fa?ade236

13.2.2 当不再需要时删除访问权限和功能237

13.3 在Fa?ade数据库中对行为进行测试驱动开发238

13.3.1 暴露遗留的行为238

13.3.2 做事情的另一种方法239

13.3.3 新的行为239

13.4 小结241

第14章 变奏曲242

14.1 重要的是拥有一个类,而不是实现243

14.2 场景:跳过那些步骤243

14.2.1 问题243

14.2.2 解决方案244

14.2.3 正确的工作量246

14.3 偏离246

14.3.1 问题246

14.3.2 解决方案247

14.3.3 应用解决方案248

14.4 通用的解决方案252

14.5 小结252

第15章 其他应用254

15.1 XML255

15.1.1 封装255

15.1.2 XSD Schema255

15.1.3 XSLT过渡257

15.1.4 对XSLT的变更进行过渡测试258

15.2 文件系统和其他的对象目录259

15.2.1 对文件系统的操作进行过渡测试259

15.2.2 Shell脚本过渡261

15.3 数据对象262

15.3.1 类的定义就是Schema262

15.3.2 对Ugrader类进行过渡测试263

15.3.3 编写过渡266

15.4 小结与寄语270

热门推荐