保存成功
保存失败,请重试
提交成功

Mock 七宗罪

作者/分享人:肖鹏
ADP技术与解决方案架构师,前ThoughtWorks持续交付中国区Lead。目前专注于响应式编程,以及企业系统集成与容器化。

我合作过的很多团队,特别是敏捷团队,都对Mock情有独钟。有些团队甚至达到了无Mock不UT的地步。2013开始我在团队中开始推行去Mock化,并取得了不错的效果。要在团队中去Mock必须要回答两个问题:第一Mock本身有什么缺陷;第二不用Mock怎么写(单元)测试。下面是我列的一个大纲,成稿的时候可能会有一些调整。

第一部分:Mock测试的缺陷

  1. 漏测核心逻辑
  2. 测试不存在的逻辑
  3. 漏测横切特性
  4. 掩盖坏味道
  5. 掩盖性能缺陷
  6. 阻碍重构
  7. 测试实现细节而非功能。

第二部分:不用Mock怎么写(单元)测试

  1. 消除『单元』情结
  2. 对象创建与依赖注入
  3. 文件、网络和数据库
  4. MVC和容器
  5. Reactive Programming

实录提要:

  • 没有 Mock 的话怎么保障测试用例专注于单个方法的功能验证?
  • 消除单元情结,消除之后单元测试和集成测试的分界线是什么呢?
  • 数据库相关的层如何测试?
  • 如何应用内存数据库达到测试实际数据库的目的?
  • 如果确实出现 private 方法,是怎么测试的,通过调用方法覆盖吗?
  • Mock 和自动化测试之间有什么关系?
已有331人预订
预订达标
文章出炉
交流日期
     
17.04.11
17.04.24
17.05.02 20:00
查看文章评论/提问
吴平福6 个月前
实践中我们要解决一个问题,在异常处理流程中是否输出了安全等级的信息,比如身份证号码;很明显,要执行过了才知道,网络异常,测试人员很难测试到。
肖鹏(作者)6 个月前
线下沟通了一下。吴同学的场景是“这个是我们要开发一个检查工具去发现别人的代码中是否存在这个问题。通过单元测试+MOCK去实现。”这是一种集成测试场景,而且不能修改别人的代码。由于mock的是稳定的(不可能重构的)结构,我觉得没啥问题。
傻子才悲伤2 年前
感觉最基本的测试概念都没有搞清楚啊。单元测试,组件测试,集成测试等等,都是不一样的。mock个人认为用在TDD的单元测试部分,再合适不过了。另外为了凑齐七宗罪,强列出七点,也是有点不优雅啊。反对意见。
李志博2 年前
写的不错看了这篇文章叫我知道某些场景下mock 还是有用的。。
嗜血红魔2 年前
好 很好 非常好
Adele2 年前
这样的mock和自动化测试之间的是否有些关系?是不是可以作为自动化测试的基础。很想在项目里来做这件事情,还不知如何来做?有没有些案例分享,或者常见的业务类(比如针对登陆、权限)等有比较通用的Mock代码案例。
你可能还喜欢
史上最全 Redis 面试题及答案,搞懂这套题征服面试官
ilomilo
数据结构算法常见的 100 道面试题全解析:2019 版
攻城狮
怎样的一份“副业”,能让你不依赖“死工资”?
一尘
如何依靠副业赚钱,应对人到中年的职场危机
代码GG陆晓明
Zookeeper 详解与实践,你面试工作都绕不开的必考题!
latent
详解 Google Protocol Buffer 协议
拾贝壳的人
微信扫描登录
关注提示×
扫码关注公众号,获得 Chat 最新进展通知!
入群与作者交流×
扫码后回复关键字 入群
Chat·作者交流群
入群码
该二维码永久有效