写点什么

文章: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:252203

评论

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

项目分享:AIGC技术在智能教学生成中的应用

YoLo

AI

HarmonyOS的功能及场景应用

芯动大师

Python从基础到进阶字符串验证

申公豹

Python

用纯 Python 打造的轻量级 Excel 到 Markdown 转换工具

申公豹

Python

架构决策的弹性

agnostic

架构决策

WorkPlus Meet实现企业局域网视频会议的领先解决方案

BeeWorks

简洁灵活:Python中基于字段的不使用元类的ORM实现

申公豹

Python

移动UI交互设计与动效制作

坚果

设计 UI 坚果派

个人技术成长方面的心得体会:边缘计算之旅

农夫三拳

记一次本地环境启动不了Mysql的故障

DoHornBurg

Java MySQL hyper-v

WorkPlus十年铸剑,成就千万级用户信赖与认可

BeeWorks

WorkPlus企业即时通讯系统的领先者,提升沟通效率的利器

BeeWorks

WorkPlus超级APP助力企业节省IT人力成本,实现快速移动化

BeeWorks

深入学习Python与Vscode环境的安装与配置

申公豹

Python

在Python中实现条形图动态追赶动画效果

申公豹

Python

从学习到实践——火山引擎多媒体处理框架BMF的深度探索

熬夜磕代码、

文心一言 VS 讯飞星火 VS chatgpt (163)-- 算法导论13.1 3题

福大大架构师每日一题

福大大架构师每日一题

Python图像处理:批量添加水印的优雅实现与进阶技巧

申公豹

Python

WorkPlus一站式协同解决方案,助力企业降本增效

BeeWorks

利用开源框架BMF实现高效视频处理

Geek-yan

鸿蒙 API 9工程转换为API 10工程

坚果

HarmonyOS OpenHarmony

Python文件操作指南:读写、异常处理与上下文管理器详解

申公豹

Python

Seaborn 数据可视化全攻略:从基础到高级实战

申公豹

Python

掌握进阶:高级功能、图表定制与地理数据绘制

申公豹

Python

E3PO: 探索360°视频流传输的未来

不会算法。

WorkPlus打造企业即时通讯平台,助力高效沟通与协作

BeeWorks

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