AI实践哪家强?来 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:252165

评论

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

AI-Compass宝藏资源库

汀丶人工智能

人工智能

WebGL数字孪生项目的技术方案

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

等保测评常见问题与应对策略

等保测评

AI赋能英语背单词App的技术方案

北京木奇移动技术有限公司

软件外包公司 AI英语学习 AI背单词

稳居全闪一体机市场TOP5 焱融存储推理方案广获市场认可

焱融科技

全闪存储 软件定义存储 大模型推理 焱融存储 IDC报告

WebGL开发数字孪生项目的流程

北京木奇移动技术有限公司

数字孪生 软件外包公司 webgl开发

黑龙江等保测评2025新政策

等保测评

百万奖金,2025 阿里云「AI安全」全球挑战赛等你来!

新消费日报

IT服务台经理的角色是什么?-ManageEngine卓豪

ServiceDesk_Plus

IT服务台

Amazon Q in QuickSight 实战:利用自然语言快速生成数据报表与洞察

亚马逊云科技 (Amazon Web Services)

CST的TLM算法仿真5G毫米波阵列天线及手机

思茂信息

cst电磁仿真 CST软件 CST Studio Suite

从零开始学 Dify:搭建你的第一个 LLM 应用平台

测试人

高德开放平台携手阿里云,面向开发者推出地图服务产品MCP Server

高德开放平台

阿里云 地图服务 MCP

透明LED显示屏:重塑建筑美学

Dylan

LED LED display 全彩LED显示屏 led显示屏厂家 LED屏幕

东荟城名店仓联乘韩国人气玩偶 BELLYGOM 打造「Dive into Summer」主题活动

编程猫

我把PS卸载了!只因这款国产免费AI,动动嘴就能把废片变大片。

田威AI

大数据-41 Redis 类型集合(2) bitmap geohash Z阶曲线 Base32

武子康

Java redis 大数据 缓存 分布式

DAPP开发的性能优化

北京木奇移动技术有限公司

dapp开发 区块链开发 软件外包公司

国泰海通证券、海通期货携手非凸科技,共探期现市场与AI交易深度融合

非凸科技

解决Linxu Obsidian 黑曜石笔记无法关联浏览器插件问题

虚实的星空

Obsidian 黑曜石笔记

iCourt“AI先锋计划”入所协助律所团队,提升法律领域AI技术竞争力

科技汇

NL2SQL 再创佳绩!阿里云论文中选 SIGMOD 2025

阿里云大数据AI技术

人工智能 深度学习 云计算 大数据 阿里云

火极一时的AI蛋白质解析,怎么样了?

脑极体

AI

DApp开发的技术难点

北京木奇移动技术有限公司

dapp开发 区块链开发 软件外包公司

刷爆朋友圈,AlphaGPT在法律ai圈子火了,案件仅需3分钟搞定

科技汇

挖掘数据价值,构建数据驱动型财务规划

智达方通

数字化转型 数据驱动 全面预算管理 财务规划 企业运营

MyEMS开源能源管理系统广泛应用

开源能源管理系统

开源 能源管理系统

烟草公司×中烟创新 | 同频共振,共赴数字征程

中烟创新

渣运公司心头好:“充电便宜跑得远,豪沃TX新能源自卸车巴适得板!”

科技热闻

【LazyLLM全面教程(图文版)】新系列来袭!今天学,明天别人追着喊你大佬!

商汤万象开发者

AI 多模态 agent LLM

开源赋能能源转型:MyEMS 落地 ISO 50007 的全链路指南

开源能源管理系统

开源 iso 50007 能源管理系统

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