AICon 上海站|日程100%上线,解锁Al未来! 了解详情
写点什么

测试:开发人员理想与现实的大 PK

  • 2008-11-11
  • 本文字数:1240 字

    阅读完需:约 4 分钟

PDC 大会上进行了关于“单元测试的未来”的小组讨论,大部分的谈话内容聚焦于 Mock 测试,人们对于 Mock 框架(Mock frameworks)的过度使用取得了普遍共识。

共识如下:通常,实现所有必要的接口非常无聊,而且消耗时间。为了更方便,人们选择了 Mock 框架。但这遮盖了更本质的问题:API 被设计得过于复杂。

关于“开发人员测试”与其他人员的测试之间的区别,有一个热门的话题。一直以来的讨论中,人们都认为开发人员只需要做单元测试,而需求测试、验收测试、集成测试,以及所有其他形式的测试都是其他人的工作。

这里强调了在单元测试社区中存在的一个普遍误解。具体来说,就是假设所有开发人员都配备了 QA 团队,以处理所有其他类型的测试。不幸的是,即使是拥有数百万资金的公司也往往根本没有 QA 资源,所有的测试都留给了开发人员和最终用户。

开发人员无法进行更多类型测试的主要原因是速度。 单元测试已经太慢了,因此没有更多时间去进行那些更慢的测试了,比如包括网络通信的测试。 遗憾的是,并没有人考虑其他变通之策。

举个例子,单元测试框架其实可以更加智能,它们可以使用代码覆盖率的结果,只对发生变化的代码进行二次测试。一个类的变化,不应该触发重新运行所有的测试集合。所谓“单元测试”意味着你只需测试一个小的子集即可。

另外一种没有被提及的改进是利用分布式编程。代码和测试可以被快速上传到各个服务器并且得到执行。通过引入持续集成,我们已经拥有了所有需要的技术。

早些的讨论普遍觉得数据库方面被忽视了,大部分的数据库开发人员很少或几乎没有单元测试的概念,也缺乏相关支持工具。更可怕的是,他们甚至都没有被邀请来参加讨论。遗憾的是这就是目前的现状。讨论中也没有提供方法改善这些现实问题。

从好的方面看,已经有一些人在讨论使用建模工具来让单元测试更加简单。他们提供了很多可选的办法,例如从定义契约级别开始。这些契约可以被代码生成器用来编写实际的测试代码。显然,这并非一个 100% 完美的解决方案,但它能够减少经常遇到的困难。

另一个被看好的办法是采用 delta 状态管理。设想测试“取钱”这个功能,很多人会假设被测试帐户最开始有 100 美元,经过交易后,剩下 80 美元。这个方法就是首先查询一下账号余额,然后再看是否减少了 20 美元。这样一来,就不必在每次运行测试时都重新设置测试环境了。

查看英文原文: Testing: What Developers Are Expected To Do Versus What They Actually Do


译者简介:王速瑜,毕业于华中科技大学,就职于腾讯科技(深圳)有限公司,担任R&D 研发总监,现负责腾讯敏捷产品开发技术的实践和推广及研发基础平台的管理工作。熟悉Java、Microsoft.net、Lamp 等技术。对互联网大规模应用技术、高性能网格技术,SOA 等有非常浓厚的兴趣和深入的实践,喜欢Open Source,关注Ruby、Erlang 的发展并积极实践,愿意为技术而挥洒激情,为让更多人了解精彩技术而付出努力!志愿参与InfoQ 中文站内容建设,请邮件至 editors@cn.infoq.com 。也欢迎大家到 InfoQ 中文站用户讨论组参与我们的线上讨论。

2008-11-11 22:20861

评论

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

大模型基础学习

天天向上

《Programming Abstractions In C》阅读笔记p69-p71

codists

机器学习之PyTorch和Scikit-Learn第3章 使用Scikit-Learn的机器学习分类器之旅Part 2

Alan

人工智能 机器学习 PyTorch scikit-learn

【Java技术专题】「攻破技术盲区」带你攻破你很可能存在的Java技术盲点之动态性技术原理指南(方法句柄—基础篇)

码界西柚

Java 技术分析

C语言如何实现DES加密与解密

芯动大师

生成式 AI 的发展 | 社区征文

BROKEN

年中技术盘点

Mediabox:年度最佳音视频开发工具

阿里云CloudImagine

云计算 阿里云 音视频 视频云

复杂商业变局下,半导体企业如何进行研发数字化转型|标杆案例

万事ONES

大语言模型的预训练[2]:GPT、GPT2、GPT3、GPT3.5、GPT4相关理论知识和模型实现、模型应用以及各个版本之间的区别详解 |社区征文

汀丶人工智能

人工智能 自然语言处理 GPT GPT-4 年中技术盘点

笔记软件哪个好用?36款好用的笔记软件合集推荐!

彭宏豪95

效率工具 markdown 在线工具 Mac笔记软件 笔记应用

代码随想录 Day21 - 二叉树(七)

jjn0703

如何处理需求池?管理需求池的内容

Bonaparte

产品 产品设计 产品思维 产品需求

数字化转型与架构-规划篇|承上启下的能力热力图

数字随行

数字化转型

如何拓展自己边界

FunTester

大语言模型的预训练[3]之Prompt Learning:Prompt Engineering | 社区征文

汀丶人工智能

人工智能 自然语言处理 prompt learning 年中技术盘点 prompt 工程

分布式系统中的数据复制

越长大越悲伤

分布式 数据复制

人工智能革命|是疯狂炒作还是大势所趋?

SEAL安全

B2C #人工智能 ChatGPT 企业号 7 月 PK 榜 趋势解读

AI大模型应用开发实战营——作业1

zhihai.tu

大模型

云拨测全面升级丨单次拨测低至 0.001 元

阿里巴巴云原生

阿里云 云原生 可观测

【活动】30 秒上云体验,一键体验 RocketMQ 六大生产环境

阿里巴巴云原生

阿里云 云原生 Apache RocketMQ

Java 踩坑 2|Feign Client 访问到 Consul 脏节点/故障节点

itschenxiang

Java Consul springboot

B站&华为云 | 融合虚实宇宙,开启云上视听的黄金时代

白洞计划

AI B站

从零开始实现Go搜索引擎(一)

geange

搜索引擎 lucene #数据库 FST #go

演讲实录:以 AI 变革组织运营与管理

Kyligence

数据分析 数智化 企业级OLAP

shardingsphere配置读写分离集群(1主2从结构)

zhengzai7

读写分离 ShadingSphere

2023-07-18:给你一个正整数数组 nums,请你移除 最短 子数组(可以为 空), 使得剩余元素的 和 能被 p 整除。 不允许 将整个数组都移除。 请你返回你需要移除的最短子数组的长度,如果

福大大架构师每日一题

福大大架构师每日一题

时序数据库 TDengine 与金山云两大产品完成兼容互认证

爱倒腾的程序员

数据库

测试:开发人员理想与现实的大PK_研发效能_Jonathan Allen_InfoQ精选文章