测试理论 - Test Double

  1. 概述

    1. 简述 test double
      1. mock, fake 之类的东西
  2. 背景

    1. 最近在看 google 软件测试之道

      1. 妈的 13 年的老书了
      2. 书里有提到 mock, fake, stub
      3. 刚好, 我又不太会
    2. 上网找相关的东西

      1. 发现了一个叫做 Test Double 的东西

1. Test Double

  1. 概述

    1. 测试替身
  2. 背景

    1. 单元测试中, 总会对外界产生依赖

      1. 要么依赖外界的参数
      2. 要么依赖外界的服务
    2. 但是如果真的依赖起来了...

      1. 一传十十传百, 就得起一套环境
        1. 可我就想写个 单元测试 啊喂...
    3. 于是, 有了 测试替身...

      1. 不是 JoJo 的那个替身...
      2. Double 就是 替身的意思
  3. Test Double

    1. 概述

      1. 在测试中用来充数的对象
    2. 目的

      1. 减少依赖
      2. 方便测试
    3. 分类

      1. Dummy

        1. 名称

          1. 哑对象
        2. 本质

          1. 一个普通的对象
          2. 但是却不会被使用...
        3. 场景

          1. 通常用来做 参数列表 的填充
      2. fake

        1. 名称

          1. 假对象
        2. 本质

          1. 确实是一个有逻辑的实现
          2. 但是这个实现仅仅为了完成测试, 所以会比较简陋
          3. 跟生产环境肯定没法比
        3. 场景

          1. 比如需要用 数据库 的时候,
          2. 我们可以用一个 fake, 连接到 redis 里取数据
      3. stub

        1. 名称

          1. 桩对象
        2. 本质

          1. 没有逻辑
          2. 只有固定的返回值
          3. 作用域很小, 只有测试的地方...
        3. 场景

          1. 测支付的时候, 需要返回成功
      4. spy

        1. 名称

          1. 间谍对象
        2. 本质

          1. 是一个 桩对象
          2. 但是多了一些 记录功能
        3. 场景

          1. 有个 模拟发邮件 的 spy
          2. 每次调用它, 就会返回成功
          3. 这个 spy 会记录你每次要发送的内容
            1. 可能是 调用参数 之类的
      5. mock

        1. 名称

          1. 模仿对象
        2. 本质

          1. 预定义了一系列的调用返回
            1. 如果符合 预期, 就 正常返回
            2. 如果不符合 预期, 就会 报异常
          2. 感觉比 stab 要稍微复杂点...
            1. 简单的说, 就是一个 带断言 的 stub
              1. 然后你问我, 为啥不直接用 断言...
              2. 其实, 我觉得...也可以...
              3. 而且用 mock 的话, 测试会更加真实, 自然...
        3. 场景

          1. 通常用来模拟 可能会触发异常, 的场景
            1. 这个用倒是用过, 可真的 一会半会 想不出来啥场景了...

ps

  1. ref

    1. 浅析Mock,Fake和Stub在测试中的应用

      1. 一个相对靠谱的老哥
        1. ref 真的很全
    2. TestDouble

      1. 这个是 Martin Fowler 的博客
        1. 就是写 重构, 分析模式 的老哥
    3. Test Double

      1. 这是另一本书 xUnit Patterns 对这些的讲解
  2. 后续

    1. 找了些 mock 的学习资料, 有空自己 补一补...
posted @ 2019-12-02 22:27  轩辕拾銉  阅读(746)  评论(0编辑  收藏  举报