生成式AI领域的最新成果都在这里!抢 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:251795

评论

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

软件测试/测试开发丨ChatGPT在测试计划中的应用策略

测试人

人工智能 软件测试 测试开发 ChatGPT

菜单栏图标管理 Bartender 5 for mac最新

mac大玩家j

Mac软件 菜单栏软件 菜单栏管理软件

企业微信 API 接口调用教程:从入门到精通

Liam

后端 后端开发 API 开放 API 企业微信开发

脱颖而出!云起无垠荣获第二届“陇剑杯”优胜奖

云起无垠

一篇聊聊Mybatis插件开发

互联网工科生

sql 数据 mybatis

网络爬虫使用什么特点的http代理?

巨量HTTP

http代理

苹果Mac电脑3D家居设计 Live Home 3D Pro 激活中文版

胖墩儿不胖y

3D Mac软件 家居设计软件 三维家居设计

直销系统开发|直销系统开发详解

V\TG【ch3nguang】

CRM系统开发要多少钱_CRM管理系统开发报价

V\TG【ch3nguang】

2023 届的字节跳动技术新人,个个都是宝藏同学

字节跳动技术范儿

字节跳动 offer 校招

文档信息抽取技术:从非结构化文本到结构化信息的旅程

合合技术团队

人工智能 技术 文档 文档抽取

哪款国产堡垒机好用便宜实惠?大家推荐一下!

行云管家

网络安全 数据安全 堡垒机 国产

广东汕头等保测评机构有哪些?位于哪里?

行云管家

等保 等级保护 等保测评 汕头

基于Java+vue开发的企事业移动培训考试平台

金陵老街

java 架构

Office下载 办公软件Office 2019 mac永久激活版

mac

办公软件 苹果mac Windows软件 office 2019

聊聊wireshark的进阶使用功能 | 京东云技术团队

京东科技开发者

网络协议 Wireshark 抓包 企业号9月PK榜

鲸鸿动能加入气候行动,与野生救援(WildAid)探索公益新玩法

最新动态

以创新抵御经济环境压力:自动化测试ReadyAPI帮助企业平衡软件质量与成本控制

龙智—DevSecOps解决方案

自动化测试

软件测试/测试开发丨利用人工智能ChatGPT自动生成架构图

测试人

人工智能 软件测试 ChatGPT

干货丨中国移动5G数字工厂引领工业数字化未来(附PPT)

工赋开发者社区

Mac苹果电脑无线鼠标连不上怎么办

柠檬与橘子

Go语言高级特性解析与实践

这我可不懂

Go 语言 并发模型

数字货币交易平台,专业数字货币交易系统开发

V\TG【ch3nguang】

【效率提升】maven 转 gradle 实战 | 京东云技术团队

京东科技开发者

maven 编译 Gradle 打包工具 企业号9月PK榜

深度学习之“切图”

矩视智能

深度学习

基于Kubernetes的Serverless PaaS稳定性建设万字总结

Serverless Devs

云计算 Serverless 运维 托管

从 Hackathon 战队到创业公司,和开发者们聊聊真实世界 AI Apps 的基础设施丨活动预告

PingCAP

数据库 开发 hackathon TiDB pingCAP

什么是LED贴膜屏?

Dylan

技术 广告 3D LED显示屏

如何正确地计算经过时间(elapsed time)

redcoder54

Java 时钟同步

PPT | 智能工厂生产制造执行系统(MES)建设方案

工赋开发者社区

Golang 的 GMP:并发编程的艺术

树上有只程序猿

golang GMP

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