写点什么

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

评论

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

Photoshop CC 2018 for Mac(ps cc 2018)v19.1.8中文激活版

Rose

MySQL5.7 通过逻辑备份迁移到GreatSQL注意事项

GreatSQL

Ulysses for Mac(优秀的markdown写作软件)v35中文直装版

iMac小白

软件测试学习笔记丨Flask操作数据库-多对多操作

测试人

数据库 软件测试

人工智能能为区块链和初创公司做些什么?

区块链开发团队DappNetWork

AE脚本Motion 4 中文版for Mac v4.1.2激活版 MG运动图形高级工具

Rose

一文搞懂5种内存溢出案例,内含完整源码

华为云开发者联盟

Java JVM 华为云 华为云开发者联盟 企业号2024年6月PK榜

Affinity Publisher 2(逆天排版神器)中文直装版mac/win

iMac小白

Affinity Publisher 2下载 Affinity Publisher 2直装 Affinity Publisher 2激活

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

iMac小白

钢轨行业的数字化转型:全生命周期管理与智能化决策支持

天津汇柏科技有限公司

数字化转型

Beyond Compare 4 mac中文破解版 及安装教程 兼容M1/M2

Rose

用技术定义未来,洲际交易所ICE即将推出AI高频交易平台

科技热闻

什么时候需要用到 @EnableWebSecurity 注解?

江南一点雨

Java spring spring security

接口测试 Mock 工具使用 - 弱网测试

测试人

软件测试 弱网测试

DpEasy社区版1.4.0 | 体验全新的数据库特权账号管理平台!

BinTools图尔兹

数据库 应用 数据库安全

Affinity Photo for Mac(好用的图片编辑软件)v2.5.2免激活版

iMac小白

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

iMac小白

Native Instruments Creator Tools for mac(高 级采样器)v1.5.2.0版

Mac相关知识分享

Mac Mac软件 音频软件 采样器

Next-Level Agents:释放动态上下文(Dynamic Context)的巨大潜力

Baihai IDP

AI 白海科技 LLMs 企业号 6 月 PK 榜 AI Agent

TouchDesigner Pro 2023 mac破解版 及安装教程

Rose

Mac SVN客户端 SmartSVN for Mac许可证书及详细安装图文教程 支持M1/M2

Rose

心大陆多智能体还原人类情感,激发心理健康领域“新质生产力”!

心大陆多智能体

活动回顾丨AI 原生应用架构专场·北京站 PPT 下载

阿里巴巴云原生

阿里云 架构 云原生

Affinity Designer for Mac(强大的矢量图设计软件)v2.5.2中文免激活版

iMac小白

Affinity Designer mac Affinity Designer破解版 Affinity Designer激活版 Affinity Designer直装版

XnViewMP for Mac(图片浏览查看器)v1.7.2激活版

iMac小白

XnViewMP破解版 XnViewMP 下载 XnViewMP mac

SecureCRT for Mac破解版(SecureCRT许可证) 支持m1 SecureCRT Mac详细使用教程

理理

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