2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

好的测试应该具备哪些特质?

  • 2008-10-04
  • 本文字数:785 字

    阅读完需:约 3 分钟

什么样的测试算是好测试?我们又该怎么知道如何编写好测试?

Kent Beck 断定,好的测试应该具备下列条件:

  1. 互相隔离的(不受其他测试的表现形式、是否存在、执行结果的影响)
  2. 自动化的
  3. 编写快
  4. 运行快
  5. 独一无二(为开发人员提供自信,而不会由其他测试提供信息,与其他测试不相关)

Roy Osherove 补充道:好的测试有三个基本属性:可维护、值得信赖、易于理解。

Mike Hill 的列表要更长:

  • 它会很短,通常只有十来行代码。
  • 它不会测试运行程序内部的对象,但是会测试为了测试目的而构建的应用内部的对象。
  • 它只会调用很小的一部分代码,通常是某个函数的某一分支。
  • 它是灰盒的形式编写的。也就是说,它运作的方式像是黑盒,但是有时又会利用白盒的长处。(一般来说,这是避免组合问题的重要因素。)
  • 测试要符合生产代码的编码标准,比如,团队目前对于优秀编码的最佳看法。
  • 应用的众多小测试构成了一个“提交关卡”。这就是说,开发人员可以在所有小测试通过的情况下提交代码,否则(强烈建议、甚至不惜手段)阻止他们提交。
  • 测试应对接受测试的对象有完全的控制权,因此应是自包含的。也就是说,它不会依赖不属于测试代码及其依赖图的任何其他对象。
  • 它的运行时间非常短。
  • 它会先于要测试的代码变更之前编写。
  • 通过一系列 slip-and-fake 技巧,它会避免使用所有“糟糕”的 collaborator。
  • ……

Mike 和 Ron Jeffries 提醒我们:TDD 的核心价值是要简化设计、提升开发效率;代码质量的提升和 bug 数量的减少是因此而带来的重要好处。

Jeremy Miller 补充了良好单元测试应该具备:

  • 与顺序无关,并且是隔离的。运行测试的软件可以按照以任何顺序运行。
  • 意图明确。最好的单元测试应该能够告诉阅读者,一个对象的 API 是如何准备被调用的。
  • 易于设置。

最后, Ed Burnette 写到:要让你的单元测试在任何方面都可以重复;测试边界条件,并且要一直保持测试的通过率是 100%。

查看英文原文: What are the Qualities of a Good Test?

2008-10-04 06:301696
用户头像

发布了 479 篇内容, 共 180.4 次阅读, 收获喜欢 53 次。

关注

评论

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

尚硅谷Spring6发布视频教程

小谷哥

一种前端无源码定制化开发能力专利解读

元年技术洞察

低代码 数字化转型 无源码 元年方舟

架构训练营模块五作业

现在不学习马上变垃圾

架构训练营10期

2023最新版本水果FL Studio宿主软件安装包下载

茶色酒

FL Studio21

移动开发平台真的能提升App开发效率吗?

Onegun

移动应用开发 移动端开发

混合式APP开发框架

力软低代码开发平台

太狠了,Spring全家桶笔记,一站式通关全攻略,已入职某厂涨薪18K

程序知音

Java spring ssm java架构 后端技术

C4D和3dmax有什么区别?

Finovy Cloud

3DMAX C4D

阿里、腾讯、蚂蚁金服Java技术面试及经验总结(文末分享答案)

程序知音

Java java面试 后端技术 春招 八股文

网易游戏实时 HTAP 计费风控平台建设

Apache Flink

大数据 flink 实时计算

年度技术盘点:水稻、韦伯、脑机接口、AI预测及创作、快速充电

B Impact

chatgpt小试牛刀

阿呆

ChatGPT

架构实战 5 -微博评论高性能高可用计算架构

架构实战营 「架构实战营」

CleanMyMac X2023完整版本MAC电脑系统清理工具

茶色酒

CleanMyMac

软件测试/测试开发 | app自动化测试(Android)--App 控件定位

测试人

软件测试 自动化测试 测试开发 appium

各大互联网公司面经分享:Java全栈知识+1500道大厂面试真题

程序知音

Java java面试 java架构 大厂面试题 八股文

模块五计算架构模式

程序员小张

「架构实战营」

推荐几款实用的移动开发平台

FinFish

移动开发 开发平台 移动开发平台 移动端开发 小程序技术

软件测试/测试开发 | app自动化测试(Android)--高级定位技巧

测试人

软件测试 自动化测试 测试开发 appium

从零到一,臻于至善|网易邮箱基于StarRocks 开发大数据平台的实践

StarRocks

数据库

在人间vpn搭建

阿呆

vpn

自动驾驶汽车芯片的发展和分析

不脱发的程序猿

嵌入式 汽车电子 自动驾驶汽车芯片

国家先进计算产业创新(宜昌)中心来了!

SENSORO

人工智能 大数据

瑞萨RH850 FCL、FDL和EEL库的配置和使用

不脱发的程序猿

嵌入式 汽车电子 RH850 ​瑞萨

2022年总结及2023年规划:新起点和新希望

不脱发的程序猿

程序人生 年度总结

运维百家讲坛第 1 期:井源 - 运维几何

巴辉特

Github霸榜!竟是阿里技术官的微服务分布式项目实战笔记总结

程序知音

Java 分布式 微服务 java架构 后端技术

如何集中式管理多个客户端节点传输任务-镭速

镭速

2022年12月视频行业用户洞察:世界杯后半程看球热度不减,优质IP创新与开发助力用户留存

易观分析

音视频 视频

MixMIM 创建混合图像,提出新型掩码方案

Zilliz

计算机视觉

好的测试应该具备哪些特质?_研发效能_Mark Levison_InfoQ精选文章