QCon北京「鸿蒙专场」火热来袭!即刻报名,与创新同行~ 了解详情
写点什么

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

评论

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

如何设计实施 Git 工作流程以提升软件研发效能?

思码逸研发效能

git DevOps 编程语言 研发效能 研发效能管理

有哪些ppt一键生成软件?这6个AI不容错过!

职场工具箱

效率工具 职场 PPT 办公软件 AI生成PPT

AI在职场:如何通过人工智能提升工作效率

幂简集成

人工智能 API

【JIT/极态云】技术文档--组织架构简介

武汉万云网络科技有限公司

低代码

Python脚本消费多个Kafka topic

不在线第一只蜗牛

Python kafka

LeetCode题解:2618. 检查是否是类的对象实例,使用instanceof

Lee Chen

LeetCode题解:2618. 检查是否是类的对象实例,迭代和递归

Lee Chen

喜讯!云起无垠获“中国产业互联网发展联盟IDAC双奖”

云起无垠

LeetCode题解:2695. 包装数组,详细解释

Lee Chen

Apache IoTDB v1.3.3 发布|新增数据订阅,DataNode 主动监听并加载 TsFile 等功能

Apache IoTDB

选择ETL工具需要注意什么技术性问题?

RestCloud

数据分析 ETL 数据集成

超实用开源前端商城模板,助力电商项目飞速启航!免费直接可用!

恩爸编程

商城项目 商城源码 商城系统 开源商城项目 前端商城模版

产品需求文档在迭代阶段怎样管理

易成研发中心

产品需求 产品需求文档

鸿蒙NEXT开发案例:血型遗传计算

zhongcx

鸿蒙

模型压缩理论简介及剪枝与稀疏化在 征程 5 上实践

地平线开发者

自动驾驶; 算法、

香港 Web3 宣言两周年专访 HashKey Tokenisation 总经理 Anna Liu:探索代币化的未来

TechubNews

人类级别语音 AI 路线图丨 Voice AI 学习笔记

声网

ChatGPT 开启「眼睛」,实时摄像头对话来了;昆仑万维推出实时语音助手 Skyo丨 RTE 开发者日报

声网

HarmonyOS NEXT用户专属装扮免费体验!华为主题内容大焕新!

最新动态

作为产品经理,如何分析和管理你的产品需求

易成研发中心

产品需求

赋能生态系统,Arm 打造全球最大 AI 开发者社区

新消费日报

鸿蒙NEXT开发案例:简体繁体转换器

zhongcx

鸿蒙

鸿蒙安全控件简介

龙儿筝

CSA GCR 2024 | 百度安全DDoS防护服务荣获安全磐石奖等多项殊荣

百度安全

软件测试丨全面解析 Allure 2 的安装与运用

测试人

软件测试

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