测试理论 - 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 ...
随机推荐
- [HNOI2009]图的同构记数
题意 在所以置换下,本质不同的\(n\)阶图个数 做法 可以假想成\(K_n\),边有黑白两色,黑边存在于原图,白边存在于补图 由于\(n\le 60\),可以手算出拆分数不大,所以我们爆搜置换群 对 ...
- Easy_language
http://www.guosen.com.cn/gxzq/tradestation/help/operate/operate06.html power language https://seekin ...
- PAT (Basic Level) Practice (中文)1029 旧键盘 (20 分)
旧键盘上坏了几个键,于是在敲一段文字的时候,对应的字符就不会出现.现在给出应该输入的一段文字.以及实际被输入的文字,请你列出肯定坏掉的那些键. 输入格式: 输入在 2 行中分别给出应该输入的文字.以及 ...
- 堆之*bin理解
在程序运行中,使用bins结构对释放的堆块进行管理,以减少向系统申请内存的开销,提高效率. chunk数据结构 从内存申请的所有堆块,都使用相同的数据结构——malloc_chunk,但在inuse和 ...
- SpringBoot整合WEB开发--(十)配置AOP
简介: SpringBoot框架中对AOP有很好的支持,简单AOP概念: JoinPoint(连接点):类里面可以被增强的方法即为连接点,例如,想修改哪个方法的功能,那么该方法就是一个连接点. Poi ...
- Python 绘图 cookbook
目录 python绘图常见bug matplotlib包加载 解决中文绘图乱码解决方法 解决python中用matplotlib画多幅图时出现图形部分重叠的问题 python绘图常见bug matpl ...
- 杭电oj2037——今年暑假不AC(java实现)
思路:标准贪心 先把所有思路列出来: 1.优先选择开始时间最早的,经分析,不可行 2.优先选择持续时间最短的,经分析,不可行 3.优先选择结束时间最早的,经分析,可行 然后根据第三种思路实现代码就好 ...
- MySQL用B+树做索引
索引这个词,相信大多数人已经相当熟悉了,很多人都知道MySQL的索引主要以B+树为主,但是要问到为什么用B+树,恐怕很少有人能把前因后果讲述的很完整.本文就来从头到尾介绍下数据库的索引. 索引是一种数 ...
- 短路运算符&&、或运算符||的理解
一.短路运算符&& 1.当只有两个表达式的时候(如a&&b),先看第一个表达式转换成布尔值的结果若为真,那么再看第二个表达式转换成布尔值的结果,就可以返回该表达式的值了 ...
- python面试的100题(13)
29.Given an array of integers 给定一个整数数组和一个目标值,找出数组中和为目标值的两个数.你可以假设每个输入只对应一种答案,且同样的元素不能被重复利用.示例:给定nums ...