测试理论 - Test Double
- 概述
- 简述 test double
- mock, fake 之类的东西
- 简述 test double
- 背景
- 最近在看 google 软件测试之道
- 妈的 13 年的老书了
- 书里有提到 mock, fake, stub
- 刚好, 我又不太会
- 上网找相关的东西
- 发现了一个叫做 Test Double 的东西
- 最近在看 google 软件测试之道
1. Test Double
- 概述
- 测试替身
- 背景
- 单元测试中, 总会对外界产生依赖
- 要么依赖外界的参数
- 要么依赖外界的服务
- 但是如果真的依赖起来了...
- 一传十十传百, 就得起一套环境
- 可我就想写个 单元测试 啊喂...
- 一传十十传百, 就得起一套环境
- 于是, 有了 测试替身...
- 不是 JoJo 的那个替身...
- Double 就是 替身的意思
- 单元测试中, 总会对外界产生依赖
- Test Double
- 概述
- 在测试中用来充数的对象
- 目的
- 减少依赖
- 方便测试
- 分类
- Dummy
- 名称
- 哑对象
- 本质
- 一个普通的对象
- 但是却不会被使用...
- 场景
- 通常用来做 参数列表 的填充
- 名称
- fake
- 名称
- 假对象
- 本质
- 确实是一个有逻辑的实现
- 但是这个实现仅仅为了完成测试, 所以会比较简陋
- 跟生产环境肯定没法比
- 场景
- 比如需要用 数据库 的时候,
- 我们可以用一个 fake, 连接到 redis 里取数据
- 名称
- stub
- 名称
- 桩对象
- 本质
- 没有逻辑
- 只有固定的返回值
- 作用域很小, 只有测试的地方...
- 场景
- 测支付的时候, 需要返回成功
- 名称
- spy
- 名称
- 间谍对象
- 本质
- 是一个 桩对象
- 但是多了一些 记录功能
- 场景
- 有个 模拟发邮件 的 spy
- 每次调用它, 就会返回成功
- 这个 spy 会记录你每次要发送的内容
- 可能是 调用参数 之类的
- 名称
- mock
- 名称
- 模仿对象
- 本质
- 预定义了一系列的调用返回
- 如果符合 预期, 就 正常返回
- 如果不符合 预期, 就会 报异常
- 感觉比 stab 要稍微复杂点...
- 简单的说, 就是一个 带断言 的 stub
- 然后你问我, 为啥不直接用 断言...
- 其实, 我觉得...也可以...
- 而且用 mock 的话, 测试会更加真实, 自然...
- 简单的说, 就是一个 带断言 的 stub
- 预定义了一系列的调用返回
- 场景
- 通常用来模拟 可能会触发异常, 的场景
这个用倒是用过, 可真的 一会半会 想不出来啥场景了...
ps
- 通常用来模拟 可能会触发异常, 的场景
- 名称
- Dummy
- 概述
- ref
- 浅析Mock,Fake和Stub在测试中的应用
- 一个相对靠谱的老哥
- ref 真的很全
- 一个相对靠谱的老哥
- TestDouble
- 这个是 Martin Fowler 的博客
- 就是写 重构, 分析模式 的老哥
- 这个是 Martin Fowler 的博客
- Test Double
- 这是另一本书 xUnit Patterns 对这些的讲解
- 浅析Mock,Fake和Stub在测试中的应用
- 后续
- 找了些 mock 的学习资料, 有空自己 补一补...
测试理论 - Test Double的更多相关文章
- Go项目的测试代码3(测试替身Test Double)
上一篇文章介绍了项目中测试代码的写法. Go项目的测试代码2(项目运用) 这里简单的共享一下测试替身. 当我们写测试代码的时候,经常遇到一个问题.跟别的模块或服务有依赖性,可是功能还没开发完.或是因为 ...
- 测试理论- the conten of test plan
1 testing objects 测试对象 2 testing scope 测试范围 3 testing the frame (?) 4 the environment 5 reason for t ...
- 测试理论--branch testing and boundary testing
1 branch testing 分支测试 测试代码的所有分支 2 boundary testing 测试 程序的限制条件
- 测试理论--web测试方法总结
一.输入框 1.字符型输入框: (1)字符型输入框:英文全角.英文半角.数字.空或者空格.特殊字符“~!@#¥%……&*?[]{}”特别要注意单引号和&符号.禁止直接输入特殊字符时,使 ...
- 测试理论03-svn-缺陷及报告-jira
回顾--用例设计方法 边界值(三个点,使用步骤) 判定表(适用,四个组成部分,规则,使用) 因果图(适用,四个符号,使用) 正交表(定义,特性,L_n(m^k),因素,水平,使用,工具allpairs ...
- App测试理论简介
一.App测试常见关注点 1.App的功能测试 功能测试都是我们首要测试的,只有功能实现了才算符合上线发布的最低标准.我们需要检测产品功能是否已实现.产品功能是否符合设计要求.产品功能是否有重复.产品 ...
- 测试理论-selenium的工作原理
- 【星云测试】Wings-让单元测试智能全自动生成
Wings-让单元测试智能全自动生成 前言 单元测试是保证软件质量非常有效的手段,无论是从测试理论早期介入测试的理念来看或是从单元测试不受UI影响可以高速批量验证的特性,所以业界所倡导的测试驱动开发, ...
- LINQ 函数的实战演练测试
1.首先定义一个图书类.专门存放图书的属性信息. 代码如下: //Book.cs using System; namespace LinqTest { public class Book { pu ...
随机推荐
- 没有胆量,有天赋也是白费。Without guts,talent is wasted.
没有胆量,有天赋也是白费. Without guts,talent is wasted.
- 0014 基于DRF框架开发(02 基类视图 GenericAPIView)
前端于对数据操作的请求基本上就分为四类:增删改查,即增加.删除.修改.查询. 而DRF把前端请求分为两个大类:带ID参数请求和不带ID参数请求. 不带ID参数请求包括:增加.分布多条查询 带ID参数请 ...
- codechef Future of draughts
难度 super-hard 题意 官方中文题意 做法 定义1:\(G\)为邻接矩阵,\(I\)为单位矩阵 定义2:\(H\)为转移矩阵,可以不动,即\(H=G+I\) 定义3:\(e_i(x_1,.. ...
- 2020牛客寒假算法基础集训营4-F树上博弈
链接:https://ac.nowcoder.com/acm/contest/3005/F来源:牛客网 题目描述 现有一个 n 个点,n-1条边组成的树,其中 1 号点为根节点. 牛牛和牛妹在树上玩游 ...
- PAT (Basic Level) Practice (中文)1064 朋友数 (20 分) (set)
如果两个整数各位数字的和是一样的,则被称为是“朋友数”,而那个公共的和就是它们的“朋友证号”.例如 123 和 51 就是朋友数,因为 1+2+3 = 5+1 = 6,而 6 就是它们的朋友证号.给定 ...
- 【HTML】html5 canvas全屏烟花动画特效
<!DOCTYPE html> <html lang="zh"> <head> <meta charset="UTF-8&quo ...
- PGET,一个简单、易用的并行获取数据框架
使用场景 当我们的服务收到一个请求后,需要大量调用下游服务获取业务数据,然后对数据进行转换.计算后,响应给请求方. 如果我们采用串行获取下游数据,势必会增加响应时长,降低接口的qps.如果是并行获取下 ...
- python中的strip()方法
python中字符串str的strip()方法 str.strip()就是把字符串(str)的头和尾的空格,以及位于头尾的\n \t之类给删掉. 例1: str=" python " ...
- docker-储存持久化
docker容器不适合存放数据,重要的数据要用外部卷存储,容器可以挂载真实机目录或者共享存储为卷 储存卷映射 docker run -itd -v 真实机目录:容器目录 镜像:标签 可以做一台nfs服 ...
- cmd 下sql语句及结果
Microsoft Windows [版本 10.0.14393](c) 2016 Microsoft Corporation.保留所有权利. C:\Users\李长青>mysql -uroot ...