测试理论 - 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 ...
随机推荐
- Educational Codeforces Round 79 (Rated for Div. 2) Finished (A-D)
如果最大值比剩余两个加起来的总和+1还大,就是NO,否则是YES #include<bits/stdc++.h> using namespace std; int main(){ int ...
- python常见函数积累
shape() 返回数组或者数据框有多少行或者多少列 import numpy as np x = np.array([[1,2,5],[2,3,5],[3,4,5],[2,3,6]]) #输出数组的 ...
- Golang 简单的读负责均衡
read-loadbalance master-slave(n) 读库集群负载均衡器(简单轮询)+时间间隔错峰. github 地址:https://github.com/Plen-wang/read ...
- CentOS MySQL自动备份shell脚本
先执行 vim/mysqlBack/back.sh 然后添加以下内容 ## 记录日志 # 以下配置信息请自己修改 mysql_user="root" #MySQL备份用户 mys ...
- LCP 2-分式化简
LCP 2-分式化简 public int[] fraction(int[] cont) { int len = cont.length; int[] d = new int[]{cont[len - ...
- 关于整合ssh中的细节03
关于spring中提供的一些工具类和监听介绍 一.spring提供了一个HibernateTemplate类 ①HibernateTemplate类: 用于操作PO对象,类似Hibernate Ses ...
- AcWing 7. 混合背包问题
#include<iostream> #include<algorithm> #include<cstring> using namespace std ; ; i ...
- 分析器错误消息: Reference.svcmap:未能加载文件
-------------- 缺少了:System.Web.Razor.dll
- 阿里云部署JeecgBoot
阿里云部署JeecgBoot 首先贴出官网教程:http://jeecg-boot.mydoc.io/?t=345682 自己在部署的时候遇到了各种各样的问题,其实一步一步的按照官网给出的步骤来是没问 ...
- 国内下载Git的连接地址
Git国内下载: https://github.com/waylau/git-for-win