《测试驱动开发的艺术》学习笔记

如何写好代码

关于本书

源码下载:http://www.manning.com/koskela

1 综述

  • Martin Fowler 的 《重构:改善既有代码的设计》
  • Joshua Kerievsky 的《重构与模式》

3 小步重构

3.1.1 用 Spike 开发原型

  • Spike 算是一个小的实验,目的在于让我们掌握解决当前问题所需要的技术、工具、算法等
    • 这里的“小”是相对,大部分 Spike 都会用去 15 分钟到几小时,一个 TDD 周期只会用去几秒钟或者几分钟时间,而不是几小时
  • Spike 的主要目的是学习知识,通过 Spike,我们至少要弄清楚目前解决方法是否值得继续研究,还是要换一种解决方案

3.1.2 写测试学知识

1、参与维护与开发:视频、语聊相关业务 2、参与维护与开发:财务、活动、多媒体存储等功能模块

TDD 的概念与模式

4.1.3 测试驱动的基本准则

  • 绝不跳过重构
  • 尽快变绿
  • 犯错后减慢速度

4.2 重要的测试概念

  • 4.2.1 夹具是测试的上下文
  • 4.2.2 用测试替身替换依赖
  • 4.2.3 基于状态及基于交互的测试
      1. 基于状态的测试:利用对象内部状态来验证执行结果的正确性
      1. 测试交互:
      • 验证待测对象与其协作对象以我们期望的方式进行交互,而非验证这些对象的最终状态是否匹配
      • 换句话说,我们并不关心对象的内部状态,关心的是待测对象是否正确调用了协作对象的方法,是否使用了正确的参数,调用顺序是否正确
      • 实现基于交互的测试库:
        1. 各种方法的适用范围
        • 我正确使用了我周围的对象吗?
        • 我对外部输入做出正确的回应了吗?
        • J.B. Rainsberger《程序员实用测试技巧》

5 测试驱动 Web 组件

6 测试驱动数据访问

6.2 用单元测试驱动数据访问

⭐️ 存在以下任何一个情形都不是单元测试:(见《修改代码的艺术》)

  • 访问了数据库
  • 有网络通信
  • 访问了文件系统
  • 不与其他任何单元测试同时运行
  • 必须配置好环境后才能运行
comments powered by Disqus