写点什么

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

评论

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

如何把域名解析到自己的网站?怎么设置域名解析?

国科云

为什么身份控制是确保API接口访问安全的关键?

幂简集成

安全 API 身份控制

被黑客入侵的 DMM 比特币为比特币购买获得 3.2 亿美元

区块链开发团队DappNetWork

Mint Blockchain 成立 Mint Eco Fund 发展基金,并启动 Season1 开发者活动 NFT Summer!

NFT Research

NFT Layer 2

深入解读Prometheus Adapter:云原生监控的核心组件

快乐非自愿限量之名

微服务 云原生 容器化

iLogtail 2.0 重大升级,端上支持 SPL

阿里巴巴云原生

阿里云 云原生 日志服务 sls

TechSmith Snagit for mac(强大的屏幕截图软件) v2023.3.1中文版

Mac相关知识分享

Mac 截图 Mac软件 截图软件

Wi-Fi 6E vs. Wi-Fi 7: Which is the Best Fit for Your Infrastructure?

wallyslilly

IPQ8072 ipq9574

「C++」深度分析C++中i++与++i的区别 _

不在线第一只蜗牛

c++ 编程 开发语言

SpaceX 星舰周四晚八点再试飞;Backseat AI 发布《英雄联盟》实时辅导工具丨 RTE 开发者日报 Vol.219

声网

运营海外社媒平台的最佳工具:云手机

Ogcloud

云手机 海外云手机 云手机海外版 国外云手机 海外云手机推荐

天谋科技与腾讯云完成兼容性互认证

Apache IoTDB

未来5年,只有这种产品团队才能开启上帝视角【玩转IPD】

IPD产品研发管理

产品 项目管理 产品开发 软件研发

Netty FastThreadLocal实践

FunTester

PostgreSQL 17 Beta1 发布,酷克数据再次贡献核心力量

酷克数据HashData

ForkLift for Mac(文件管理程序) v4.1.3版

Mac相关知识分享

软件 文件管理 mac软件下载 Mac办公软件

区块链最新热点新闻:技术升级与市场动态

dappweb

8个实用的Java Streams API

快乐非自愿限量之名

Java API 开发语言

速卖通商品详情API(aliexpress.item_get)返回值详解与实战

技术冰糖葫芦

API 接口 API 文档 API 策略

摄影师必备软件XnViewMP for Mac(图片浏览查看器) v1.7.2版

Mac相关知识分享

Mac软件 mac软件下载 图像处理软件

淘宝/天猫商品详情API接口与数据挖掘技术的结合应用

技术冰糖葫芦

API 接口 API 文档 API 策略

软件测试学习笔记丨Vue常用指令-条件渲染(v-if)

测试人

软件测试

2024-06-05:用go语言,给定三个正整数 n、x 和 y, 描述一个城市中由 n 个房屋和 n 条街道连接的情况。 城市中存在一条额外的街道连接房屋 x 和房屋 y。 需要计算对于每个街道数(

福大大架构师每日一题

福大大架构师每日一题

低代码开发:企业OA低成本数字化转型的新引擎

EquatorCoco

低代码 OA

SD-WAN实现企业出海网络加速

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

Affinity Publisher for Mac(专业排版设计软件) v2.5.2版

Mac相关知识分享

Mac Mac软件 排版设计软件 mac下载

一台桌面工作站的智慧之光,照见宁畅“全局智算”版图

脑极体

AI

再见,PCA 主成分分析!

EquatorCoco

Python 人工智能 机器学习

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