速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

文章:Mock 不是测试的银弹

  • 2009-05-15
  • 本文字数:807 字

    阅读完需:约 3 分钟

开发者编写高质量测试的征途上可谓布满荆棘,数据库、中间件、不同的文件系统等复杂外部系统的存在,令开发者在编写、运行测 试时觉得苦恼异常。外部系统以及网络连接的不稳定性(外部系统停止响应或者网络连接超时),将有可能导致测试运行过程随机失败。另外,外部系统缓慢的响应 速度(HTTP 访 问、启动服务、创建删除文件等),还可能会造成测试运行时间过长、成本过高。种种问题使开发者不断寻找一种更廉价的方式来进行测试, mock 便是开发人员解决上述问题时祭出的法宝。

然而,在作者的实际项目中,虽然通过 JMock 确实大大降低了编写测试的难度,但是产品质量并没有如所预期的那样,随着不断添加的测试而变得愈加健 壮;虽然产品代码的单元测试覆盖率超过了 80%,然而在发布前进行全面测试时,常常发现严重的功能缺陷而不得不一轮轮的修复缺陷、回归测试。

在对项目案例进行分析之后,作者指出:

真实 perforce 对象的行为与测试所使用的 mock 对象行为不一致是出现上述问题的根本原因,被模拟对象的行为与真实对象的行为必须完全一致称之为mock 对象的行为依赖风险。开发者对 API 的了解不够、被模拟对象的行为发生变化(重构、添加新功能等修改等都可能引起被被模拟对象的行为变化)都可能导致错误假设(与真实对象行为不一致),错误假设会悄无声息的引入缺陷并留下非法测试。

继而提出了编写健壮测试的几条原则:

  • 要设计合理的等待策略来保守的使用外部系统
  • 要正确的创建和销毁资源
  • 要设计合理的过滤策略来忽略某些测试
  • 要充分利用计算资源而不是人力资源来加快测试

阅读文章全文 Mock 不是测试的银弹

相关阅读

[ ThoughtWorks 实践集锦(1)] 我和敏捷团队的五个约定

[ ThoughtWorks 实践集锦(2)] 如何在敏捷开发中做好数据迁移

[ ThoughtWorks 实践集锦(3)] RichClient/RIA 原则与实践(上)(下)

[ ThoughtWorks 实践集锦(4)] 为什么我们要放弃Subversion

[ ThoughtWorks 实践集锦(5)] “持续集成”也需要重构

2009-05-15 00:251910

评论

发布
暂无评论
发现更多内容

Java HashMap loadfactor没有必要非是0.75

i风语

Java redis hashmap loadfactor hash

分布式时序数据库SilverDB-技术架构1

Hervor。

时序数据库 分布式架构 分布式存储

架构训练营第三章课后作业单例模式 组合模式

周冬辉

代码重构--架构师必备技能

极客李

架构师训练营 Week 03 总结

Wancho

第三周作业

CP

改变要一点点来

Neco.W

正确阅读 进步

代码重构:如何充实你的设计工具箱

Skye

极客大学架构师训练营 代码重构

【架构师训练营】第三周作业

Mr.hou

极客大学架构师训练营

Week 03 命题作业

卧石漾溪

极客大学架构师训练营

八张图彻底了解JDK8 GC调优秘籍-附PDF下载

程序那些事

JVM jdk8 「Java 25周年」 Java 25 周年 性能调优

BIGO全球计算平台的技术挑战

DT极客

Week 03- 作业二:学习总结

dean

极客大学架构师训练营

Week 03 学习总结

卧石漾溪

极客大学架构师训练营

「架构师训练营」第 3 周作业 - 模式与重构

guoguo 👻

极客大学架构师训练营

架构师课程第三周作业

杉松壁

架构师训练营第三章作业

叮叮董董

【第三周】学习总结——Flower框架学习和设计模式

三尾鱼

极客大学架构师训练营

单例模式 & 组合模式

朱月俊

架构师训练营 No.3 周作业

连增申

第三周作业

王鑫龙

极客大学架构师训练营

Week3总结+作业

林毋梦

极客大学架构师训练营

最近一周总结

朱月俊

架构师训练营 第三周作业

Glowry

极客大学架构师训练营

架构师训练营作业 -20200621

caibird1984

极客大学架构师训练营

架构师训练营第三章总结

叮叮董董

投资人李丰对中国商业模式创新的理解

石云升

投资 零售 模式创新

03周作业——设计模式

dao

设计模式 极客大学架构师训练营 作业

谁再悄咪咪的吃掉异常,我上去就是一 JIO

楼下小黑哥

Java dubbo 踩坑经历

Zookeeper面试题36问,再和面试官多聊半个点

Java小咖秀

zookeeper 负载均衡 面试 分布式协同 分布式系统

架构师训练营-第三周作业

清风徐徐

文章:Mock不是测试的银弹_Java_胡凯_InfoQ精选文章